ETH Price: $3,350.46 (-3.11%)

Contract

0x4B4Fa17F83c09873cb5b4e0023f25d4f533Fc9Ba
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve192653762024-02-20 0:35:23311 days ago1708389323IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.0012187626.18582379
Transfer191801602024-02-08 1:24:47323 days ago1707355487IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.0023987932.22238617
Transfer191801522024-02-08 1:23:11323 days ago1707355391IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.0037792541.27759283
Transfer175671852023-06-27 0:34:59549 days ago1687826099IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.0015066616.46252128
Transfer163061742022-12-31 17:15:47726 days ago1672506947IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.001039214
Approve161073392022-12-03 22:42:23754 days ago1670107343IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.0005447911.69014106
Transfer160708712022-11-28 20:27:35759 days ago1669667255IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.0011729615.80459158
Transfer158395382022-10-27 12:52:35791 days ago1666875155IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.0021846823.87399411
Transfer157510122022-10-15 4:05:35803 days ago1665806735IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.0010632614.32869881
Approve154271012022-08-28 9:49:04851 days ago1661680144IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.000249665.35733183
Approve154270932022-08-28 9:47:17851 days ago1661680037IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.000222444.77325278
Approve152548992022-08-01 6:05:38878 days ago1659333938IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.000233015
Transfer152450152022-07-30 16:57:47880 days ago1659200267IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.000796610.999618
Transfer152439022022-07-30 12:52:41880 days ago1659185561IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.000502625.50493855
Approve152076902022-07-24 21:20:22886 days ago1658697622IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.0005965612.80434546
Approve151465572022-07-15 9:53:31895 days ago1657878811IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.0006562814.08610868
Approve150591602022-07-01 22:10:53909 days ago1656713453IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.0010429722.38005618
Approve150572172022-07-01 14:49:53909 days ago1656686993IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.0009583420.56412263
Transfer148689842022-05-29 22:14:21942 days ago1653862461IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.0031188327.50079224
Renounce Ownersh...146939532022-05-01 20:02:19970 days ago1651435339IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.0011426340.64012707
Bot List Address146938242022-05-01 19:29:29970 days ago1651433369IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.0020702940.44335649
Open Trading146937612022-05-01 19:18:25970 days ago1651432705IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.0016323346.6327012
Bot List Address146937612022-05-01 19:18:25970 days ago1651432705IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.0024043446.9580472
Bot List Address146936892022-05-01 19:01:31970 days ago1651431691IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.0021516242.02231098
Bot List Address146936762022-05-01 18:58:52970 days ago1651431532IN
0x4B4Fa17F...f533Fc9Ba
0 ETH0.0023053445.03497471
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BasedGold

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-21
*/

/**
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
°°°           ---------->> Based Gold - BGLD (v2) <<----------          °°°                        
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
-->> BGLD contract address (v2): 0x4b4fa17f83c09873cb5b4e0023f25d4f533fc9ba
***************************************************************************
---------------->>  Telegram:https://t.me/BGLDofficial  <<----------------
---------------->>  Website: https://www.BGLD.it  <<-----------------------
---------------->>  Twitter: https://twitter.com/Basedgoldbgld  <<---------
***************************************************************************
***************************************************************************
Links to Based Gold (v2):
https://etherscan.io/address/0x4b4fa17f83c09873cb5b4e0023f25d4f533fc9ba
https://www.dextools.io/app/ether/pair-explorer/0x4233b83f3D5Bc39770fb7a456EF85B7eEC26fe14        

                                                                              
██████╗  █████╗ ███████╗███████╗██████╗      ██████╗  ██████╗ ██╗     ██████╗ 
██╔══██╗██╔══██╗██╔════╝██╔════╝██╔══██╗    ██╔════╝ ██╔═══██╗██║     ██╔══██╗
██████╔╝███████║███████╗█████╗  ██║  ██║    ██║  ███╗██║   ██║██║     ██║  ██║
██╔══██╗██╔══██║╚════██║██╔══╝  ██║  ██║    ██║   ██║██║   ██║██║     ██║  ██║
██████╔╝██║  ██║███████║███████╗██████╔╝    ╚██████╔╝╚██████╔╝███████╗██████╔╝
╚═════╝ ╚═╝  ╚═╝╚══════╝╚══════╝╚═════╝      ╚═════╝  ╚═════╝ ╚══════╝╚═════╝ 
                                                                              
██████╗  ██████╗ ██╗     ██████╗                                              
██╔══██╗██╔════╝ ██║     ██╔══██╗                                             
██████╔╝██║  ███╗██║     ██║  ██║                                             
██╔══██╗██║   ██║██║     ██║  ██║                                             
██████╔╝╚██████╔╝███████╗██████╔╝                                             
╚═════╝  ╚═════╝ ╚══════╝╚═════╝                                                                                                                                                 

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.10;        

interface IERC20 {
    function transfer(address _to, uint256 _amount) external returns (bool);
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    }

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

contract BasedGold {           
    IUniswapV2Router02 private _uniswapV2Router; 
    string  private _name = 'Based Gold';
    string  private _symbol = 'BGLD';

    // Max total supply 88 800 000 BGLD tokens
    uint256 private _totalSupply = 88800000000000000000000000;  
    uint8   private _decimals = 18;  
    address private _owner;
      
    address public uniswapPair;
    address public marketingWallet;
    address public devWallet;  

    // Initial minimum liquidation threshold 100000.42006904200690420069 BGLD tokens
    // Initial maximum liquidation threshold 200000.42006904200690420069 BGLD tokens
    uint256 public minLiquidationThreshold = 100000420690420690420069;                                                        
    uint256 public maxLiquidationThreshold = 200000420690420690420069; 
    
    // To keep track of BGLD tokens accumulated in the contract (from fees)
    uint256 public accMarketingFee = 1;                                                                             
    uint256 public accDevFee = 1; 

    // Fees are multiplied by 100 for accuracy --> 200 = 2.00%
    uint256 public buyMarketingFee = 200;    
    uint256 public buyDevFee = 100;
    uint256 public totalBuyFees = 300;                                          
    
    uint256 public sellMarketingFee = 300;
    uint256 public sellDevFee = 200;
    uint256 public totalSellFees = 500;
    
    uint256 private botMarketingFee = 4925;                          
    uint256 private botDevFee = 4925;
    uint256 private totalBotFees = 9850;
    uint256 private lastBotBlock;

    bool public tradingIsOpen;
    bool public distributeTokens = true;

    mapping(address => bool) public automatedMarketMakerPairs;
    mapping (address => uint256) private _balances;
    mapping (address => mapping(address => uint256)) private _allowances;
    mapping (address => uint256) private lastBuyBlock;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private canTransferBeforeTradingIsOpen;
    mapping (address => bool) public _isBotListed;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event Transfer(address indexed from, address indexed to, uint256 value);                                   
    event Approve(address indexed owner, address indexed spender, uint256 value);
    event TradingIsOpen(bool status);                                      
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    modifier onlyOwner() {
        require(_owner == msg.sender, "BGLD: caller is not the owner");
        _;
    }
    
    modifier onlyOwnerOrDev() {
        require(devWallet == msg.sender || _owner == msg.sender, "BGLD: caller is not the owner or the dev");
        _;
    }

    modifier onlyDevOrMarketing() {
        require(marketingWallet == msg.sender || devWallet == msg.sender, "BGLD: caller is not the marketing or the dev wallet");
        _;
    }

    constructor() {                                                                                                               
        _owner = msg.sender;
        emit OwnershipTransferred(address(0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B), msg.sender);                                                                

        canTransferBeforeTradingIsOpen[_owner] = true;

        _balances[_owner] = _totalSupply;                             
        emit Transfer(address(0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B), _owner, _totalSupply);
 
        _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        automatedMarketMakerPairs[uniswapPair] = true;   

        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[_owner] = true;  
        _isExcludedFromFees[address(_uniswapV2Router)] = true;                                        
    }

    receive() external payable {
    }

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

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

    function decimals() public view virtual returns (uint8) {
        return _decimals;
    }
    
    function burnedSupply() public view virtual returns (uint256) {
        return balanceOf(address(0xdEaD)) + balanceOf(address(0));
    }

    function dilutedSupply() public view virtual returns (uint256) {
        return _totalSupply - balanceOf(address(0xdEaD)); 
    }
    
    function totalSupply() public view virtual returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function transfer(address recipient, uint256 amount) public virtual returns (bool) {                                   
        _transfer(msg.sender, recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) public virtual returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "BGLD: transfer amount exceeds allowance");

        _transfer(sender, recipient, amount);
    unchecked { _approve(sender, msg.sender, currentAllowance - amount); }
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "BGLD: decreased allowance below zero");

    unchecked { _approve(msg.sender, spender, currentAllowance - subtractedValue); }
        return true;
    }

    function _approve(
        address holder,
        address spender,
        uint256 amount
    ) internal virtual {
        require(holder != address(0), "BGLD: approve from the zero address");
        require(spender != address(0), "BGLD: approve to the zero address");

        _allowances[holder][spender] = amount;
        emit Approve(holder, spender, amount);                                                                     
    }

    // Boolean createPair defines whether or not to create a new uniswapPair on the new router
    function updateUniswapRouter(address newAddress, bool createPair) external onlyOwnerOrDev {                               
        _uniswapV2Router = IUniswapV2Router02(newAddress);

        if (createPair) {
            uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
            automatedMarketMakerPairs[uniswapPair] = true;
        }                     
    }
    
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwnerOrDev {
        if (pair != uniswapPair) {
            automatedMarketMakerPairs[pair] = value;
            emit SetAutomatedMarketMakerPair(pair, value);
        }
    }

    function updateUniswapPairAddress(address newUniswapPairAddress) external onlyOwnerOrDev {                                         
        uniswapPair = newUniswapPairAddress;
    }
    
    function SetAccumulatedContractFees(uint256 newAccMarketing, uint256 newAccDev) external onlyOwnerOrDev {                          
        accMarketingFee = newAccMarketing;                                                                             
        accDevFee = newAccDev;
    }

    // If uniswapPair [AMM] address(es) is(are) excludedFromFees 
    // --> 0% fees on buys & sells + NO SwapToDistributeETH (contract sells nor distributes tokens)
    function ExcludeFromFees(address account, bool excludeOrInclude_TrueOrFalse) external onlyOwnerOrDev {                                 
        _isExcludedFromFees[account] = excludeOrInclude_TrueOrFalse;
    }

    function ExcludeMultipleAccountsFromFees(address[] calldata accounts, bool excludeOrInclude_TrueOrFalse) external onlyOwnerOrDev {                                   
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFees[accounts[i]] = excludeOrInclude_TrueOrFalse;
        }
    }

    function SetLiquidationThresholds(uint256 newMinimumThreshold, uint256 newMaximumThreshold) external onlyDevOrMarketing {     
        minLiquidationThreshold = newMinimumThreshold;
        maxLiquidationThreshold = newMaximumThreshold;
    }

    // Configures whether the contract sends tokens to marketing & dev directly (true)
    // OR whether the contract swaps them for ETH before sending (false)
    function SetDistributeTokens(bool trueOrFalse) external onlyDevOrMarketing {     
        distributeTokens = trueOrFalse;
    }

    // Total buy fees and total sell fees MUST each be <15.00% (this way trading can never be blocked)
    function SetFees(uint256 newBuyMarketingFee, uint256 newBuyDevFee, uint256 newSellMarketingFee, uint256 newSellDevFee) external onlyOwnerOrDev {
        totalBuyFees = newBuyMarketingFee + newBuyDevFee;
        totalSellFees = newSellMarketingFee + newSellDevFee;

        if (totalBuyFees < 1501 && totalSellFees < 1501) {
            buyMarketingFee = newBuyMarketingFee;
            buyDevFee = newBuyDevFee;
            sellMarketingFee = newSellMarketingFee;
            sellDevFee = newSellDevFee;
        }
    }

    function SetBotfees(uint256 newBotMarketingFee, uint256 newBotDevFee) external onlyOwnerOrDev {
        totalBotFees = newBotMarketingFee + newBotDevFee;

        if (totalBotFees < 9999) {
            botMarketingFee = newBotMarketingFee;
            botDevFee = newBotDevFee;
        }
    }

    // Add to or remove an address from BotList
    function BotListAddress(address account, bool trueOrFalse) external onlyDevOrMarketing {                        
        if (trueOrFalse) {

            if (account != address(this) && account != marketingWallet 
            && account != devWallet && !(automatedMarketMakerPairs[account])) {
                _isBotListed[account] = trueOrFalse;                                         
            }
        } else {
            _isBotListed[account] = trueOrFalse;
        }
    }

    // Safety feature to prevent scammers from stealing funds from marketing deals
    // Requires a manual call to remove from BotlistAddress(...) before recipient can sell or transfer to EOA
    function MarketingTransfer(address to, uint256 amount) external onlyDevOrMarketing {
        _transfer(msg.sender, to, amount);

        if (to != address(this) && to != marketingWallet && to != devWallet && !(automatedMarketMakerPairs[to])) {
            _isBotListed[to] = true;                                         
        }
    }

    function SetWallets(address payable newMarketingWallet, address payable newDevWallet) external onlyOwnerOrDev {   
        if (newDevWallet != address(0)) {                
            marketingWallet = newMarketingWallet;
            devWallet = newDevWallet;
            _isExcludedFromFees[newMarketingWallet] = true;
            _isExcludedFromFees[newDevWallet] = true;
        }
    }

    function SetCanTransferBeforeTradingIsOpen(address account, bool trueOrFalse) external onlyOwnerOrDev {          
        canTransferBeforeTradingIsOpen[account] = trueOrFalse;
    }

    // --- NO DEV ACCES ---
    // If contract ownership renounced
    // --> trading can NEVER be disabled again this way
    function OpenTrading(bool status, uint256 blocks) external onlyOwner {    
        if (status) {
        unchecked {
            uint256 launchblock = block.number; 
            uint256 blockUntil = 1 + launchblock; 
            lastBotBlock = blocks + blockUntil; 
            }   
        }
        tradingIsOpen = status;

        emit TradingIsOpen(status);
    }

    function _transfer(                           
        address from,       
        address to,
        uint256 amount
    ) internal {
        if(!tradingIsOpen) { 
            require(canTransferBeforeTradingIsOpen[from], "BGLD: You are too early! Trading has not been enabled yet"); 
        }

        uint256 senderBalance = _balances[from];
        require(senderBalance >= amount, "BGLD: transfer amount exceeds balance");
    unchecked { _balances[from] = senderBalance - amount; }

        if(_isBotListed[from]) { 
            
            if (!(block.number <= lastBotBlock)) {      

                if (to != address(this) && to != marketingWallet && to != devWallet) {
                    uint256 marketingTokens = amount * botMarketingFee / 10000;
                    uint256 devTokens = amount * botDevFee / 10000;
                    amount = ProcessFees(from, amount, marketingTokens, devTokens);

                    if (balanceOf(address(this)) > minLiquidationThreshold) {   
                        SwapToDistributeETH();
                    }
                    _balances[to] += amount;
                    emit Transfer(from, to, amount);
                    return;
                }
            }                       
        }

        if(block.number <= lastBotBlock) {            

            if (to != address(this) && to != marketingWallet && to != devWallet && !(automatedMarketMakerPairs[to])) {
                _isBotListed[to] = true;                                         
            }
        }                                    

        bool takeFee = (_isExcludedFromFees[from] || _isExcludedFromFees[to]) ? false : true;

        if(takeFee) { 

            if (automatedMarketMakerPairs[from]) { // Buy transactions   
                lastBuyBlock[to] = block.number;    
         
                if (totalBuyFees > 0) {

            unchecked {
                uint256 marketingTokens = amount * buyMarketingFee / 10000;
                uint256 devTokens = amount * buyDevFee / 10000;
                amount = ProcessFees(from, amount, marketingTokens, devTokens); }
                }

            } else { // Sells & transfer transactions

                if (lastBuyBlock[from] == block.number) {

                    if (from != address(this) && from != marketingWallet && from != devWallet && !(automatedMarketMakerPairs[from])) {
                        _isBotListed[from] = true;

                        if (to != address(this) && to != marketingWallet && to != devWallet) {
                            uint256 marketingTokens = amount * botMarketingFee / 10000;
                            uint256 devTokens = amount * botDevFee / 10000;
                            amount = ProcessFees(from, amount, marketingTokens, devTokens);

                            if (balanceOf(address(this)) > minLiquidationThreshold) {   
                                SwapToDistributeETH();
                            }
                            _balances[to] += amount;
                            emit Transfer(from, to, amount);
                            return;
                        }
                    }
                }
                if (totalSellFees > 0) {
            unchecked { 
                uint256 marketingTokens = amount * sellMarketingFee / 10000;                   
                uint256 devTokens = amount * sellDevFee / 10000;
                amount = ProcessFees(from, amount, marketingTokens, devTokens); }                
                }

                if (balanceOf(address(this)) > minLiquidationThreshold) {   
                    SwapToDistributeETH();
                }
            }        
        }

        _balances[to] += amount;
        emit Transfer(from, to, amount);
    }

    function ProcessFees(address from, uint256 amount, uint256 marketingTokens, uint256 devTokens) private returns(uint256) {
        unchecked { 
            if (distributeTokens) {
                amount = amount - marketingTokens - devTokens;
                _balances[marketingWallet] += marketingTokens;         

                emit Transfer(from, marketingWallet, marketingTokens);
                _balances[devWallet] += devTokens;

                emit Transfer(from, devWallet, devTokens);

            } else {
                accMarketingFee += marketingTokens;                            
                accDevFee += devTokens;
                uint256 fees = marketingTokens + devTokens;
                amount -= fees;

                _balances[address(this)] += fees;

                emit Transfer(from, address(this), fees);
            }

            return amount;
        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {       
        // Generate the uniswap pair path of BGLD -> WETH
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapV2Router.WETH();

        _approve(address(this), address(_uniswapV2Router), tokenAmount);

        _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(       
            tokenAmount,
            0, // Accept any amount of ETH
            path,
            address(this),                                                          
            block.timestamp
        );
    }                                  

    function SwapToDistributeETH() private { 
    unchecked {                                         
        uint256 accTokensToSwap = accMarketingFee + accDevFee;    
        uint256 tokensToSwap = balanceOf(address(this));                     

        if (tokensToSwap > maxLiquidationThreshold) {       
            tokensToSwap = maxLiquidationThreshold;
            swapTokensForETH(tokensToSwap); 

            uint256 ethBalance = address(this).balance;                                             
            uint256 ethToMarketing = ethBalance * accMarketingFee / accTokensToSwap;                  
            
            (bool success, ) = payable(address(marketingWallet)).call{value: ethToMarketing}("");

            if(success) {                                                                
                accMarketingFee = accMarketingFee - (tokensToSwap * accMarketingFee / accTokensToSwap);                                                         
            }

            uint256 ethToDev = address(this).balance;
            (success, ) = payable(address(devWallet)).call{value: ethToDev}("");

            if(success) {
                accDevFee = accDevFee - (tokensToSwap * accDevFee / accTokensToSwap);
            }

        } else {
            swapTokensForETH(tokensToSwap); 

            uint256 ethBalance = address(this).balance;                                             
            uint256 ethToMarketing = ethBalance * accMarketingFee / accTokensToSwap;                  

            (bool success, ) = payable(address(marketingWallet)).call{value: ethToMarketing}("");

            if(success) {                                                                
                accMarketingFee = 1;                                                          
            }

            uint256 ethToDev = address(this).balance;
            (success, ) = payable(address(devWallet)).call{value: ethToDev}("");

            if(success) {
                accDevFee = 1;
            }
        } }
    }
   
    // Withdraw ETH that's potentially stuck in the BGLD contract
    function recoverETHfromContract() external onlyOwnerOrDev {
        payable(devWallet).transfer(address(this).balance);
    }

    // Withdraw ERC20 tokens that are potentially stuck in the BGLD contract                            
    function recoverTokensFromContract(address _tokenAddress, uint256 _amount) external onlyOwnerOrDev {                           
        // Update the contract's accumulated token balances accordingly
        if (_tokenAddress == address(this)) {
            
            if (balanceOf(address(this)) == _amount) { 
                accMarketingFee = 1;
                accDevFee = 1;
            } else { 
                accMarketingFee = accMarketingFee - (_amount * accMarketingFee / (accMarketingFee + accDevFee));
                accDevFee = accDevFee - (_amount * accDevFee / (accMarketingFee + accDevFee));          
            }
        }
        IERC20(_tokenAddress).transfer(devWallet, _amount);
    }
}

/*
																			  
 ███████████                                 █████      █████████           ████      █████
░░███░░░░░███                               ░░███      ███░░░░░███         ░░███     ░░███ 
 ░███    ░███  ██████    █████   ██████   ███████     ███     ░░░   ██████  ░███   ███████ 
 ░██████████  ░░░░░███  ███░░   ███░░███ ███░░███    ░███          ███░░███ ░███  ███░░███ 
 ░███░░░░░███  ███████ ░░█████ ░███████ ░███ ░███    ░███    █████░███ ░███ ░███ ░███ ░███ 
 ░███    ░███ ███░░███  ░░░░███░███░░░  ░███ ░███    ░░███  ░░███ ░███ ░███ ░███ ░███ ░███ 
 ███████████ ░░████████ ██████ ░░██████ ░░████████    ░░█████████ ░░██████  █████░░████████
░░░░░░░░░░░   ░░░░░░░░ ░░░░░░   ░░░░░░   ░░░░░░░░      ░░░░░░░░░   ░░░░░░  ░░░░░  ░░░░░░░░ 
                                                                                           
                                                                                           
                                                                                           
 ███████████    █████████  █████       ██████████                                          
░░███░░░░░███  ███░░░░░███░░███       ░░███░░░░███                                         
 ░███    ░███ ███     ░░░  ░███        ░███   ░░███                                        
 ░██████████ ░███          ░███        ░███    ░███                                        
 ░███░░░░░███░███    █████ ░███        ░███    ░███                                        
 ░███    ░███░░███  ░░███  ░███      █ ░███    ███                                         
 ███████████  ░░█████████  ███████████ ██████████                                          
░░░░░░░░░░░    ░░░░░░░░░  ░░░░░░░░░░░ ░░░░░░░░░░ 

*/

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approve","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"TradingIsOpen","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":"account","type":"address"},{"internalType":"bool","name":"trueOrFalse","type":"bool"}],"name":"BotListAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excludeOrInclude_TrueOrFalse","type":"bool"}],"name":"ExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excludeOrInclude_TrueOrFalse","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MarketingTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"},{"internalType":"uint256","name":"blocks","type":"uint256"}],"name":"OpenTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAccMarketing","type":"uint256"},{"internalType":"uint256","name":"newAccDev","type":"uint256"}],"name":"SetAccumulatedContractFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBotMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newBotDevFee","type":"uint256"}],"name":"SetBotfees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"trueOrFalse","type":"bool"}],"name":"SetCanTransferBeforeTradingIsOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"trueOrFalse","type":"bool"}],"name":"SetDistributeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newBuyDevFee","type":"uint256"},{"internalType":"uint256","name":"newSellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newSellDevFee","type":"uint256"}],"name":"SetFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinimumThreshold","type":"uint256"},{"internalType":"uint256","name":"newMaximumThreshold","type":"uint256"}],"name":"SetLiquidationThresholds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMarketingWallet","type":"address"},{"internalType":"address payable","name":"newDevWallet","type":"address"}],"name":"SetWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBotListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"accDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"accMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dilutedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxLiquidationThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minLiquidationThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverETHfromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverTokensFromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingIsOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newUniswapPairAddress","type":"address"}],"name":"updateUniswapPairAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"},{"internalType":"bool","name":"createPair","type":"bool"}],"name":"updateUniswapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600a60808190526910985cd9590811dbdb1960b21b60a09081526200002d9160019190620003f3565b50604080518082019091526004808252631091d31160e21b60209092019182526200005b91600291620003f3565b506a497421a5557c070c0000006003556004805460ff1916601290811790915569152d089e790064298165600855692a5a0b665a4b5aa981656009556001600a819055600b5560c8600c8190556064600d5561012c600e819055600f556010556101f460115561133d9081905560135561267a6014556016805461ff001916610100179055348015620000ed57600080fd5b5060048054610100600160a81b0319163361010081029190911790915560405173ab5801a7d398351b8be11c439e05c5b3259aec9b907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b036101009182900481166000908152601c60209081526040808320805460ff1916600117905560035486548690048516845260189092529182902081905593549051929004169173ab5801a7d398351b8be11c439e05c5b3259aec9b917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620001e19190815260200190565b60405180910390a3600080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200024e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000274919062000499565b6001600160a01b031663c9c653963060008054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fb919062000499565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000349573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036f919062000499565b600580546001600160a01b0319166001600160a01b039283169081179091556000908152601760209081526040808320805460ff199081166001908117909255308552601b90935281842080548416821790556004546101009004851684528184208054841682179055835490941683529091208054909116909117905562000508565b8280546200040190620004cb565b90600052602060002090601f01602090048101928262000425576000855562000470565b82601f106200044057805160ff191683800117855562000470565b8280016001018555821562000470579182015b828111156200047057825182559160200191906001019062000453565b506200047e92915062000482565b5090565b5b808211156200047e576000815560010162000483565b600060208284031215620004ac57600080fd5b81516001600160a01b0381168114620004c457600080fd5b9392505050565b600181811c90821680620004e057607f821691505b602082108114156200050257634e487b7160e01b600052602260045260246000fd5b50919050565b612a7a80620005186000396000f3fe6080604052600436106102cd5760003560e01c80638da5cb5b11610175578063acadb2a9116100dc578063ce831ed511610095578063dd62ed3e1161006f578063dd62ed3e14610850578063e6be4a7214610896578063f2fde38b146108b6578063fca390da146108d657600080fd5b8063ce831ed514610805578063d075591a1461081a578063d0a398141461083a57600080fd5b8063acadb2a91461073a578063b62496f51461076a578063b9e937001461079a578063ba2e35a2146107b0578063bc38adba146107d0578063c816841b146107e557600080fd5b80639c3b4fdc1161012e5780639c3b4fdc1461068e5780639d6a639e146106a45780639d8f7706146106c4578063a0d82dc5146106e4578063a457c2d7146106fa578063a9059cbb1461071a57600080fd5b80638da5cb5b146105e15780638ea5220f14610604578063921369131461062457806395d89b411461063a5780639a7a23d61461064f5780639ab1b4841461066f57600080fd5b806355d0a1d011610234578063715018a6116101ed57806376f69943116101c757806376f699431461056b5780637bce5a041461058b5780637fdaf542146105a15780638ca4eaea146105c157600080fd5b8063715018a6146104fe578063747eaccb1461051357806375f0a8741461053357600080fd5b806355d0a1d014610453578063562b9630146104685780635f93dccb1461048857806369ee768a1461049e5780636aea2dfa146104be57806370a08231146104de57600080fd5b806323b872dd1161028657806323b872dd146103af578063313ce567146103cf57806339509351146103f1578063412eaabc146104115780634e385429146104275780635322193a1461043d57600080fd5b806306fdde03146102d9578063095ea7b3146103045780630c6c08251461033457806311e4c8891461035657806318160ddd146103765780632229b5fa1461039557600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102ee6108f6565b6040516102fb919061251a565b60405180910390f35b34801561031057600080fd5b5061032461031f366004612584565b610988565b60405190151581526020016102fb565b34801561034057600080fd5b5061035461034f3660046125b0565b61099e565b005b34801561036257600080fd5b506103546103713660046125e9565b610a5c565b34801561038257600080fd5b506003545b6040519081526020016102fb565b3480156103a157600080fd5b506016546103249060ff1681565b3480156103bb57600080fd5b506103246103ca36600461260b565b610aa6565b3480156103db57600080fd5b5060045460405160ff90911681526020016102fb565b3480156103fd57600080fd5b5061032461040c366004612584565b610b4d565b34801561041d57600080fd5b50610387600a5481565b34801561043357600080fd5b5061038760095481565b34801561044957600080fd5b5061038760085481565b34801561045f57600080fd5b50610387610b89565b34801561047457600080fd5b506103546104833660046125e9565b610baf565b34801561049457600080fd5b50610387600b5481565b3480156104aa57600080fd5b506103546104b936600461265a565b610c16565b3480156104ca57600080fd5b506103546104d93660046125e9565b610e21565b3480156104ea57600080fd5b506103876104f9366004612688565b610e70565b34801561050a57600080fd5b50610354610e8b565b34801561051f57600080fd5b5061035461052e3660046126ac565b610f0a565b34801561053f57600080fd5b50600654610553906001600160a01b031681565b6040516001600160a01b0390911681526020016102fb565b34801561057757600080fd5b506103546105863660046126de565b610f9e565b34801561059757600080fd5b50610387600c5481565b3480156105ad57600080fd5b506103546105bc3660046126fc565b611025565b3480156105cd57600080fd5b506103546105dc366004612688565b6110da565b3480156105ed57600080fd5b5060045461010090046001600160a01b0316610553565b34801561061057600080fd5b50600754610553906001600160a01b031681565b34801561063057600080fd5b50610387600f5481565b34801561064657600080fd5b506102ee611140565b34801561065b57600080fd5b5061035461066a36600461265a565b61114f565b34801561067b57600080fd5b5060165461032490610100900460ff1681565b34801561069a57600080fd5b50610387600d5481565b3480156106b057600080fd5b506103546106bf366004612782565b6111fc565b3480156106d057600080fd5b506103546106df36600461265a565b611255565b3480156106f057600080fd5b5061038760105481565b34801561070657600080fd5b50610324610715366004612584565b6112c4565b34801561072657600080fd5b50610324610735366004612584565b61135b565b34801561074657600080fd5b50610324610755366004612688565b601d6020526000908152604090205460ff1681565b34801561077657600080fd5b50610324610785366004612688565b60176020526000908152604090205460ff1681565b3480156107a657600080fd5b50610387600e5481565b3480156107bc57600080fd5b506103546107cb36600461265a565b611368565b3480156107dc57600080fd5b506103876113d7565b3480156107f157600080fd5b50600554610553906001600160a01b031681565b34801561081157600080fd5b506103546113f1565b34801561082657600080fd5b50610354610835366004612584565b611471565b34801561084657600080fd5b5061038760115481565b34801561085c57600080fd5b5061038761086b3660046125b0565b6001600160a01b03918216600090815260196020908152604080832093909416825291909152205490565b3480156108a257600080fd5b506103546108b1366004612584565b61154d565b3480156108c257600080fd5b506103546108d1366004612688565b6116aa565b3480156108e257600080fd5b506103546108f136600461265a565b6117a2565b6060600180546109059061279f565b80601f01602080910402602001604051908101604052809291908181526020018280546109319061279f565b801561097e5780601f106109535761010080835404028352916020019161097e565b820191906000526020600020905b81548152906001019060200180831161096157829003601f168201915b5050505050905090565b60006109953384846118a4565b50600192915050565b6007546001600160a01b03163314806109c6575060045461010090046001600160a01b031633145b6109eb5760405162461bcd60e51b81526004016109e2906127da565b60405180910390fd5b6001600160a01b03811615610a5857600680546001600160a01b03199081166001600160a01b03858116918217909355600780549092169284169283179091556000908152601b6020526040808220805460ff199081166001908117909255938352912080549092161790555b5050565b6006546001600160a01b0316331480610a7f57506007546001600160a01b031633145b610a9b5760405162461bcd60e51b81526004016109e290612822565b600891909155600955565b6001600160a01b038316600090815260196020908152604080832033845290915281205482811015610b2a5760405162461bcd60e51b815260206004820152602760248201527f42474c443a207472616e7366657220616d6f756e74206578636565647320616c6044820152666c6f77616e636560c81b60648201526084016109e2565b610b358585856119c7565b610b4285338584036118a4565b506001949350505050565b3360008181526019602090815260408083206001600160a01b03871684529091528120549091610995918590610b8490869061288b565b6118a4565b6000610b956000610e70565b610ba061dead610e70565b610baa919061288b565b905090565b6007546001600160a01b0316331480610bd7575060045461010090046001600160a01b031633145b610bf35760405162461bcd60e51b81526004016109e2906127da565b610bfd818361288b565b601481905561270f1115610a5857601291909155601355565b6007546001600160a01b0316331480610c3e575060045461010090046001600160a01b031633145b610c5a5760405162461bcd60e51b81526004016109e2906127da565b600080546001600160a01b0319166001600160a01b0384161790558015610a585760008054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf091906128a3565b6001600160a01b031663c9c653963060008054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7491906128a3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de591906128a3565b600580546001600160a01b0319166001600160a01b039290921691821790556000908152601760205260409020805460ff191660011790555050565b6007546001600160a01b0316331480610e49575060045461010090046001600160a01b031633145b610e655760405162461bcd60e51b81526004016109e2906127da565b600a91909155600b55565b6001600160a01b031660009081526018602052604090205490565b60045461010090046001600160a01b03163314610eba5760405162461bcd60e51b81526004016109e2906128c0565b60045460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360048054610100600160a81b0319169055565b6007546001600160a01b0316331480610f32575060045461010090046001600160a01b031633145b610f4e5760405162461bcd60e51b81526004016109e2906127da565b610f58838561288b565b600e55610f65818361288b565b601155600e546105dd118015610f7e57506105dd601154105b15610f9857600c849055600d839055600f82905560108190555b50505050565b60045461010090046001600160a01b03163314610fcd5760405162461bcd60e51b81526004016109e2906128c0565b8115610fdd574381016001016015555b6016805460ff19168315159081179091556040519081527fce46637fe192d38cbb817634a27c61eb3500b2c9e45a4c22740febb5c6298d049060200160405180910390a15050565b6007546001600160a01b031633148061104d575060045461010090046001600160a01b031633145b6110695760405162461bcd60e51b81526004016109e2906127da565b60005b82811015610f985781601b600086868581811061108b5761108b6128f7565b90506020020160208101906110a09190612688565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806110d28161290d565b91505061106c565b6007546001600160a01b0316331480611102575060045461010090046001600160a01b031633145b61111e5760405162461bcd60e51b81526004016109e2906127da565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6060600280546109059061279f565b6007546001600160a01b0316331480611177575060045461010090046001600160a01b031633145b6111935760405162461bcd60e51b81526004016109e2906127da565b6005546001600160a01b03838116911614610a58576001600160a01b038216600081815260176020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6006546001600160a01b031633148061121f57506007546001600160a01b031633145b61123b5760405162461bcd60e51b81526004016109e290612822565b601680549115156101000261ff0019909216919091179055565b6007546001600160a01b031633148061127d575060045461010090046001600160a01b031633145b6112995760405162461bcd60e51b81526004016109e2906127da565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b3360009081526019602090815260408083206001600160a01b0386168452909152812054828110156113445760405162461bcd60e51b8152602060048201526024808201527f42474c443a2064656372656173656420616c6c6f77616e63652062656c6f77206044820152637a65726f60e01b60648201526084016109e2565b61135133858584036118a4565b5060019392505050565b60006109953384846119c7565b6007546001600160a01b0316331480611390575060045461010090046001600160a01b031633145b6113ac5760405162461bcd60e51b81526004016109e2906127da565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b60006113e461dead610e70565b600354610baa9190612928565b6007546001600160a01b0316331480611419575060045461010090046001600160a01b031633145b6114355760405162461bcd60e51b81526004016109e2906127da565b6007546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561146e573d6000803e3d6000fd5b50565b6006546001600160a01b031633148061149457506007546001600160a01b031633145b6114b05760405162461bcd60e51b81526004016109e290612822565b6114bb3383836119c7565b6001600160a01b03821630148015906114e257506006546001600160a01b03838116911614155b80156114fc57506007546001600160a01b03838116911614155b801561152157506001600160a01b03821660009081526017602052604090205460ff16155b15610a58576001600160a01b0382166000908152601d60205260409020805460ff191660011790555050565b6007546001600160a01b0316331480611575575060045461010090046001600160a01b031633145b6115915760405162461bcd60e51b81526004016109e2906127da565b6001600160a01b03821630141561162e57806115ac30610e70565b14156115c1576001600a819055600b5561162e565b600b54600a546115d1919061288b565b600a546115de908361293f565b6115e89190612974565b600a546115f59190612928565b600a819055600b546116069161288b565b600b54611613908361293f565b61161d9190612974565b600b5461162a9190612928565b600b555b60075460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015611681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a59190612996565b505050565b60045461010090046001600160a01b031633146116d95760405162461bcd60e51b81526004016109e2906128c0565b6001600160a01b03811661173b5760405162461bcd60e51b815260206004820152602360248201527f42474c443a206e6577206f776e657220697320746865207a65726f206164647260448201526265737360e81b60648201526084016109e2565b6004546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6006546001600160a01b03163314806117c557506007546001600160a01b031633145b6117e15760405162461bcd60e51b81526004016109e290612822565b801561187a576001600160a01b038216301480159061180e57506006546001600160a01b03838116911614155b801561182857506007546001600160a01b03838116911614155b801561184d57506001600160a01b03821660009081526017602052604090205460ff16155b15610a58576001600160a01b0382166000908152601d60205260409020805460ff19168215151790555050565b6001600160a01b0382166000908152601d60205260409020805482151560ff199091161790555050565b6001600160a01b0383166119065760405162461bcd60e51b815260206004820152602360248201527f42474c443a20617070726f76652066726f6d20746865207a65726f206164647260448201526265737360e81b60648201526084016109e2565b6001600160a01b0382166119665760405162461bcd60e51b815260206004820152602160248201527f42474c443a20617070726f766520746f20746865207a65726f206164647265736044820152607360f81b60648201526084016109e2565b6001600160a01b0383811660008181526019602090815260408083209487168084529482529182902085905590518481527f6e11fb1b7f119e3f2fa29896ef5fdf8b8a2d0d4df6fe90ba8668e7d8b2ffa25e910160405180910390a3505050565b60165460ff16611a5f576001600160a01b0383166000908152601c602052604090205460ff16611a5f5760405162461bcd60e51b815260206004820152603960248201527f42474c443a20596f752061726520746f6f206561726c79212054726164696e6760448201527f20686173206e6f74206265656e20656e61626c6564207965740000000000000060648201526084016109e2565b6001600160a01b03831660009081526018602052604090205481811015611ad65760405162461bcd60e51b815260206004820152602560248201527f42474c443a207472616e7366657220616d6f756e7420657863656564732062616044820152646c616e636560d81b60648201526084016109e2565b6001600160a01b03841660009081526018602090815260408083208585039055601d90915290205460ff1615611c2e57601554431115611c2e576001600160a01b0383163014801590611b3757506006546001600160a01b03848116911614155b8015611b5157506007546001600160a01b03848116911614155b15611c2e57600061271060125484611b69919061293f565b611b739190612974565b9050600061271060135485611b88919061293f565b611b929190612974565b9050611ba086858484612047565b9350600854611bae30610e70565b1115611bbc57611bbc61216f565b6001600160a01b03851660009081526018602052604081208054869290611be490849061288b565b92505081905550846001600160a01b0316866001600160a01b0316600080516020612a2583398151915286604051611c1e91815260200190565b60405180910390a3505050505050565b6015544311611cc6576001600160a01b0383163014801590611c5e57506006546001600160a01b03848116911614155b8015611c7857506007546001600160a01b03848116911614155b8015611c9d57506001600160a01b03831660009081526017602052604090205460ff16155b15611cc6576001600160a01b0383166000908152601d60205260409020805460ff191660011790555b6001600160a01b0384166000908152601b602052604081205460ff1680611d0557506001600160a01b0384166000908152601b602052604090205460ff165b611d10576001611d13565b60005b90508015611fd6576001600160a01b03851660009081526017602052604090205460ff1615611da9576001600160a01b0384166000908152601a60205260409020439055600e5415611da4576000612710600c54850281611d7657611d7661295e565b0490506000612710600d54860281611d9057611d9061295e565b049050611d9f87868484612047565b945050505b611fd6565b6001600160a01b0385166000908152601a6020526040902054431415611f6f576001600160a01b0385163014801590611df057506006546001600160a01b03868116911614155b8015611e0a57506007546001600160a01b03868116911614155b8015611e2f57506001600160a01b03851660009081526017602052604090205460ff16155b15611f6f576001600160a01b038086166000908152601d60205260409020805460ff1916600117905584163014801590611e7757506006546001600160a01b03858116911614155b8015611e9157506007546001600160a01b03858116911614155b15611f6f57600061271060125485611ea9919061293f565b611eb39190612974565b9050600061271060135486611ec8919061293f565b611ed29190612974565b9050611ee087868484612047565b9450600854611eee30610e70565b1115611efc57611efc61216f565b6001600160a01b03861660009081526018602052604081208054879290611f2490849061288b565b92505081905550856001600160a01b0316876001600160a01b0316600080516020612a2583398151915287604051611f5e91815260200190565b60405180910390a350505050505050565b60115415611fbc576000612710600f54850281611f8e57611f8e61295e565b0490506000612710601054860281611fa857611fa861295e565b049050611fb787868484612047565b945050505b600854611fc830610e70565b1115611fd657611fd661216f565b6001600160a01b03841660009081526018602052604081208054859290611ffe90849061288b565b92505081905550836001600160a01b0316856001600160a01b0316600080516020612a258339815191528560405161203891815260200190565b60405180910390a35050505050565b601654600090610100900460ff161561210557600680546001600160a01b039081166000908152601860209081526040918290208054880190559254905186815296869003859003969082169291881691600080516020612a25833981519152910160405180910390a3600780546001600160a01b03908116600090815260186020908152604091829020805487019055925490518581529082169291881691600080516020612a25833981519152910160405180910390a3612166565b600a805484019055600b805483019055306000818152601860209081526040918290208054868801908101909155915182815296829003969192916001600160a01b03891691600080516020612a25833981519152910160405180910390a3505b50919392505050565b600b54600a5401600061218130610e70565b90506009548111156122bb575060095461219a816123b2565b6000479050600083600a548302816121b4576121b461295e565b6006546040519290910492506000916001600160a01b039091169083908381818185875af1925050503d8060008114612209576040519150601f19603f3d011682016040523d82523d6000602084013e61220e565b606091505b5050905080156122375784600a5485028161222b5761222b61295e565b04600a5403600a819055505b60075460405147916001600160a01b0316908290600081818185875af1925050503d8060008114612284576040519150601f19603f3d011682016040523d82523d6000602084013e612289565b606091505b509092505081156122b35785600b548602816122a7576122a761295e565b04600b5403600b819055505b505050505050565b6122c4816123b2565b6000479050600083600a548302816122de576122de61295e565b6006546040519290910492506000916001600160a01b039091169083908381818185875af1925050503d8060008114612333576040519150601f19603f3d011682016040523d82523d6000602084013e612338565b606091505b505090508015612348576001600a555b60075460405147916001600160a01b0316908290600081818185875af1925050503d8060008114612395576040519150601f19603f3d011682016040523d82523d6000602084013e61239a565b606091505b509092505081156122b3576001600b55505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106123e7576123e76128f7565b60200260200101906001600160a01b031690816001600160a01b03168152505060008054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612458573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247c91906128a3565b8160018151811061248f5761248f6128f7565b6001600160a01b0392831660209182029290920101526000546124b591309116846118a4565b6000805460405163791ac94760e01b81526001600160a01b039091169163791ac947916124ec9186918690309042906004016129b3565b600060405180830381600087803b15801561250657600080fd5b505af11580156122b3573d6000803e3d6000fd5b600060208083528351808285015260005b818110156125475785810183015185820160400152820161252b565b81811115612559576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461146e57600080fd5b6000806040838503121561259757600080fd5b82356125a28161256f565b946020939093013593505050565b600080604083850312156125c357600080fd5b82356125ce8161256f565b915060208301356125de8161256f565b809150509250929050565b600080604083850312156125fc57600080fd5b50508035926020909101359150565b60008060006060848603121561262057600080fd5b833561262b8161256f565b9250602084013561263b8161256f565b929592945050506040919091013590565b801515811461146e57600080fd5b6000806040838503121561266d57600080fd5b82356126788161256f565b915060208301356125de8161264c565b60006020828403121561269a57600080fd5b81356126a58161256f565b9392505050565b600080600080608085870312156126c257600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156126f157600080fd5b82356125a28161264c565b60008060006040848603121561271157600080fd5b833567ffffffffffffffff8082111561272957600080fd5b818601915086601f83011261273d57600080fd5b81358181111561274c57600080fd5b8760208260051b850101111561276157600080fd5b602092830195509350508401356127778161264c565b809150509250925092565b60006020828403121561279457600080fd5b81356126a58161264c565b600181811c908216806127b357607f821691505b602082108114156127d457634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526028908201527f42474c443a2063616c6c6572206973206e6f7420746865206f776e6572206f72604082015267103a3432903232bb60c11b606082015260800190565b60208082526033908201527f42474c443a2063616c6c6572206973206e6f7420746865206d61726b6574696e60408201527219c81bdc881d1a194819195d881dd85b1b195d606a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561289e5761289e612875565b500190565b6000602082840312156128b557600080fd5b81516126a58161256f565b6020808252601d908201527f42474c443a2063616c6c6572206973206e6f7420746865206f776e6572000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600060001982141561292157612921612875565b5060010190565b60008282101561293a5761293a612875565b500390565b600081600019048311821515161561295957612959612875565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261299157634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156129a857600080fd5b81516126a58161264c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612a035784516001600160a01b0316835293830193918301916001016129de565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212200b03b526625634a8d96b0e1bd061db0fa2e25f9a8791ea818fca514f8791abb664736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106102cd5760003560e01c80638da5cb5b11610175578063acadb2a9116100dc578063ce831ed511610095578063dd62ed3e1161006f578063dd62ed3e14610850578063e6be4a7214610896578063f2fde38b146108b6578063fca390da146108d657600080fd5b8063ce831ed514610805578063d075591a1461081a578063d0a398141461083a57600080fd5b8063acadb2a91461073a578063b62496f51461076a578063b9e937001461079a578063ba2e35a2146107b0578063bc38adba146107d0578063c816841b146107e557600080fd5b80639c3b4fdc1161012e5780639c3b4fdc1461068e5780639d6a639e146106a45780639d8f7706146106c4578063a0d82dc5146106e4578063a457c2d7146106fa578063a9059cbb1461071a57600080fd5b80638da5cb5b146105e15780638ea5220f14610604578063921369131461062457806395d89b411461063a5780639a7a23d61461064f5780639ab1b4841461066f57600080fd5b806355d0a1d011610234578063715018a6116101ed57806376f69943116101c757806376f699431461056b5780637bce5a041461058b5780637fdaf542146105a15780638ca4eaea146105c157600080fd5b8063715018a6146104fe578063747eaccb1461051357806375f0a8741461053357600080fd5b806355d0a1d014610453578063562b9630146104685780635f93dccb1461048857806369ee768a1461049e5780636aea2dfa146104be57806370a08231146104de57600080fd5b806323b872dd1161028657806323b872dd146103af578063313ce567146103cf57806339509351146103f1578063412eaabc146104115780634e385429146104275780635322193a1461043d57600080fd5b806306fdde03146102d9578063095ea7b3146103045780630c6c08251461033457806311e4c8891461035657806318160ddd146103765780632229b5fa1461039557600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102ee6108f6565b6040516102fb919061251a565b60405180910390f35b34801561031057600080fd5b5061032461031f366004612584565b610988565b60405190151581526020016102fb565b34801561034057600080fd5b5061035461034f3660046125b0565b61099e565b005b34801561036257600080fd5b506103546103713660046125e9565b610a5c565b34801561038257600080fd5b506003545b6040519081526020016102fb565b3480156103a157600080fd5b506016546103249060ff1681565b3480156103bb57600080fd5b506103246103ca36600461260b565b610aa6565b3480156103db57600080fd5b5060045460405160ff90911681526020016102fb565b3480156103fd57600080fd5b5061032461040c366004612584565b610b4d565b34801561041d57600080fd5b50610387600a5481565b34801561043357600080fd5b5061038760095481565b34801561044957600080fd5b5061038760085481565b34801561045f57600080fd5b50610387610b89565b34801561047457600080fd5b506103546104833660046125e9565b610baf565b34801561049457600080fd5b50610387600b5481565b3480156104aa57600080fd5b506103546104b936600461265a565b610c16565b3480156104ca57600080fd5b506103546104d93660046125e9565b610e21565b3480156104ea57600080fd5b506103876104f9366004612688565b610e70565b34801561050a57600080fd5b50610354610e8b565b34801561051f57600080fd5b5061035461052e3660046126ac565b610f0a565b34801561053f57600080fd5b50600654610553906001600160a01b031681565b6040516001600160a01b0390911681526020016102fb565b34801561057757600080fd5b506103546105863660046126de565b610f9e565b34801561059757600080fd5b50610387600c5481565b3480156105ad57600080fd5b506103546105bc3660046126fc565b611025565b3480156105cd57600080fd5b506103546105dc366004612688565b6110da565b3480156105ed57600080fd5b5060045461010090046001600160a01b0316610553565b34801561061057600080fd5b50600754610553906001600160a01b031681565b34801561063057600080fd5b50610387600f5481565b34801561064657600080fd5b506102ee611140565b34801561065b57600080fd5b5061035461066a36600461265a565b61114f565b34801561067b57600080fd5b5060165461032490610100900460ff1681565b34801561069a57600080fd5b50610387600d5481565b3480156106b057600080fd5b506103546106bf366004612782565b6111fc565b3480156106d057600080fd5b506103546106df36600461265a565b611255565b3480156106f057600080fd5b5061038760105481565b34801561070657600080fd5b50610324610715366004612584565b6112c4565b34801561072657600080fd5b50610324610735366004612584565b61135b565b34801561074657600080fd5b50610324610755366004612688565b601d6020526000908152604090205460ff1681565b34801561077657600080fd5b50610324610785366004612688565b60176020526000908152604090205460ff1681565b3480156107a657600080fd5b50610387600e5481565b3480156107bc57600080fd5b506103546107cb36600461265a565b611368565b3480156107dc57600080fd5b506103876113d7565b3480156107f157600080fd5b50600554610553906001600160a01b031681565b34801561081157600080fd5b506103546113f1565b34801561082657600080fd5b50610354610835366004612584565b611471565b34801561084657600080fd5b5061038760115481565b34801561085c57600080fd5b5061038761086b3660046125b0565b6001600160a01b03918216600090815260196020908152604080832093909416825291909152205490565b3480156108a257600080fd5b506103546108b1366004612584565b61154d565b3480156108c257600080fd5b506103546108d1366004612688565b6116aa565b3480156108e257600080fd5b506103546108f136600461265a565b6117a2565b6060600180546109059061279f565b80601f01602080910402602001604051908101604052809291908181526020018280546109319061279f565b801561097e5780601f106109535761010080835404028352916020019161097e565b820191906000526020600020905b81548152906001019060200180831161096157829003601f168201915b5050505050905090565b60006109953384846118a4565b50600192915050565b6007546001600160a01b03163314806109c6575060045461010090046001600160a01b031633145b6109eb5760405162461bcd60e51b81526004016109e2906127da565b60405180910390fd5b6001600160a01b03811615610a5857600680546001600160a01b03199081166001600160a01b03858116918217909355600780549092169284169283179091556000908152601b6020526040808220805460ff199081166001908117909255938352912080549092161790555b5050565b6006546001600160a01b0316331480610a7f57506007546001600160a01b031633145b610a9b5760405162461bcd60e51b81526004016109e290612822565b600891909155600955565b6001600160a01b038316600090815260196020908152604080832033845290915281205482811015610b2a5760405162461bcd60e51b815260206004820152602760248201527f42474c443a207472616e7366657220616d6f756e74206578636565647320616c6044820152666c6f77616e636560c81b60648201526084016109e2565b610b358585856119c7565b610b4285338584036118a4565b506001949350505050565b3360008181526019602090815260408083206001600160a01b03871684529091528120549091610995918590610b8490869061288b565b6118a4565b6000610b956000610e70565b610ba061dead610e70565b610baa919061288b565b905090565b6007546001600160a01b0316331480610bd7575060045461010090046001600160a01b031633145b610bf35760405162461bcd60e51b81526004016109e2906127da565b610bfd818361288b565b601481905561270f1115610a5857601291909155601355565b6007546001600160a01b0316331480610c3e575060045461010090046001600160a01b031633145b610c5a5760405162461bcd60e51b81526004016109e2906127da565b600080546001600160a01b0319166001600160a01b0384161790558015610a585760008054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf091906128a3565b6001600160a01b031663c9c653963060008054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7491906128a3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de591906128a3565b600580546001600160a01b0319166001600160a01b039290921691821790556000908152601760205260409020805460ff191660011790555050565b6007546001600160a01b0316331480610e49575060045461010090046001600160a01b031633145b610e655760405162461bcd60e51b81526004016109e2906127da565b600a91909155600b55565b6001600160a01b031660009081526018602052604090205490565b60045461010090046001600160a01b03163314610eba5760405162461bcd60e51b81526004016109e2906128c0565b60045460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360048054610100600160a81b0319169055565b6007546001600160a01b0316331480610f32575060045461010090046001600160a01b031633145b610f4e5760405162461bcd60e51b81526004016109e2906127da565b610f58838561288b565b600e55610f65818361288b565b601155600e546105dd118015610f7e57506105dd601154105b15610f9857600c849055600d839055600f82905560108190555b50505050565b60045461010090046001600160a01b03163314610fcd5760405162461bcd60e51b81526004016109e2906128c0565b8115610fdd574381016001016015555b6016805460ff19168315159081179091556040519081527fce46637fe192d38cbb817634a27c61eb3500b2c9e45a4c22740febb5c6298d049060200160405180910390a15050565b6007546001600160a01b031633148061104d575060045461010090046001600160a01b031633145b6110695760405162461bcd60e51b81526004016109e2906127da565b60005b82811015610f985781601b600086868581811061108b5761108b6128f7565b90506020020160208101906110a09190612688565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806110d28161290d565b91505061106c565b6007546001600160a01b0316331480611102575060045461010090046001600160a01b031633145b61111e5760405162461bcd60e51b81526004016109e2906127da565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6060600280546109059061279f565b6007546001600160a01b0316331480611177575060045461010090046001600160a01b031633145b6111935760405162461bcd60e51b81526004016109e2906127da565b6005546001600160a01b03838116911614610a58576001600160a01b038216600081815260176020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6006546001600160a01b031633148061121f57506007546001600160a01b031633145b61123b5760405162461bcd60e51b81526004016109e290612822565b601680549115156101000261ff0019909216919091179055565b6007546001600160a01b031633148061127d575060045461010090046001600160a01b031633145b6112995760405162461bcd60e51b81526004016109e2906127da565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b3360009081526019602090815260408083206001600160a01b0386168452909152812054828110156113445760405162461bcd60e51b8152602060048201526024808201527f42474c443a2064656372656173656420616c6c6f77616e63652062656c6f77206044820152637a65726f60e01b60648201526084016109e2565b61135133858584036118a4565b5060019392505050565b60006109953384846119c7565b6007546001600160a01b0316331480611390575060045461010090046001600160a01b031633145b6113ac5760405162461bcd60e51b81526004016109e2906127da565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b60006113e461dead610e70565b600354610baa9190612928565b6007546001600160a01b0316331480611419575060045461010090046001600160a01b031633145b6114355760405162461bcd60e51b81526004016109e2906127da565b6007546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561146e573d6000803e3d6000fd5b50565b6006546001600160a01b031633148061149457506007546001600160a01b031633145b6114b05760405162461bcd60e51b81526004016109e290612822565b6114bb3383836119c7565b6001600160a01b03821630148015906114e257506006546001600160a01b03838116911614155b80156114fc57506007546001600160a01b03838116911614155b801561152157506001600160a01b03821660009081526017602052604090205460ff16155b15610a58576001600160a01b0382166000908152601d60205260409020805460ff191660011790555050565b6007546001600160a01b0316331480611575575060045461010090046001600160a01b031633145b6115915760405162461bcd60e51b81526004016109e2906127da565b6001600160a01b03821630141561162e57806115ac30610e70565b14156115c1576001600a819055600b5561162e565b600b54600a546115d1919061288b565b600a546115de908361293f565b6115e89190612974565b600a546115f59190612928565b600a819055600b546116069161288b565b600b54611613908361293f565b61161d9190612974565b600b5461162a9190612928565b600b555b60075460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015611681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a59190612996565b505050565b60045461010090046001600160a01b031633146116d95760405162461bcd60e51b81526004016109e2906128c0565b6001600160a01b03811661173b5760405162461bcd60e51b815260206004820152602360248201527f42474c443a206e6577206f776e657220697320746865207a65726f206164647260448201526265737360e81b60648201526084016109e2565b6004546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6006546001600160a01b03163314806117c557506007546001600160a01b031633145b6117e15760405162461bcd60e51b81526004016109e290612822565b801561187a576001600160a01b038216301480159061180e57506006546001600160a01b03838116911614155b801561182857506007546001600160a01b03838116911614155b801561184d57506001600160a01b03821660009081526017602052604090205460ff16155b15610a58576001600160a01b0382166000908152601d60205260409020805460ff19168215151790555050565b6001600160a01b0382166000908152601d60205260409020805482151560ff199091161790555050565b6001600160a01b0383166119065760405162461bcd60e51b815260206004820152602360248201527f42474c443a20617070726f76652066726f6d20746865207a65726f206164647260448201526265737360e81b60648201526084016109e2565b6001600160a01b0382166119665760405162461bcd60e51b815260206004820152602160248201527f42474c443a20617070726f766520746f20746865207a65726f206164647265736044820152607360f81b60648201526084016109e2565b6001600160a01b0383811660008181526019602090815260408083209487168084529482529182902085905590518481527f6e11fb1b7f119e3f2fa29896ef5fdf8b8a2d0d4df6fe90ba8668e7d8b2ffa25e910160405180910390a3505050565b60165460ff16611a5f576001600160a01b0383166000908152601c602052604090205460ff16611a5f5760405162461bcd60e51b815260206004820152603960248201527f42474c443a20596f752061726520746f6f206561726c79212054726164696e6760448201527f20686173206e6f74206265656e20656e61626c6564207965740000000000000060648201526084016109e2565b6001600160a01b03831660009081526018602052604090205481811015611ad65760405162461bcd60e51b815260206004820152602560248201527f42474c443a207472616e7366657220616d6f756e7420657863656564732062616044820152646c616e636560d81b60648201526084016109e2565b6001600160a01b03841660009081526018602090815260408083208585039055601d90915290205460ff1615611c2e57601554431115611c2e576001600160a01b0383163014801590611b3757506006546001600160a01b03848116911614155b8015611b5157506007546001600160a01b03848116911614155b15611c2e57600061271060125484611b69919061293f565b611b739190612974565b9050600061271060135485611b88919061293f565b611b929190612974565b9050611ba086858484612047565b9350600854611bae30610e70565b1115611bbc57611bbc61216f565b6001600160a01b03851660009081526018602052604081208054869290611be490849061288b565b92505081905550846001600160a01b0316866001600160a01b0316600080516020612a2583398151915286604051611c1e91815260200190565b60405180910390a3505050505050565b6015544311611cc6576001600160a01b0383163014801590611c5e57506006546001600160a01b03848116911614155b8015611c7857506007546001600160a01b03848116911614155b8015611c9d57506001600160a01b03831660009081526017602052604090205460ff16155b15611cc6576001600160a01b0383166000908152601d60205260409020805460ff191660011790555b6001600160a01b0384166000908152601b602052604081205460ff1680611d0557506001600160a01b0384166000908152601b602052604090205460ff165b611d10576001611d13565b60005b90508015611fd6576001600160a01b03851660009081526017602052604090205460ff1615611da9576001600160a01b0384166000908152601a60205260409020439055600e5415611da4576000612710600c54850281611d7657611d7661295e565b0490506000612710600d54860281611d9057611d9061295e565b049050611d9f87868484612047565b945050505b611fd6565b6001600160a01b0385166000908152601a6020526040902054431415611f6f576001600160a01b0385163014801590611df057506006546001600160a01b03868116911614155b8015611e0a57506007546001600160a01b03868116911614155b8015611e2f57506001600160a01b03851660009081526017602052604090205460ff16155b15611f6f576001600160a01b038086166000908152601d60205260409020805460ff1916600117905584163014801590611e7757506006546001600160a01b03858116911614155b8015611e9157506007546001600160a01b03858116911614155b15611f6f57600061271060125485611ea9919061293f565b611eb39190612974565b9050600061271060135486611ec8919061293f565b611ed29190612974565b9050611ee087868484612047565b9450600854611eee30610e70565b1115611efc57611efc61216f565b6001600160a01b03861660009081526018602052604081208054879290611f2490849061288b565b92505081905550856001600160a01b0316876001600160a01b0316600080516020612a2583398151915287604051611f5e91815260200190565b60405180910390a350505050505050565b60115415611fbc576000612710600f54850281611f8e57611f8e61295e565b0490506000612710601054860281611fa857611fa861295e565b049050611fb787868484612047565b945050505b600854611fc830610e70565b1115611fd657611fd661216f565b6001600160a01b03841660009081526018602052604081208054859290611ffe90849061288b565b92505081905550836001600160a01b0316856001600160a01b0316600080516020612a258339815191528560405161203891815260200190565b60405180910390a35050505050565b601654600090610100900460ff161561210557600680546001600160a01b039081166000908152601860209081526040918290208054880190559254905186815296869003859003969082169291881691600080516020612a25833981519152910160405180910390a3600780546001600160a01b03908116600090815260186020908152604091829020805487019055925490518581529082169291881691600080516020612a25833981519152910160405180910390a3612166565b600a805484019055600b805483019055306000818152601860209081526040918290208054868801908101909155915182815296829003969192916001600160a01b03891691600080516020612a25833981519152910160405180910390a3505b50919392505050565b600b54600a5401600061218130610e70565b90506009548111156122bb575060095461219a816123b2565b6000479050600083600a548302816121b4576121b461295e565b6006546040519290910492506000916001600160a01b039091169083908381818185875af1925050503d8060008114612209576040519150601f19603f3d011682016040523d82523d6000602084013e61220e565b606091505b5050905080156122375784600a5485028161222b5761222b61295e565b04600a5403600a819055505b60075460405147916001600160a01b0316908290600081818185875af1925050503d8060008114612284576040519150601f19603f3d011682016040523d82523d6000602084013e612289565b606091505b509092505081156122b35785600b548602816122a7576122a761295e565b04600b5403600b819055505b505050505050565b6122c4816123b2565b6000479050600083600a548302816122de576122de61295e565b6006546040519290910492506000916001600160a01b039091169083908381818185875af1925050503d8060008114612333576040519150601f19603f3d011682016040523d82523d6000602084013e612338565b606091505b505090508015612348576001600a555b60075460405147916001600160a01b0316908290600081818185875af1925050503d8060008114612395576040519150601f19603f3d011682016040523d82523d6000602084013e61239a565b606091505b509092505081156122b3576001600b55505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106123e7576123e76128f7565b60200260200101906001600160a01b031690816001600160a01b03168152505060008054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612458573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247c91906128a3565b8160018151811061248f5761248f6128f7565b6001600160a01b0392831660209182029290920101526000546124b591309116846118a4565b6000805460405163791ac94760e01b81526001600160a01b039091169163791ac947916124ec9186918690309042906004016129b3565b600060405180830381600087803b15801561250657600080fd5b505af11580156122b3573d6000803e3d6000fd5b600060208083528351808285015260005b818110156125475785810183015185820160400152820161252b565b81811115612559576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461146e57600080fd5b6000806040838503121561259757600080fd5b82356125a28161256f565b946020939093013593505050565b600080604083850312156125c357600080fd5b82356125ce8161256f565b915060208301356125de8161256f565b809150509250929050565b600080604083850312156125fc57600080fd5b50508035926020909101359150565b60008060006060848603121561262057600080fd5b833561262b8161256f565b9250602084013561263b8161256f565b929592945050506040919091013590565b801515811461146e57600080fd5b6000806040838503121561266d57600080fd5b82356126788161256f565b915060208301356125de8161264c565b60006020828403121561269a57600080fd5b81356126a58161256f565b9392505050565b600080600080608085870312156126c257600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156126f157600080fd5b82356125a28161264c565b60008060006040848603121561271157600080fd5b833567ffffffffffffffff8082111561272957600080fd5b818601915086601f83011261273d57600080fd5b81358181111561274c57600080fd5b8760208260051b850101111561276157600080fd5b602092830195509350508401356127778161264c565b809150509250925092565b60006020828403121561279457600080fd5b81356126a58161264c565b600181811c908216806127b357607f821691505b602082108114156127d457634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526028908201527f42474c443a2063616c6c6572206973206e6f7420746865206f776e6572206f72604082015267103a3432903232bb60c11b606082015260800190565b60208082526033908201527f42474c443a2063616c6c6572206973206e6f7420746865206d61726b6574696e60408201527219c81bdc881d1a194819195d881dd85b1b195d606a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561289e5761289e612875565b500190565b6000602082840312156128b557600080fd5b81516126a58161256f565b6020808252601d908201527f42474c443a2063616c6c6572206973206e6f7420746865206f776e6572000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600060001982141561292157612921612875565b5060010190565b60008282101561293a5761293a612875565b500390565b600081600019048311821515161561295957612959612875565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261299157634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156129a857600080fd5b81516126a58161264c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612a035784516001600160a01b0316835293830193918301916001016129de565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212200b03b526625634a8d96b0e1bd061db0fa2e25f9a8791ea818fca514f8791abb664736f6c634300080a0033

Deployed Bytecode Sourcemap

4135:21862:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8295:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9975:158;;;;;;;;;;-1:-1:-1;9975:158:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;9975:158:0;1072:187:1;16275:397:0;;;;;;;;;;-1:-1:-1;16275:397:0;;;;;:::i;:::-;;:::i;:::-;;13679:245;;;;;;;;;;-1:-1:-1;13679:245:0;;;;;:::i;:::-;;:::i;8889:99::-;;;;;;;;;;-1:-1:-1;8968:12:0;;8889:99;;;2072:25:1;;;2060:2;2045:18;8889:99:0;1926:177:1;5768:25:0;;;;;;;;;;-1:-1:-1;5768:25:0;;;;;;;;10141:450;;;;;;;;;;-1:-1:-1;10141:450:0;;;;;:::i;:::-;;:::i;8497:91::-;;;;;;;;;;-1:-1:-1;8571:9:0;;8497:91;;8571:9;;;;2711:36:1;;2699:2;2684:18;8497:91:0;2569:184:1;10599:211:0;;;;;;;;;;-1:-1:-1;10599:211:0;;;;;:::i;:::-;;:::i;5058:34::-;;;;;;;;;;;;;;;;4902:65;;;;;;;;;;;;;;;;4774;;;;;;;;;;;;;;;;8600:138;;;;;;;;;;;;;:::i;14872:300::-;;;;;;;;;;-1:-1:-1;14872:300:0;;;;;:::i;:::-;;:::i;5176:28::-;;;;;;;;;;;;;;;;11762:435;;;;;;;;;;-1:-1:-1;11762:435:0;;;;;:::i;:::-;;:::i;12667:291::-;;;;;;;;;;-1:-1:-1;12667:291:0;;;;;:::i;:::-;;:::i;8996:118::-;;;;;;;;;;-1:-1:-1;8996:118:0;;;;;:::i;:::-;;:::i;9209:148::-;;;;;;;;;;;;;:::i;14335:529::-;;;;;;;;;;-1:-1:-1;14335:529:0;;;;;:::i;:::-;;:::i;4530:30::-;;;;;;;;;;-1:-1:-1;4530:30:0;;;;-1:-1:-1;;;;;4530:30:0;;;;;;-1:-1:-1;;;;;4074:32:1;;;4056:51;;4044:2;4029:18;4530:30:0;3910:203:1;16998:378:0;;;;;;;;;;-1:-1:-1;16998:378:0;;;;;:::i;:::-;;:::i;5278:36::-;;;;;;;;;;;;;;;;13354:317;;;;;;;;;;-1:-1:-1;13354:317:0;;;;;:::i;:::-;;:::i;12471:184::-;;;;;;;;;;-1:-1:-1;12471:184:0;;;;;:::i;:::-;;:::i;9122:79::-;;;;;;;;;;-1:-1:-1;9187:6:0;;;;;-1:-1:-1;;;;;9187:6:0;9122:79;;4567:24;;;;;;;;;;-1:-1:-1;4567:24:0;;;;-1:-1:-1;;;;;4567:24:0;;;5450:37;;;;;;;;;;;;;;;;8394:95;;;;;;;;;;;;;:::i;12209:254::-;;;;;;;;;;-1:-1:-1;12209:254:0;;;;;:::i;:::-;;:::i;5800:35::-;;;;;;;;;;-1:-1:-1;5800:35:0;;;;;;;;;;;5325:30;;;;;;;;;;;;;;;;14094:129;;;;;;;;;;-1:-1:-1;14094:129:0;;;;;:::i;:::-;;:::i;13134:212::-;;;;;;;;;;-1:-1:-1;13134:212:0;;;;;:::i;:::-;;:::i;5494:31::-;;;;;;;;;;;;;;;;10818:382;;;;;;;;;;-1:-1:-1;10818:382:0;;;;;:::i;:::-;;:::i;9616:199::-;;;;;;;;;;-1:-1:-1;9616:199:0;;;;;:::i;:::-;;:::i;6223:45::-;;;;;;;;;;-1:-1:-1;6223:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5844:57;;;;;;;;;;-1:-1:-1;5844:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5362:33;;;;;;;;;;;;;;;;16680:184;;;;;;;;;;-1:-1:-1;16680:184:0;;;;;:::i;:::-;;:::i;8746:131::-;;;;;;;;;;;;;:::i;4497:26::-;;;;;;;;;;-1:-1:-1;4497:26:0;;;;-1:-1:-1;;;;;4497:26:0;;;25028:127;;;;;;;;;;;;;:::i;15924:343::-;;;;;;;;;;-1:-1:-1;15924:343:0;;;;;:::i;:::-;;:::i;5532:34::-;;;;;;;;;;;;;;;;9823:144;;;;;;;;;;-1:-1:-1;9823:144:0;;;;;:::i;:::-;-1:-1:-1;;;;;9931:19:0;;;9904:7;9931:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9823:144;25269:725;;;;;;;;;;-1:-1:-1;25269:725:0;;;;;:::i;:::-;;:::i;9365:243::-;;;;;;;;;;-1:-1:-1;9365:243:0;;;;;:::i;:::-;;:::i;15229:492::-;;;;;;;;;;-1:-1:-1;15229:492:0;;;;;:::i;:::-;;:::i;8295:91::-;8340:13;8373:5;8366:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8295:91;:::o;9975:158::-;10049:4;10066:37;10075:10;10087:7;10096:6;10066:8;:37::i;:::-;-1:-1:-1;10121:4:0;9975:158;;;;:::o;16275:397::-;6895:9;;-1:-1:-1;;;;;6895:9:0;6908:10;6895:23;;:47;;-1:-1:-1;6922:6:0;;;;;-1:-1:-1;;;;;6922:6:0;6932:10;6922:20;6895:47;6887:100;;;;-1:-1:-1;;;6887:100:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;16403:26:0;::::1;::::0;16399:266:::1;;16462:15;:36:::0;;-1:-1:-1;;;;;;16462:36:0;;::::1;-1:-1:-1::0;;;;;16462:36:0;;::::1;::::0;;::::1;::::0;;;16513:9:::1;:24:::0;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;16552:39:0;;;:19:::1;:39;::::0;;;;;:46;;-1:-1:-1;;16552:46:0;;::::1;-1:-1:-1::0;16552:46:0;;::::1;::::0;;;16613:33;;;;;:40;;;;::::1;;::::0;;16399:266:::1;16275:397:::0;;:::o;13679:245::-;7064:15;;-1:-1:-1;;;;;7064:15:0;7083:10;7064:29;;:56;;-1:-1:-1;7097:9:0;;-1:-1:-1;;;;;7097:9:0;7110:10;7097:23;7064:56;7056:120;;;;-1:-1:-1;;;7056:120:0;;;;;;;:::i;:::-;13815:23:::1;:45:::0;;;;13871:23:::1;:45:::0;13679:245::o;10141:450::-;-1:-1:-1;;;;;10316:19:0;;10272:4;10316:19;;;:11;:19;;;;;;;;10336:10;10316:31;;;;;;;;10366:26;;;;10358:78;;;;-1:-1:-1;;;10358:78:0;;7242:2:1;10358:78:0;;;7224:21:1;7281:2;7261:18;;;7254:30;7320:34;7300:18;;;7293:62;-1:-1:-1;;;7371:18:1;;;7364:37;7418:19;;10358:78:0;7040:403:1;10358:78:0;10449:36;10459:6;10467:9;10478:6;10449:9;:36::i;:::-;10504:55;10513:6;10521:10;10552:6;10533:16;:25;10504:8;:55::i;:::-;-1:-1:-1;10579:4:0;;10141:450;-1:-1:-1;;;;10141:450:0:o;10599:211::-;10713:10;10687:4;10734:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;10734:32:0;;;;;;;;;;10687:4;;10704:76;;10725:7;;10734:45;;10769:10;;10734:45;:::i;:::-;10704:8;:76::i;8600:138::-;8653:7;8709:21;8727:1;8709:9;:21::i;:::-;8680:26;8698:6;8680:9;:26::i;:::-;:50;;;;:::i;:::-;8673:57;;8600:138;:::o;14872:300::-;6895:9;;-1:-1:-1;;;;;6895:9:0;6908:10;6895:23;;:47;;-1:-1:-1;6922:6:0;;;;;-1:-1:-1;;;;;6922:6:0;6932:10;6922:20;6895:47;6887:100;;;;-1:-1:-1;;;6887:100:0;;;;;;;:::i;:::-;14992:33:::1;15013:12:::0;14992:18;:33:::1;:::i;:::-;14977:12;:48:::0;;;15057:4:::1;-1:-1:-1::0;15038:127:0::1;;;15078:15;:36:::0;;;;15129:9:::1;:24:::0;14872:300::o;11762:435::-;6895:9;;-1:-1:-1;;;;;6895:9:0;6908:10;6895:23;;:47;;-1:-1:-1;6922:6:0;;;;;-1:-1:-1;;;;;6922:6:0;6932:10;6922:20;6895:47;6887:100;;;;-1:-1:-1;;;6887:100:0;;;;;;;:::i;:::-;11894:16:::1;:49:::0;;-1:-1:-1;;;;;;11894:49:0::1;-1:-1:-1::0;;;;;11894:49:0;::::1;;::::0;;11956:213;::::1;;;12019:16;::::0;::::1;;;;;;-1:-1:-1::0;;;;;12019:16:0::1;-1:-1:-1::0;;;;;12019:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12001:56:0::1;;12066:4;12073:16;::::0;::::1;;;;;;-1:-1:-1::0;;;;;12073:16:0::1;-1:-1:-1::0;;;;;12073:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12001:96;::::0;-1:-1:-1;;;;;;12001:96:0::1;::::0;;;;;;-1:-1:-1;;;;;8199:15:1;;;12001:96:0::1;::::0;::::1;8181:34:1::0;8251:15;;8231:18;;;8224:43;8116:18;;12001:96:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11987:11;:110:::0;;-1:-1:-1;;;;;;11987:110:0::1;-1:-1:-1::0;;;;;11987:110:0;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;12112:38:0;;;:25:::1;:38;::::0;;;;:45;;-1:-1:-1;;12112:45:0::1;-1:-1:-1::0;12112:45:0::1;::::0;;-1:-1:-1;;11762:435:0:o;12667:291::-;6895:9;;-1:-1:-1;;;;;6895:9:0;6908:10;6895:23;;:47;;-1:-1:-1;6922:6:0;;;;;-1:-1:-1;;;;;6922:6:0;6932:10;6922:20;6895:47;6887:100;;;;-1:-1:-1;;;6887:100:0;;;;;;;:::i;:::-;12808:15:::1;:33:::0;;;;12929:9:::1;:21:::0;12667:291::o;8996:118::-;-1:-1:-1;;;;;9088:18:0;9061:7;9088:18;;;:9;:18;;;;;;;8996:118::o;9209:148::-;6764:6;;;;;-1:-1:-1;;;;;6764:6:0;6774:10;6764:20;6756:62;;;;-1:-1:-1;;;6756:62:0;;;;;;;:::i;:::-;9300:6:::1;::::0;9279:40:::1;::::0;9316:1:::1;::::0;9300:6:::1;::::0;::::1;-1:-1:-1::0;;;;;9300:6:0::1;::::0;9279:40:::1;::::0;9316:1;;9279:40:::1;9330:6;:19:::0;;-1:-1:-1;;;;;;9330:19:0::1;::::0;;9209:148::o;14335:529::-;6895:9;;-1:-1:-1;;;;;6895:9:0;6908:10;6895:23;;:47;;-1:-1:-1;6922:6:0;;;;;-1:-1:-1;;;;;6922:6:0;6932:10;6922:20;6895:47;6887:100;;;;-1:-1:-1;;;6887:100:0;;;;;;;:::i;:::-;14504:33:::1;14525:12:::0;14504:18;:33:::1;:::i;:::-;14489:12;:48:::0;14564:35:::1;14586:13:::0;14564:19;:35:::1;:::i;:::-;14548:13;:51:::0;14616:12:::1;::::0;14631:4:::1;-1:-1:-1::0;14616:43:0;::::1;;;;14655:4;14639:13;;:20;14616:43;14612:245;;;14676:15;:36:::0;;;14727:9:::1;:24:::0;;;14766:16:::1;:38:::0;;;14819:10:::1;:26:::0;;;14612:245:::1;14335:529:::0;;;;:::o;16998:378::-;6764:6;;;;;-1:-1:-1;;;;;6764:6:0;6774:10;6764:20;6756:62;;;;-1:-1:-1;;;6756:62:0;;;;;;;:::i;:::-;17086:6:::1;17082:215;;;17152:12;17247:19:::0;;17201:1:::1;17247:19:::0;17232:12:::1;:34:::0;17082:215:::1;17307:13;:22:::0;;-1:-1:-1;;17307:22:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17347:21:::1;::::0;1212:41:1;;;17347:21:0::1;::::0;1200:2:1;1185:18;17347:21:0::1;;;;;;;16998:378:::0;;:::o;13354:317::-;6895:9;;-1:-1:-1;;;;;6895:9:0;6908:10;6895:23;;:47;;-1:-1:-1;6922:6:0;;;;;-1:-1:-1;;;;;6922:6:0;6932:10;6922:20;6895:47;6887:100;;;;-1:-1:-1;;;6887:100:0;;;;;;;:::i;:::-;13533:9:::1;13529:135;13548:19:::0;;::::1;13529:135;;;13624:28;13589:19;:32;13609:8;;13618:1;13609:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13589:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;13589:32:0;:63;;-1:-1:-1;;13589:63:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13569:3;::::1;::::0;::::1;:::i;:::-;;;;13529:135;;12471:184:::0;6895:9;;-1:-1:-1;;;;;6895:9:0;6908:10;6895:23;;:47;;-1:-1:-1;6922:6:0;;;;;-1:-1:-1;;;;;6922:6:0;6932:10;6922:20;6895:47;6887:100;;;;-1:-1:-1;;;6887:100:0;;;;;;;:::i;:::-;12612:11:::1;:35:::0;;-1:-1:-1;;;;;;12612:35:0::1;-1:-1:-1::0;;;;;12612:35:0;;;::::1;::::0;;;::::1;::::0;;12471:184::o;8394:95::-;8441:13;8474:7;8467:14;;;;;:::i;12209:254::-;6895:9;;-1:-1:-1;;;;;6895:9:0;6908:10;6895:23;;:47;;-1:-1:-1;6922:6:0;;;;;-1:-1:-1;;;;;6922:6:0;6932:10;6922:20;6895:47;6887:100;;;;-1:-1:-1;;;6887:100:0;;;;;;;:::i;:::-;12317:11:::1;::::0;-1:-1:-1;;;;;12309:19:0;;::::1;12317:11:::0;::::1;12309:19;12305:151;;-1:-1:-1::0;;;;;12345:31:0;::::1;;::::0;;;:25:::1;:31;::::0;;;;;:39;;-1:-1:-1;;12345:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;12404:40;;12345:39;;:31;12404:40:::1;::::0;::::1;12209:254:::0;;:::o;14094:129::-;7064:15;;-1:-1:-1;;;;;7064:15:0;7083:10;7064:29;;:56;;-1:-1:-1;7097:9:0;;-1:-1:-1;;;;;7097:9:0;7110:10;7097:23;7064:56;7056:120;;;;-1:-1:-1;;;7056:120:0;;;;;;;:::i;:::-;14185:16:::1;:30:::0;;;::::1;;;;-1:-1:-1::0;;14185:30:0;;::::1;::::0;;;::::1;::::0;;14094:129::o;13134:212::-;6895:9;;-1:-1:-1;;;;;6895:9:0;6908:10;6895:23;;:47;;-1:-1:-1;6922:6:0;;;;;-1:-1:-1;;;;;6922:6:0;6932:10;6922:20;6895:47;6887:100;;;;-1:-1:-1;;;6887:100:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13279:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:59;;-1:-1:-1;;13279:59:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13134:212::o;10818:382::-;10967:10;10911:4;10955:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;10955:32:0;;;;;;;;;;11006:35;;;;10998:84;;;;-1:-1:-1;;;10998:84:0;;9110:2:1;10998:84:0;;;9092:21:1;9149:2;9129:18;;;9122:30;9188:34;9168:18;;;9161:62;-1:-1:-1;;;9239:18:1;;;9232:34;9283:19;;10998:84:0;8908:400:1;10998:84:0;11103:65;11112:10;11124:7;11152:15;11133:16;:34;11103:8;:65::i;:::-;-1:-1:-1;11188:4:0;;10818:382;-1:-1:-1;;;10818:382:0:o;9616:199::-;9693:4;9745:40;9755:10;9767:9;9778:6;9745:9;:40::i;16680:184::-;6895:9;;-1:-1:-1;;;;;6895:9:0;6908:10;6895:23;;:47;;-1:-1:-1;6922:6:0;;;;;-1:-1:-1;;;;;6922:6:0;6932:10;6922:20;6895:47;6887:100;;;;-1:-1:-1;;;6887:100:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16803:39:0;;;::::1;;::::0;;;:30:::1;:39;::::0;;;;:53;;-1:-1:-1;;16803:53:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16680:184::o;8746:131::-;8800:7;8842:26;8860:6;8842:9;:26::i;:::-;8827:12;;:41;;;;:::i;25028:127::-;6895:9;;-1:-1:-1;;;;;6895:9:0;6908:10;6895:23;;:47;;-1:-1:-1;6922:6:0;;;;;-1:-1:-1;;;;;6922:6:0;6932:10;6922:20;6895:47;6887:100;;;;-1:-1:-1;;;6887:100:0;;;;;;;:::i;:::-;25105:9:::1;::::0;25097:50:::1;::::0;-1:-1:-1;;;;;25105:9:0;;::::1;::::0;25125:21:::1;25097:50:::0;::::1;;;::::0;25105:9:::1;25097:50:::0;25105:9;25097:50;25125:21;25105:9;25097:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;25028:127::o:0;15924:343::-;7064:15;;-1:-1:-1;;;;;7064:15:0;7083:10;7064:29;;:56;;-1:-1:-1;7097:9:0;;-1:-1:-1;;;;;7097:9:0;7110:10;7097:23;7064:56;7056:120;;;;-1:-1:-1;;;7056:120:0;;;;;;;:::i;:::-;16018:33:::1;16028:10;16040:2;16044:6;16018:9;:33::i;:::-;-1:-1:-1::0;;;;;16068:19:0;::::1;16082:4;16068:19;::::0;::::1;::::0;:44:::1;;-1:-1:-1::0;16097:15:0::1;::::0;-1:-1:-1;;;;;16091:21:0;;::::1;16097:15:::0;::::1;16091:21;;16068:44;:63;;;;-1:-1:-1::0;16122:9:0::1;::::0;-1:-1:-1;;;;;16116:15:0;;::::1;16122:9:::0;::::1;16116:15;;16068:63;:99;;;;-1:-1:-1::0;;;;;;16137:29:0;::::1;;::::0;;;:25:::1;:29;::::0;;;;;::::1;;16135:32;16068:99;16064:196;;;-1:-1:-1::0;;;;;16184:16:0;::::1;;::::0;;;:12:::1;:16;::::0;;;;:23;;-1:-1:-1;;16184:23:0::1;16203:4;16184:23;::::0;;15924:343;;:::o;25269:725::-;6895:9;;-1:-1:-1;;;;;6895:9:0;6908:10;6895:23;;:47;;-1:-1:-1;6922:6:0;;;;;-1:-1:-1;;;;;6922:6:0;6932:10;6922:20;6895:47;6887:100;;;;-1:-1:-1;;;6887:100:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25483:30:0;::::1;25508:4;25483:30;25479:447;;;25576:7;25548:24;25566:4;25548:9;:24::i;:::-;:35;25544:371;;;25623:1;25605:15;:19:::0;;;25643:9:::1;:13:::0;25544:371:::1;;;25782:9;;25764:15;;:27;;;;:::i;:::-;25745:15;::::0;25735:25:::1;::::0;:7;:25:::1;:::i;:::-;:57;;;;:::i;:::-;25716:15;;:77;;;;:::i;:::-;25698:15;:95:::0;;;25878:9:::1;::::0;25860:27:::1;::::0;::::1;:::i;:::-;25847:9;::::0;25837:19:::1;::::0;:7;:19:::1;:::i;:::-;:51;;;;:::i;:::-;25824:9;;:65;;;;:::i;:::-;25812:9;:77:::0;25544:371:::1;25967:9;::::0;25936:50:::1;::::0;-1:-1:-1;;;25936:50:0;;-1:-1:-1;;;;;25967:9:0;;::::1;25936:50;::::0;::::1;10144:51:1::0;10211:18;;;10204:34;;;25936:30:0;;::::1;::::0;::::1;::::0;10117:18:1;;25936:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25269:725:::0;;:::o;9365:243::-;6764:6;;;;;-1:-1:-1;;;;;6764:6:0;6774:10;6764:20;6756:62;;;;-1:-1:-1;;;6756:62:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9454:22:0;::::1;9446:70;;;::::0;-1:-1:-1;;;9446:70:0;;10701:2:1;9446:70:0::1;::::0;::::1;10683:21:1::0;10740:2;10720:18;;;10713:30;10779:34;10759:18;;;10752:62;-1:-1:-1;;;10830:18:1;;;10823:33;10873:19;;9446:70:0::1;10499:399:1::0;9446:70:0::1;9555:6;::::0;9534:38:::1;::::0;-1:-1:-1;;;;;9534:38:0;;::::1;::::0;9555:6:::1;::::0;::::1;;::::0;9534:38:::1;::::0;;;::::1;9583:6;:17:::0;;-1:-1:-1;;;;;9583:17:0;;::::1;;;-1:-1:-1::0;;;;;;9583:17:0;;::::1;::::0;;;::::1;::::0;;9365:243::o;15229:492::-;7064:15;;-1:-1:-1;;;;;7064:15:0;7083:10;7064:29;;:56;;-1:-1:-1;7097:9:0;;-1:-1:-1;;;;;7097:9:0;7110:10;7097:23;7064:56;7056:120;;;;-1:-1:-1;;;7056:120:0;;;;;;;:::i;:::-;15355:11:::1;15351:363;;;-1:-1:-1::0;;;;;15389:24:0;::::1;15408:4;15389:24;::::0;::::1;::::0;:54:::1;;-1:-1:-1::0;15428:15:0::1;::::0;-1:-1:-1;;;;;15417:26:0;;::::1;15428:15:::0;::::1;15417:26;;15389:54;:92;;;;-1:-1:-1::0;15472:9:0::1;::::0;-1:-1:-1;;;;;15461:20:0;;::::1;15472:9:::0;::::1;15461:20;;15389:92;:133;;;;-1:-1:-1::0;;;;;;15487:34:0;::::1;;::::0;;;:25:::1;:34;::::0;;;;;::::1;;15485:37;15389:133;15385:250;;;-1:-1:-1::0;;;;;15543:21:0;::::1;;::::0;;;:12:::1;:21;::::0;;;;:35;;-1:-1:-1;;15543:35:0::1;::::0;::::1;;;::::0;;16275:397;;:::o;15351:363::-:1;-1:-1:-1::0;;;;;15667:21:0;::::1;;::::0;;;:12:::1;:21;::::0;;;;:35;;;::::1;;-1:-1:-1::0;;15667:35:0;;::::1;;::::0;;15229:492;;:::o;11208:450::-;-1:-1:-1;;;;;11345:20:0;;11337:68;;;;-1:-1:-1;;;11337:68:0;;11105:2:1;11337:68:0;;;11087:21:1;11144:2;11124:18;;;11117:30;11183:34;11163:18;;;11156:62;-1:-1:-1;;;11234:18:1;;;11227:33;11277:19;;11337:68:0;10903:399:1;11337:68:0;-1:-1:-1;;;;;11424:21:0;;11416:67;;;;-1:-1:-1;;;11416:67:0;;11509:2:1;11416:67:0;;;11491:21:1;11548:2;11528:18;;;11521:30;11587:34;11567:18;;;11560:62;-1:-1:-1;;;11638:18:1;;;11631:31;11679:19;;11416:67:0;11307:397:1;11416:67:0;-1:-1:-1;;;;;11496:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11549:32;;2072:25:1;;;11549:32:0;;2045:18:1;11549:32:0;;;;;;;11208:450;;;:::o;17384:3865::-;17537:13;;;;17533:154;;-1:-1:-1;;;;;17576:36:0;;;;;;:30;:36;;;;;;;;17568:106;;;;-1:-1:-1;;;17568:106:0;;11911:2:1;17568:106:0;;;11893:21:1;11950:2;11930:18;;;11923:30;11989:34;11969:18;;;11962:62;12060:27;12040:18;;;12033:55;12105:19;;17568:106:0;11709:421:1;17568:106:0;-1:-1:-1;;;;;17723:15:0;;17699:21;17723:15;;;:9;:15;;;;;;17757:23;;;;17749:73;;;;-1:-1:-1;;;17749:73:0;;12337:2:1;17749:73:0;;;12319:21:1;12376:2;12356:18;;;12349:30;12415:34;12395:18;;;12388:62;-1:-1:-1;;;12466:18:1;;;12459:35;12511:19;;17749:73:0;12135:401:1;17749:73:0;-1:-1:-1;;;;;17841:15:0;;;;;;:9;:15;;;;;;;;17859:22;;;17841:40;;17899:12;:18;;;;;;;;17896:774;;;17971:12;;17955;:28;;17949:687;;-1:-1:-1;;;;;18017:19:0;;18031:4;18017:19;;;;:44;;-1:-1:-1;18046:15:0;;-1:-1:-1;;;;;18040:21:0;;;18046:15;;18040:21;;18017:44;:63;;;;-1:-1:-1;18071:9:0;;-1:-1:-1;;;;;18065:15:0;;;18071:9;;18065:15;;18017:63;18013:608;;;18105:23;18158:5;18140:15;;18131:6;:24;;;;:::i;:::-;:32;;;;:::i;:::-;18105:58;;18186:17;18227:5;18215:9;;18206:6;:18;;;;:::i;:::-;:26;;;;:::i;:::-;18186:46;;18264:53;18276:4;18282:6;18290:15;18307:9;18264:11;:53::i;:::-;18255:62;;18373:23;;18346:24;18364:4;18346:9;:24::i;:::-;:50;18342:131;;;18428:21;:19;:21::i;:::-;-1:-1:-1;;;;;18495:13:0;;;;;;:9;:13;;;;;:23;;18512:6;;18495:13;:23;;18512:6;;18495:23;:::i;:::-;;;;;;;;18561:2;-1:-1:-1;;;;;18546:26:0;18555:4;-1:-1:-1;;;;;18546:26:0;-1:-1:-1;;;;;;;;;;;18565:6:0;18546:26;;;;2072:25:1;;2060:2;2045:18;;1926:177;18546:26:0;;;;;;;;18595:7;;;17384:3865;;;:::o;18013:608::-;18701:12;;18685;:28;18682:277;;-1:-1:-1;;;;;18748:19:0;;18762:4;18748:19;;;;:44;;-1:-1:-1;18777:15:0;;-1:-1:-1;;;;;18771:21:0;;;18777:15;;18771:21;;18748:44;:63;;;;-1:-1:-1;18802:9:0;;-1:-1:-1;;;;;18796:15:0;;;18802:9;;18796:15;;18748:63;:99;;;;-1:-1:-1;;;;;;18817:29:0;;;;;;:25;:29;;;;;;;;18815:32;18748:99;18744:204;;;-1:-1:-1;;;;;18868:16:0;;;;;;:12;:16;;;;;:23;;-1:-1:-1;;18868:23:0;18887:4;18868:23;;;18744:204;-1:-1:-1;;;;;19023:25:0;;19007:12;19023:25;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;19052:23:0;;;;;;:19;:23;;;;;;;;19023:52;19022:69;;19087:4;19022:69;;;19079:5;19022:69;19007:84;;19107:7;19104:2060;;;-1:-1:-1;;;;;19138:31:0;;;;;;:25;:31;;;;;;;;19134:2011;;;-1:-1:-1;;;;;19213:16:0;;;;;;:12;:16;;;;;19232:12;19213:31;;19282:12;;:16;19278:294;;19346:23;19399:5;19381:15;;19372:6;:24;:32;;;;;:::i;:::-;;19346:58;;19423:17;19464:5;19452:9;;19443:6;:18;:26;;;;;:::i;:::-;;19423:46;;19497:53;19509:4;19515:6;19523:15;19540:9;19497:11;:53::i;:::-;19488:62;;19317:236;;19278:294;19134:2011;;;-1:-1:-1;;;;;19653:18:0;;;;;;:12;:18;;;;;;19675:12;19653:34;19649:989;;;-1:-1:-1;;;;;19718:21:0;;19734:4;19718:21;;;;:48;;-1:-1:-1;19751:15:0;;-1:-1:-1;;;;;19743:23:0;;;19751:15;;19743:23;;19718:48;:69;;;;-1:-1:-1;19778:9:0;;-1:-1:-1;;;;;19770:17:0;;;19778:9;;19770:17;;19718:69;:107;;;;-1:-1:-1;;;;;;19793:31:0;;;;;;:25;:31;;;;;;;;19791:34;19718:107;19714:905;;;-1:-1:-1;;;;;19854:18:0;;;;;;;:12;:18;;;;;:25;;-1:-1:-1;;19854:25:0;19875:4;19854:25;;;19912:19;;19926:4;19912:19;;;;:44;;-1:-1:-1;19941:15:0;;-1:-1:-1;;;;;19935:21:0;;;19941:15;;19935:21;;19912:44;:63;;;;-1:-1:-1;19966:9:0;;-1:-1:-1;;;;;19960:15:0;;;19966:9;;19960:15;;19912:63;19908:688;;;20008:23;20061:5;20043:15;;20034:6;:24;;;;:::i;:::-;:32;;;;:::i;:::-;20008:58;;20097:17;20138:5;20126:9;;20117:6;:18;;;;:::i;:::-;:26;;;;:::i;:::-;20097:46;;20183:53;20195:4;20201:6;20209:15;20226:9;20183:11;:53::i;:::-;20174:62;;20300:23;;20273:24;20291:4;20273:9;:24::i;:::-;:50;20269:147;;;20363:21;:19;:21::i;:::-;-1:-1:-1;;;;;20446:13:0;;;;;;:9;:13;;;;;:23;;20463:6;;20446:13;:23;;20463:6;;20446:23;:::i;:::-;;;;;;;;20520:2;-1:-1:-1;;;;;20505:26:0;20514:4;-1:-1:-1;;;;;20505:26:0;-1:-1:-1;;;;;;;;;;;20524:6:0;20505:26;;;;2072:25:1;;2060:2;2045:18;;1926:177;20505:26:0;;;;;;;;20562:7;;;;17384:3865;;;:::o;19908:688::-;20660:13;;:17;20656:331;;20724:23;20778:5;20759:16;;20750:6;:25;:33;;;;;:::i;:::-;;20724:59;;20821:17;20863:5;20850:10;;20841:6;:19;:27;;;;;:::i;:::-;;20821:47;;20896:53;20908:4;20914:6;20922:15;20939:9;20896:11;:53::i;:::-;20887:62;;20694:258;;20656:331;21038:23;;21011:24;21029:4;21011:9;:24::i;:::-;:50;21007:123;;;21089:21;:19;:21::i;:::-;-1:-1:-1;;;;;21176:13:0;;;;;;:9;:13;;;;;:23;;21193:6;;21176:13;:23;;21193:6;;21176:23;:::i;:::-;;;;;;;;21230:2;-1:-1:-1;;;;;21215:26:0;21224:4;-1:-1:-1;;;;;21215:26:0;-1:-1:-1;;;;;;;;;;;21234:6:0;21215:26;;;;2072:25:1;;2060:2;2045:18;;1926:177;21215:26:0;;;;;;;;17522:3727;;17384:3865;;;:::o;21257:922::-;21418:16;;21368:7;;21418:16;;;;;21414:717;;;21529:15;;;-1:-1:-1;;;;;21529:15:0;;;21519:26;;;;:9;:26;;;;;;;;;:45;;;;;;21614:15;;21599:48;;2072:25:1;;;21464:24:0;;;;:36;;;;21614:15;;;;21599:48;;;;-1:-1:-1;;;;;;;;;;;21599:48:0;2045:18:1;21599:48:0;;;;;;;21676:9;;;-1:-1:-1;;;;;21676:9:0;;;21666:20;;;;:9;:20;;;;;;;;;:33;;;;;;21740:9;;21725:36;;2072:25:1;;;21740:9:0;;;;21725:36;;;;-1:-1:-1;;;;;;;;;;;21725:36:0;2045:18:1;21725:36:0;;;;;;;21414:717;;;21804:15;:34;;;;;;21885:9;:22;;;;;;22040:4;-1:-1:-1;22022:24:0;;;:9;:24;;;;;;;;;:32;;21941:27;;;22022:32;;;;;;22080:35;;2072:25:1;;;21987:14:0;;;;;21941:27;;22040:4;-1:-1:-1;;;;;22080:35:0;;;-1:-1:-1;;;;;;;;;;;22080:35:0;2045:18:1;22080:35:0;;;;;;;21785:346;21414:717;-1:-1:-1;22154:6:0;;21257:922;-1:-1:-1;;;21257:922:0:o;22866:2084::-;23019:9;;23001:15;;:27;22975:23;23066:24;23084:4;23066:9;:24::i;:::-;23043:47;;23143:23;;23128:12;:38;23124:1817;;;-1:-1:-1;23205:23:0;;23243:30;23205:23;23243:16;:30::i;:::-;23291:18;23312:21;23291:42;;23393:22;23449:15;23431;;23418:10;:28;:46;;;;;:::i;:::-;23546:15;;23530:65;;23418:46;;;;;-1:-1:-1;23512:12:0;;-1:-1:-1;;;;;23546:15:0;;;;23418:46;;23512:12;23530:65;23512:12;23530:65;23418:46;23546:15;23530:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23511:84;;;23615:7;23612:254;;;23777:15;23759;;23744:12;:30;:48;;;;;:::i;:::-;;23725:15;;:68;23707:15;:86;;;;23612:254;23967:9;;23951:53;;23901:21;;-1:-1:-1;;;;;23967:9:0;;23901:21;;23951:53;;;;23901:21;23967:9;23951:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23937:67:0;;-1:-1:-1;;24021:115:0;;;;24104:15;24092:9;;24077:12;:24;:42;;;;;:::i;:::-;;24064:9;;:56;24052:9;:68;;;;24021:115;23168:981;;;;16275:397;;:::o;23124:1817::-;24170:30;24187:12;24170:16;:30::i;:::-;24218:18;24239:21;24218:42;;24320:22;24376:15;24358;;24345:10;:28;:46;;;;;:::i;:::-;24461:15;;24445:65;;24345:46;;;;;-1:-1:-1;24427:12:0;;-1:-1:-1;;;;;24461:15:0;;;;24345:46;;24427:12;24445:65;24427:12;24445:65;24345:46;24461:15;24445:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24426:84;;;24530:7;24527:188;;;24640:1;24622:15;:19;24527:188;24816:9;;24800:53;;24750:21;;-1:-1:-1;;;;;24816:9:0;;24750:21;;24800:53;;;;24750:21;24816:9;24800:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24786:67:0;;-1:-1:-1;;24870:60:0;;;;24913:1;24901:9;:13;24155:786;;;;22913:2030;;22866:2084::o;22187:637::-;22343:16;;;22357:1;22343:16;;;;;;;;22319:21;;22343:16;;;;;;;;;;-1:-1:-1;22343:16:0;22319:40;;22388:4;22370;22375:1;22370:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;22370:23:0;;;-1:-1:-1;;;;;22370:23:0;;;;;22414:16;;;;;;;;-1:-1:-1;;;;;22414:16:0;-1:-1:-1;;;;;22414:21:0;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22404:4;22409:1;22404:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22404:33:0;;;:7;;;;;;;;;:33;22482:16;;22450:63;;22467:4;;22482:16;22501:11;22450:8;:63::i;:::-;22526:16;;;:290;;-1:-1:-1;;;22526:290:0;;-1:-1:-1;;;;;22526:16:0;;;;:67;;:290;;22615:11;;22685:4;;22712;;22790:15;;22526:290;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:597:1;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1264:404::-;1348:6;1356;1409:2;1397:9;1388:7;1384:23;1380:32;1377:52;;;1425:1;1422;1415:12;1377:52;1464:9;1451:23;1483:31;1508:5;1483:31;:::i;:::-;1533:5;-1:-1:-1;1590:2:1;1575:18;;1562:32;1603:33;1562:32;1603:33;:::i;:::-;1655:7;1645:17;;;1264:404;;;;;:::o;1673:248::-;1741:6;1749;1802:2;1790:9;1781:7;1777:23;1773:32;1770:52;;;1818:1;1815;1808:12;1770:52;-1:-1:-1;;1841:23:1;;;1911:2;1896:18;;;1883:32;;-1:-1:-1;1673:248:1:o;2108:456::-;2185:6;2193;2201;2254:2;2242:9;2233:7;2229:23;2225:32;2222:52;;;2270:1;2267;2260:12;2222:52;2309:9;2296:23;2328:31;2353:5;2328:31;:::i;:::-;2378:5;-1:-1:-1;2435:2:1;2420:18;;2407:32;2448:33;2407:32;2448:33;:::i;:::-;2108:456;;2500:7;;-1:-1:-1;;;2554:2:1;2539:18;;;;2526:32;;2108:456::o;2758:118::-;2844:5;2837:13;2830:21;2823:5;2820:32;2810:60;;2866:1;2863;2856:12;2881:382;2946:6;2954;3007:2;2995:9;2986:7;2982:23;2978:32;2975:52;;;3023:1;3020;3013:12;2975:52;3062:9;3049:23;3081:31;3106:5;3081:31;:::i;:::-;3131:5;-1:-1:-1;3188:2:1;3173:18;;3160:32;3201:30;3160:32;3201:30;:::i;3268:247::-;3327:6;3380:2;3368:9;3359:7;3355:23;3351:32;3348:52;;;3396:1;3393;3386:12;3348:52;3435:9;3422:23;3454:31;3479:5;3454:31;:::i;:::-;3504:5;3268:247;-1:-1:-1;;;3268:247:1:o;3520:385::-;3606:6;3614;3622;3630;3683:3;3671:9;3662:7;3658:23;3654:33;3651:53;;;3700:1;3697;3690:12;3651:53;-1:-1:-1;;3723:23:1;;;3793:2;3778:18;;3765:32;;-1:-1:-1;3844:2:1;3829:18;;3816:32;;3895:2;3880:18;3867:32;;-1:-1:-1;3520:385:1;-1:-1:-1;3520:385:1:o;4118:309::-;4183:6;4191;4244:2;4232:9;4223:7;4219:23;4215:32;4212:52;;;4260:1;4257;4250:12;4212:52;4299:9;4286:23;4318:28;4340:5;4318:28;:::i;4432:750::-;4524:6;4532;4540;4593:2;4581:9;4572:7;4568:23;4564:32;4561:52;;;4609:1;4606;4599:12;4561:52;4649:9;4636:23;4678:18;4719:2;4711:6;4708:14;4705:34;;;4735:1;4732;4725:12;4705:34;4773:6;4762:9;4758:22;4748:32;;4818:7;4811:4;4807:2;4803:13;4799:27;4789:55;;4840:1;4837;4830:12;4789:55;4880:2;4867:16;4906:2;4898:6;4895:14;4892:34;;;4922:1;4919;4912:12;4892:34;4977:7;4970:4;4960:6;4957:1;4953:14;4949:2;4945:23;4941:34;4938:47;4935:67;;;4998:1;4995;4988:12;4935:67;5029:4;5021:13;;;;-1:-1:-1;5053:6:1;-1:-1:-1;;5094:20:1;;5081:34;5124:28;5081:34;5124:28;:::i;:::-;5171:5;5161:15;;;4432:750;;;;;:::o;5187:241::-;5243:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:52;;;5312:1;5309;5302:12;5264:52;5351:9;5338:23;5370:28;5392:5;5370:28;:::i;5826:380::-;5905:1;5901:12;;;;5948;;;5969:61;;6023:4;6015:6;6011:17;6001:27;;5969:61;6076:2;6068:6;6065:14;6045:18;6042:38;6039:161;;;6122:10;6117:3;6113:20;6110:1;6103:31;6157:4;6154:1;6147:15;6185:4;6182:1;6175:15;6039:161;;5826:380;;;:::o;6211:404::-;6413:2;6395:21;;;6452:2;6432:18;;;6425:30;6491:34;6486:2;6471:18;;6464:62;-1:-1:-1;;;6557:2:1;6542:18;;6535:38;6605:3;6590:19;;6211:404::o;6620:415::-;6822:2;6804:21;;;6861:2;6841:18;;;6834:30;6900:34;6895:2;6880:18;;6873:62;-1:-1:-1;;;6966:2:1;6951:18;;6944:49;7025:3;7010:19;;6620:415::o;7448:127::-;7509:10;7504:3;7500:20;7497:1;7490:31;7540:4;7537:1;7530:15;7564:4;7561:1;7554:15;7580:128;7620:3;7651:1;7647:6;7644:1;7641:13;7638:39;;;7657:18;;:::i;:::-;-1:-1:-1;7693:9:1;;7580:128::o;7713:251::-;7783:6;7836:2;7824:9;7815:7;7811:23;7807:32;7804:52;;;7852:1;7849;7842:12;7804:52;7884:9;7878:16;7903:31;7928:5;7903:31;:::i;8278:353::-;8480:2;8462:21;;;8519:2;8499:18;;;8492:30;8558:31;8553:2;8538:18;;8531:59;8622:2;8607:18;;8278:353::o;8636:127::-;8697:10;8692:3;8688:20;8685:1;8678:31;8728:4;8725:1;8718:15;8752:4;8749:1;8742:15;8768:135;8807:3;-1:-1:-1;;8828:17:1;;8825:43;;;8848:18;;:::i;:::-;-1:-1:-1;8895:1:1;8884:13;;8768:135::o;9313:125::-;9353:4;9381:1;9378;9375:8;9372:34;;;9386:18;;:::i;:::-;-1:-1:-1;9423:9:1;;9313:125::o;9443:168::-;9483:7;9549:1;9545;9541:6;9537:14;9534:1;9531:21;9526:1;9519:9;9512:17;9508:45;9505:71;;;9556:18;;:::i;:::-;-1:-1:-1;9596:9:1;;9443:168::o;9616:127::-;9677:10;9672:3;9668:20;9665:1;9658:31;9708:4;9705:1;9698:15;9732:4;9729:1;9722:15;9748:217;9788:1;9814;9804:132;;9858:10;9853:3;9849:20;9846:1;9839:31;9893:4;9890:1;9883:15;9921:4;9918:1;9911:15;9804:132;-1:-1:-1;9950:9:1;;9748:217::o;10249:245::-;10316:6;10369:2;10357:9;10348:7;10344:23;10340:32;10337:52;;;10385:1;10382;10375:12;10337:52;10417:9;10411:16;10436:28;10458:5;10436:28;:::i;12883:980::-;13145:4;13193:3;13182:9;13178:19;13224:6;13213:9;13206:25;13250:2;13288:6;13283:2;13272:9;13268:18;13261:34;13331:3;13326:2;13315:9;13311:18;13304:31;13355:6;13390;13384:13;13421:6;13413;13406:22;13459:3;13448:9;13444:19;13437:26;;13498:2;13490:6;13486:15;13472:29;;13519:1;13529:195;13543:6;13540:1;13537:13;13529:195;;;13608:13;;-1:-1:-1;;;;;13604:39:1;13592:52;;13699:15;;;;13664:12;;;;13640:1;13558:9;13529:195;;;-1:-1:-1;;;;;;;13780:32:1;;;;13775:2;13760:18;;13753:60;-1:-1:-1;;;13844:3:1;13829:19;13822:35;13741:3;12883:980;-1:-1:-1;;;12883:980:1:o

Swarm Source

ipfs://0b03b526625634a8d96b0e1bd061db0fa2e25f9a8791ea818fca514f8791abb6

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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