ETH Price: $2,907.32 (+0.85%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve240332202025-12-17 15:27:1140 days ago1765985231IN
0x21F34281...F3A028D8C
0 ETH0.000090621.94567048
Approve233280922025-09-09 21:00:35139 days ago1757451635IN
0x21F34281...F3A028D8C
0 ETH0.000014790.32010443
Approve232118182025-08-24 15:23:23155 days ago1756049003IN
0x21F34281...F3A028D8C
0 ETH0.000100652.1642434
Approve231735062025-08-19 7:04:35161 days ago1755587075IN
0x21F34281...F3A028D8C
0 ETH0.000005650.12151146
Approve173751242023-05-30 23:51:59972 days ago1685490719IN
0x21F34281...F3A028D8C
0 ETH0.0008325434.26964729
Approve170721532023-04-18 7:40:111015 days ago1681803611IN
0x21F34281...F3A028D8C
0 ETH0.0017244737.0711925
Approve170520472023-04-15 11:14:231017 days ago1681557263IN
0x21F34281...F3A028D8C
0 ETH0.0010923923.48320281
Approve170395262023-04-13 16:05:351019 days ago1681401935IN
0x21F34281...F3A028D8C
0 ETH0.002163646.51109658
Approve170385972023-04-13 12:40:111019 days ago1681389611IN
0x21F34281...F3A028D8C
0 ETH0.0014192230.46978371
Approve170357832023-04-13 2:03:351020 days ago1681351415IN
0x21F34281...F3A028D8C
0 ETH0.0012973828.02738097
Approve170345972023-04-12 21:32:471020 days ago1681335167IN
0x21F34281...F3A028D8C
0 ETH0.0009644120.73218581
Approve170329962023-04-12 16:05:591020 days ago1681315559IN
0x21F34281...F3A028D8C
0 ETH0.0018290239.56367457
Approve170315592023-04-12 11:13:111020 days ago1681297991IN
0x21F34281...F3A028D8C
0 ETH0.0011150723.97088473
Approve170310492023-04-12 9:30:231021 days ago1681291823IN
0x21F34281...F3A028D8C
0 ETH0.0009728320.91310506
Approve170260172023-04-11 16:26:351021 days ago1681230395IN
0x21F34281...F3A028D8C
0 ETH0.0015728933.81268841
Approve170244682023-04-11 11:09:471021 days ago1681211387IN
0x21F34281...F3A028D8C
0 ETH0.0010745623.1
Approve170242712023-04-11 10:29:471021 days ago1681208987IN
0x21F34281...F3A028D8C
0 ETH0.0010177221.8499841
Approve170239892023-04-11 9:32:351022 days ago1681205555IN
0x21F34281...F3A028D8C
0 ETH0.0009476820.34629729
Approve170237712023-04-11 8:47:591022 days ago1681202879IN
0x21F34281...F3A028D8C
0 ETH0.0008726418.759326
Approve170233912023-04-11 7:30:471022 days ago1681198247IN
0x21F34281...F3A028D8C
0 ETH0.0011039523.73175675
Approve170233742023-04-11 7:27:231022 days ago1681198043IN
0x21F34281...F3A028D8C
0 ETH0.001013621.92529999
Approve170216352023-04-11 1:31:471022 days ago1681176707IN
0x21F34281...F3A028D8C
0 ETH0.0010492422.52666705
Approve170212862023-04-11 0:21:231022 days ago1681172483IN
0x21F34281...F3A028D8C
0 ETH0.0010551922.68367953
Approve170204392023-04-10 21:28:591022 days ago1681162139IN
0x21F34281...F3A028D8C
0 ETH0.0014039230.18018344
Approve170193892023-04-10 17:54:231022 days ago1681149263IN
0x21F34281...F3A028D8C
0 ETH0.0010977923.59942242
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer233280952025-09-09 21:01:11139 days ago1757451671
0x21F34281...F3A028D8C
0.00124931 ETH
Transfer233280952025-09-09 21:01:11139 days ago1757451671
0x21F34281...F3A028D8C
0.00035387 ETH
Transfer233280952025-09-09 21:01:11139 days ago1757451671
0x21F34281...F3A028D8C
0.00018768 ETH
Add Liquidity ET...233280952025-09-09 21:01:11139 days ago1757451671
0x21F34281...F3A028D8C
0.00035387 ETH
Transfer233280952025-09-09 21:01:11139 days ago1757451671
0x21F34281...F3A028D8C
0.00176937 ETH
Transfer232118192025-08-24 15:23:35155 days ago1756049015
0x21F34281...F3A028D8C
0.00471796 ETH
Transfer232118192025-08-24 15:23:35155 days ago1756049015
0x21F34281...F3A028D8C
0.00130952 ETH
Transfer232118192025-08-24 15:23:35155 days ago1756049015
0x21F34281...F3A028D8C
0.00078938 ETH
Add Liquidity ET...232118192025-08-24 15:23:35155 days ago1756049015
0x21F34281...F3A028D8C
0.00130952 ETH
Transfer232118192025-08-24 15:23:35155 days ago1756049015
0x21F34281...F3A028D8C
0.00654764 ETH
Transfer170383102023-04-13 11:36:471019 days ago1681385807
0x21F34281...F3A028D8C
0.01544554 ETH
Transfer170383102023-04-13 11:36:471019 days ago1681385807
0x21F34281...F3A028D8C
0.0044819 ETH
Transfer170383102023-04-13 11:36:471019 days ago1681385807
0x21F34281...F3A028D8C
0.00199983 ETH
Add Liquidity ET...170383102023-04-13 11:36:471019 days ago1681385807
0x21F34281...F3A028D8C
0.0044819 ETH
Transfer170383102023-04-13 11:36:471019 days ago1681385807
0x21F34281...F3A028D8C
0.02240951 ETH
Transfer170249942023-04-11 12:57:111021 days ago1681217831
0x21F34281...F3A028D8C
0.02063294 ETH
Transfer170249942023-04-11 12:57:111021 days ago1681217831
0x21F34281...F3A028D8C
0.00598622 ETH
Transfer170249942023-04-11 12:57:111021 days ago1681217831
0x21F34281...F3A028D8C
0.00267427 ETH
Add Liquidity ET...170249942023-04-11 12:57:111021 days ago1681217831
0x21F34281...F3A028D8C
0.00598622 ETH
Transfer170249942023-04-11 12:57:111021 days ago1681217831
0x21F34281...F3A028D8C
0.0299311 ETH
Transfer170233812023-04-11 7:28:471022 days ago1681198127
0x21F34281...F3A028D8C
0.02100393 ETH
Transfer170233812023-04-11 7:28:471022 days ago1681198127
0x21F34281...F3A028D8C
0.00609378 ETH
Transfer170233812023-04-11 7:28:471022 days ago1681198127
0x21F34281...F3A028D8C
0.00272256 ETH
Add Liquidity ET...170233812023-04-11 7:28:471022 days ago1681198127
0x21F34281...F3A028D8C
0.00609378 ETH
Transfer170233812023-04-11 7:28:471022 days ago1681198127
0x21F34281...F3A028D8C
0.03046893 ETH
View All Internal Transactions
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

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

Contract Source Code Verified (Exact Match)

Contract Name:
KodaInu

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 99999 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 7: KodaInu.sol
// SPDX-License-Identifier: MIT

/*

**/

import './IERC20.sol';
import './SafeMath.sol';
import './Ownable.sol';
import './IUniswapV2Factory.sol';
import './IUniswapV2Router02.sol';

pragma solidity ^0.8.19;

contract KodaInu is Context, IERC20, Ownable {
    using SafeMath for uint256;
    IUniswapV2Router02 public uniswapV2Router;

    address public uniswapV2Pair;
    
    mapping (address => uint256) private balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;

    string private constant _name = "Koda Inu";
    string private constant _symbol = "KODA";
    uint8 private constant _decimals = 9;
    uint256 private _tTotal =  1000000000000  * 10**9;

    uint256 public _maxWalletAmount = 20000000000 * 10**9;
    uint256 public _maxTxAmount = 20000000000 * 10**9;

    bool public swapEnabled = true;
    uint256 public swapTokenAtAmount = 20000000000 * 10**9;
    bool public dynamicSwapAmount = true;
    
    uint256 targetLiquidity = 200;
    uint256 targetLiquidityDenominator = 100;

    address public liquidityReceiver;
    address public marketingWallet;
    address public utilityWallet;

    bool public limitsIsActive = true;

    struct BuyFees{
        uint256 liquidity;
        uint256 marketing;
        uint256 utility;
    }

    struct SellFees{
        uint256 liquidity;
        uint256 marketing;
        uint256 utility;
    }

    struct FeesDetails{
        uint256 tokenToLiquidity;
        uint256 tokenToMarketing;
        uint256 tokenToutility;
        uint256 liquidityToken;
        uint256 liquidityETH;
        uint256 marketingETH;
        uint256 utilityETH;
    }

    struct LiquidityDetails{
        uint256 targetLiquidity;
        uint256 currentLiquidity;
    }

    BuyFees public buyFeeDetails;
    SellFees public sellFeeDetails;
    FeesDetails public feeDistributionDetails;
    LiquidityDetails public liquidityDetails;

    bool private swapping;
    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity);

    constructor (address marketingAddress, address utilityAddress) {
        marketingWallet = marketingAddress;
        utilityWallet = utilityAddress;
        liquidityReceiver = msg.sender;
        balances[address(liquidityReceiver)] = _tTotal;
        
        buyFeeDetails.liquidity = 10;
        buyFeeDetails.marketing = 10;
        buyFeeDetails.utility = 0;

        sellFeeDetails.liquidity = 20;
        sellFeeDetails.marketing = 20;
        sellFeeDetails.utility = 0;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;
        
        _isExcludedFromFee[msg.sender] = true;
        _isExcludedFromFee[utilityWallet] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[address(0x00)] = true;
        _isExcludedFromFee[address(0xdead)] = true;

        
        emit Transfer(address(0), address(msg.sender), _tTotal);
    }

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

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

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

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }
    
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFee[address(account)] = excluded;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _tTotal.sub(balanceOf(address(0x00000))).sub(balanceOf(address(0x0dead)));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(address(uniswapV2Pair)).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

    receive() external payable {}
    
    function forceSwap(uint256 amount) public onlyOwner {
        swapBack(amount);
    }

    function removeTransactionAndWalletLimits() public onlyOwner {
        limitsIsActive = false;
    }

    function setFees(uint256 setBuyLiquidityFee, uint256 setBuyMarketingFee, uint256 setBuyUtility, uint256 setSellLiquidityFee, uint256 setSellMarketingFee, uint256 setSellUtility) public onlyOwner {
        require(setBuyLiquidityFee + setBuyMarketingFee + setBuyUtility <= 25, "Total buy fee cannot be set higher than 25%.");
        require(setSellLiquidityFee + setSellMarketingFee + setSellUtility<= 25, "Total sell fee cannot be set higher than 25%.");

        buyFeeDetails.liquidity = setBuyLiquidityFee;
        buyFeeDetails.marketing = setBuyMarketingFee;
        buyFeeDetails.utility = setBuyUtility;

        sellFeeDetails.liquidity = setSellLiquidityFee;
        sellFeeDetails.marketing = setSellMarketingFee;
        sellFeeDetails.utility = setSellUtility;
    }

    function setMaxTransactionAmount(uint256 maxTransactionAmount) public onlyOwner {
        require(maxTransactionAmount >= 5000000000, "Max Transaction cannot be set lower than 0.5%.");
        _maxTxAmount = maxTransactionAmount * 10**9;
    }

    function setMaxWalletAmount(uint256 maxWalletAmount) public onlyOwner {
        require(maxWalletAmount >= 10000000000, "Max Wallet cannot be set lower than 1%.");
        _maxWalletAmount = maxWalletAmount * 10**9;
    }

    function setSwapBackSettings(bool enabled, uint256 swapAtAmount, bool dynamicSwap) public onlyOwner {
        require(swapAtAmount <= 40000000000, "SwapTokenAtAmount cannot be set higher than 4%.");
        swapEnabled = enabled;
        swapTokenAtAmount = swapAtAmount * 10**9;
        dynamicSwapAmount = dynamicSwap;
    }

    function setLiquidityWallet(address newLiquidityWallet) public onlyOwner {
        liquidityReceiver = newLiquidityWallet;
    }

    function setMarketingWallet(address newMarketingWallet) public onlyOwner {
        marketingWallet = newMarketingWallet;
    }

    function setutilityWallet(address newutilityWallet) public onlyOwner {
        utilityWallet = newutilityWallet;
    }

    function takeBuyFees(uint256 amount, address from) private returns (uint256) {
        uint256 liquidityFeeToken = amount * buyFeeDetails.liquidity / 100; 
        uint256 marketingFeeTokens = amount * buyFeeDetails.marketing / 100;
        uint256 utilityTokens = amount * buyFeeDetails.utility /100;

        balances[address(this)] += liquidityFeeToken + marketingFeeTokens + utilityTokens;
        emit Transfer (from, address(this), marketingFeeTokens + liquidityFeeToken + utilityTokens);
        return (amount -liquidityFeeToken -marketingFeeTokens -utilityTokens);
    }

    function takeSellFees(uint256 amount, address from) private returns (uint256) {
        uint256 liquidityFeeToken = amount * buyFeeDetails.liquidity / 100; 
        uint256 marketingFeeTokens = amount * buyFeeDetails.marketing / 100;
        uint256 utilityTokens = amount * buyFeeDetails.utility /100;

        balances[address(this)] += liquidityFeeToken + marketingFeeTokens + utilityTokens;
        emit Transfer (from, address(this), marketingFeeTokens + liquidityFeeToken + utilityTokens);
        return (amount -liquidityFeeToken -marketingFeeTokens -utilityTokens);
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

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

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            takeFee = true;
        }

        if(takeFee){
            if(to != uniswapV2Pair && from == uniswapV2Pair){
                if(limitsIsActive) {
                    require(amount <= _maxTxAmount, "Transfer Amount exceeds the maxTxnsAmount");
                    require(balanceOf(to) + amount <= _maxWalletAmount, "Transfer amount exceeds the maxWalletAmount.");
                }
                transferAmount = takeBuyFees(amount, to);
            }

            if(from != uniswapV2Pair && to == uniswapV2Pair){
                if(limitsIsActive) {
                    require(amount <= _maxTxAmount, "Transfer Amount exceeds the maxTxnsAmount");
                }
                transferAmount = takeSellFees(amount, from);

               if (swapEnabled && balanceOf(address(this)) >= swapTokenAtAmount && !swapping) {
                    swapping = true;
                    if(!dynamicSwapAmount || transferAmount >= swapTokenAtAmount) {
                        swapBack(swapTokenAtAmount);
                    } else {
                        swapBack(transferAmount);
                    }
                    swapping = false;
              }
            }

            if(to != uniswapV2Pair && from != uniswapV2Pair){
                if(limitsIsActive) {
                    require(amount <= _maxTxAmount, "Transfer Amount exceeds the maxTxnsAmount");
                    require(balanceOf(to) + amount <= _maxWalletAmount, "Transfer amount exceeds the maxWalletAmount.");
                }
            }
        }
        
        balances[to] += transferAmount;
        emit Transfer(from, to, transferAmount);
    }
   
    function swapBack(uint256 amount) private {
        uint256 swapAmount = amount;
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : (buyFeeDetails.liquidity + sellFeeDetails.liquidity);
        uint256 liquidityTokens = swapAmount * (dynamicLiquidityFee) / (dynamicLiquidityFee + buyFeeDetails.marketing + sellFeeDetails.marketing + buyFeeDetails.utility + sellFeeDetails.utility);
        uint256 marketingTokens = swapAmount * (buyFeeDetails.marketing + sellFeeDetails.marketing) / (dynamicLiquidityFee + buyFeeDetails.marketing + sellFeeDetails.marketing + buyFeeDetails.utility + sellFeeDetails.utility);
        uint256 utilityTokens = swapAmount * (buyFeeDetails.utility + sellFeeDetails.utility) / ( dynamicLiquidityFee + buyFeeDetails.marketing + sellFeeDetails.marketing + buyFeeDetails.utility + sellFeeDetails.utility);
        feeDistributionDetails.tokenToLiquidity += liquidityTokens;
        feeDistributionDetails.tokenToMarketing += marketingTokens;
        feeDistributionDetails.tokenToutility += utilityTokens;

        uint256 totalTokensToSwap = liquidityTokens + marketingTokens + utilityTokens;
        
        uint256 tokensForLiquidity = liquidityTokens.div(2);
        feeDistributionDetails.liquidityToken += tokensForLiquidity;
        uint256 amountToSwapForETH = swapAmount.sub(tokensForLiquidity);
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH); 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        
        uint256 ethForLiquidity = ethBalance.mul(liquidityTokens).div(totalTokensToSwap);
        uint256 ethForUtility = ethBalance.mul(utilityTokens).div(totalTokensToSwap);
        feeDistributionDetails.liquidityETH += ethForLiquidity;
        feeDistributionDetails.utilityETH += ethForUtility;

        addLiquidity(tokensForLiquidity, ethForLiquidity);
        feeDistributionDetails.marketingETH += address(this).balance;
        (bool success,) = address(utilityWallet).call{value: ethForUtility}("");
        (success,) = address(marketingWallet).call{value: address(this).balance}("");
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH {value: ethAmount} (
            address(this),
            tokenAmount,
            0,
            0,
            liquidityReceiver,
            block.timestamp
        );
    }

    function withdrawForeignToken(address tokenContract) public onlyOwner {
        IERC20(tokenContract).transfer(address(msg.sender), IERC20(tokenContract).balanceOf(address(this)));
    }
}

File 2 of 7: Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

File 3 of 7: IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

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

File 4 of 7: IUniswapV2Factory.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

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

File 5 of 7: IUniswapV2Router02.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

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

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    )
        external payable;
}

File 6 of 7: Ownable.sol
// SPDX-License-Identifier: MIT

import './Context.sol';

pragma solidity ^0.8.19;

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

File 7 of 7: SafeMath.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"marketingAddress","type":"address"},{"internalType":"address","name":"utilityAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFeeDetails","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"utility","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"dynamicSwapAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDistributionDetails","outputs":[{"internalType":"uint256","name":"tokenToLiquidity","type":"uint256"},{"internalType":"uint256","name":"tokenToMarketing","type":"uint256"},{"internalType":"uint256","name":"tokenToutility","type":"uint256"},{"internalType":"uint256","name":"liquidityToken","type":"uint256"},{"internalType":"uint256","name":"liquidityETH","type":"uint256"},{"internalType":"uint256","name":"marketingETH","type":"uint256"},{"internalType":"uint256","name":"utilityETH","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"forceSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityDetails","outputs":[{"internalType":"uint256","name":"targetLiquidity","type":"uint256"},{"internalType":"uint256","name":"currentLiquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeTransactionAndWalletLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFeeDetails","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"utility","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"setBuyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"setBuyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"setBuyUtility","type":"uint256"},{"internalType":"uint256","name":"setSellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"setSellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"setSellUtility","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityWallet","type":"address"}],"name":"setLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTransactionAmount","type":"uint256"}],"name":"setMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint256","name":"swapAtAmount","type":"uint256"},{"internalType":"bool","name":"dynamicSwap","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newutilityWallet","type":"address"}],"name":"setutilityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokenAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"utilityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenContract","type":"address"}],"name":"withdrawForeignToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052683635c9adc5dea000006006556801158e460913d00000600781905560088190556009805460ff199081166001908117909255600a92909255600b805490921617905560c8600c556064600d556010805460ff60a01b1916600160a01b1790553480156200007157600080fd5b5060405162003629380380620036298339810160408190526200009491620003d0565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600f80546001600160a01b03199081166001600160a01b038581169190911790925560108054821692841692909217909155600e805433921682179055600654600091825260036020908152604080842092909255600a6011819055601255601383905560148080556015556016839055815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a0155926004808401938290030181865afa15801562000193573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b9919062000408565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000207573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022d919062000408565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200027b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a1919062000408565b600180546001600160a01b038086166001600160a01b03199283161783556002805482861693169290921790915533600081815260056020526040808220805460ff1990811687179091556010549094168252808220805485168617905530825280822080548516861790557f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc805485168617905561dead82527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba805490941690941790925560065492519394509290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620003a191815260200190565b60405180910390a3505050506200042d565b80516001600160a01b0381168114620003cb57600080fd5b919050565b60008060408385031215620003e457600080fd5b620003ef83620003b3565b9150620003ff60208401620003b3565b90509250929050565b6000602082840312156200041b57600080fd5b6200042682620003b3565b9392505050565b6131ec806200043d6000396000f3fe6080604052600436106102eb5760003560e01c80637202085a11610184578063a457c2d7116100d6578063d51ed1c81161008a578063ea65bad911610064578063ea65bad914610991578063f1e55257146109b1578063f2fde38b146109e357600080fd5b8063d51ed1c8146108ba578063dc35f3a8146108da578063dd62ed3e1461093e57600080fd5b8063acc6bc72116100bb578063acc6bc7214610853578063bf4cc52b1461086d578063c02466681461089a57600080fd5b8063a457c2d714610813578063a9059cbb1461083357600080fd5b806380471faa11610138578063885a4cd011610112578063885a4cd0146107825780638da5cb5b146107a257806395d89b41146107cd57600080fd5b806380471faa1461072357806384d521031461074257806386f6c3c11461076257600080fd5b806378a52a591161016957806378a52a59146106d85780637d1db4a5146106ed5780637daf4b2b1461070357600080fd5b80637202085a1461067157806375f0a874146106ab57600080fd5b8063296f0a0c1161023d5780635342acb4116101f15780636ddd1713116101cb5780636ddd1713146105ff57806370a0823114610619578063715018a61461065c57600080fd5b80635342acb4146105835780635d098b38146105c95780636c0a24eb146105e957600080fd5b8063313ce56711610222578063313ce5671461051a578063395093511461053657806349bd5a5e1461055657600080fd5b8063296f0a0c146104e55780632b112e491461050557600080fd5b80631694505e1161029f57806323b872dd1161027957806323b872dd14610478578063264d26dd1461049857806327a14fc2146104c557600080fd5b80631694505e146103ef57806318160ddd146104415780631e293c101461045657600080fd5b806307a130f7116102d057806307a130f71461036f578063095ea7b31461039f5780631161ae39146103cf57600080fd5b806303e403b0146102f757806306fdde031461032057600080fd5b366102f257005b600080fd5b34801561030357600080fd5b5061030d600a5481565b6040519081526020015b60405180910390f35b34801561032c57600080fd5b5060408051808201909152600881527f4b6f646120496e7500000000000000000000000000000000000000000000000060208201525b6040516103179190612d87565b34801561037b57600080fd5b50601e54601f5461038a919082565b60408051928352602083019190915201610317565b3480156103ab57600080fd5b506103bf6103ba366004612e15565b610a03565b6040519015158152602001610317565b3480156103db57600080fd5b506103bf6103ea366004612e41565b610a1a565b3480156103fb57600080fd5b5060015461041c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610317565b34801561044d57600080fd5b5060065461030d565b34801561046257600080fd5b50610476610471366004612e63565b610a2e565b005b34801561048457600080fd5b506103bf610493366004612e7c565b610b5d565b3480156104a457600080fd5b50600e5461041c9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104d157600080fd5b506104766104e0366004612e63565b610bbc565b3480156104f157600080fd5b50610476610500366004612ebd565b610ce6565b34801561051157600080fd5b5061030d610dae565b34801561052657600080fd5b5060405160098152602001610317565b34801561054257600080fd5b506103bf610551366004612e15565b610e1c565b34801561056257600080fd5b5060025461041c9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561058f57600080fd5b506103bf61059e366004612ebd565b73ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205460ff1690565b3480156105d557600080fd5b506104766105e4366004612ebd565b610e60565b3480156105f557600080fd5b5061030d60075481565b34801561060b57600080fd5b506009546103bf9060ff1681565b34801561062557600080fd5b5061030d610634366004612ebd565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b34801561066857600080fd5b50610476610f28565b34801561067d57600080fd5b5060145460155460165461069092919083565b60408051938452602084019290925290820152606001610317565b3480156106b757600080fd5b50600f5461041c9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156106e457600080fd5b50610476611018565b3480156106f957600080fd5b5061030d60085481565b34801561070f57600080fd5b5061047661071e366004612ee8565b6110c3565b34801561072f57600080fd5b5060115460125460135461069092919083565b34801561074e57600080fd5b5061047661075d366004612ebd565b611249565b34801561076e57600080fd5b5061047661077d366004612f2a565b611311565b34801561078e57600080fd5b5061047661079d366004612ebd565b6114f9565b3480156107ae57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661041c565b3480156107d957600080fd5b5060408051808201909152600481527f4b4f4441000000000000000000000000000000000000000000000000000000006020820152610362565b34801561081f57600080fd5b506103bf61082e366004612e15565b6116aa565b34801561083f57600080fd5b506103bf61084e366004612e15565b6116ee565b34801561085f57600080fd5b50600b546103bf9060ff1681565b34801561087957600080fd5b5060105461041c9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156108a657600080fd5b506104766108b5366004612f6d565b6116fb565b3480156108c657600080fd5b5061030d6108d5366004612e63565b6117d2565b3480156108e657600080fd5b50601754601854601954601a54601b54601c54601d546109099695949392919087565b604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e001610317565b34801561094a57600080fd5b5061030d610959366004612fa6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b34801561099d57600080fd5b506104766109ac366004612e63565b611823565b3480156109bd57600080fd5b506010546103bf9074010000000000000000000000000000000000000000900460ff1681565b3480156109ef57600080fd5b506104766109fe366004612ebd565b6118b0565b6000610a10338484611a61565b5060015b92915050565b600082610a26836117d2565b119392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ab4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b64012a05f200811015610b49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4d6178205472616e73616374696f6e2063616e6e6f7420626520736574206c6f60448201527f776572207468616e20302e35252e0000000000000000000000000000000000006064820152608401610aab565b610b5781633b9aca00613003565b60085550565b6000610b6a848484611c14565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033808552925290912054610bb2918691610bad90869061301a565b611a61565b5060019392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aab565b6402540be400811015610cd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d61782057616c6c65742063616e6e6f7420626520736574206c6f776572207460448201527f68616e2031252e000000000000000000000000000000000000000000000000006064820152608401610aab565b610ce081633b9aca00613003565b60075550565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aab565b600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c5460008080527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff546006549192610e17929091610e1191906124a1565b906124a1565b905090565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091610a10918590610bad90869061302d565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ee1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aab565b600f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610fa9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aab565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314611099576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aab565b601080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314611144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aab565b6409502f90008211156111d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f53776170546f6b656e4174416d6f756e742063616e6e6f74206265207365742060448201527f686967686572207468616e2034252e00000000000000000000000000000000006064820152608401610aab565b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001684151517905561121382633b9aca00613003565b600a55600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790555050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146112ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aab565b601080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314611392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aab565b60198461139f878961302d565b6113a9919061302d565b1115611437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f546f74616c20627579206665652063616e6e6f7420626520736574206869676860448201527f6572207468616e203235252e00000000000000000000000000000000000000006064820152608401610aab565b601981611444848661302d565b61144e919061302d565b11156114dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f546f74616c2073656c6c206665652063616e6e6f74206265207365742068696760448201527f686572207468616e203235252e000000000000000000000000000000000000006064820152608401610aab565b601195909555601293909355601391909155601455601555601655565b60005473ffffffffffffffffffffffffffffffffffffffff16331461157a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aab565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff82169063a9059cbb90339083906370a0823190602401602060405180830381865afa1580156115ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116129190613040565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af1158015611682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a69190613059565b5050565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091610a10918590610bad90869061301a565b6000610a10338484611c14565b60005473ffffffffffffffffffffffffffffffffffffffff16331461177c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aab565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6000610a146117df610dae565b6002805473ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205461181d9161181691906124ea565b85906124ea565b906125a2565b60005473ffffffffffffffffffffffffffffffffffffffff1633146118a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aab565b6118ad816125e4565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314611931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aab565b73ffffffffffffffffffffffffffffffffffffffff81166119d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610aab565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff8316611b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610aab565b73ffffffffffffffffffffffffffffffffffffffff8216611ba6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610aab565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611cb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610aab565b73ffffffffffffffffffffffffffffffffffffffff8216611d5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610aab565b60008111611dea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610aab565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054839290611e1f90849061301a565b909155505073ffffffffffffffffffffffffffffffffffffffff831660009081526005602052604081205482919060ff16158015611e83575073ffffffffffffffffffffffffffffffffffffffff841660009081526005602052604090205460ff16155b15611e8c575060015b80156123f75760025473ffffffffffffffffffffffffffffffffffffffff858116911614801590611ed7575060025473ffffffffffffffffffffffffffffffffffffffff8681169116145b156120665760105474010000000000000000000000000000000000000000900460ff161561205957600854831115611f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5472616e7366657220416d6f756e74206578636565647320746865206d61785460448201527f786e73416d6f756e7400000000000000000000000000000000000000000000006064820152608401610aab565b60075483611fc18673ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b611fcb919061302d565b1115612059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c6574416d6f756e742e00000000000000000000000000000000000000006064820152608401610aab565b612063838561292a565b91505b60025473ffffffffffffffffffffffffffffffffffffffff8681169116148015906120ab575060025473ffffffffffffffffffffffffffffffffffffffff8581169116145b1561222f5760105474010000000000000000000000000000000000000000900460ff161561216557600854831115612165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5472616e7366657220416d6f756e74206578636565647320746865206d61785460448201527f786e73416d6f756e7400000000000000000000000000000000000000000000006064820152608401610aab565b61216f838661292a565b60095490925060ff1680156121955750600a543060009081526003602052604090205410155b80156121a4575060205460ff16155b1561222f57602080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600b5460ff1615806121e85750600a548210155b156121fd576121f8600a546125e4565b612206565b612206826125e4565b602080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b60025473ffffffffffffffffffffffffffffffffffffffff858116911614801590612275575060025473ffffffffffffffffffffffffffffffffffffffff868116911614155b156123f75760105474010000000000000000000000000000000000000000900460ff16156123f75760085483111561232f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5472616e7366657220416d6f756e74206578636565647320746865206d61785460448201527f786e73416d6f756e7400000000000000000000000000000000000000000000006064820152608401610aab565b6007548361235f8673ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b612369919061302d565b11156123f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c6574416d6f756e742e00000000000000000000000000000000000000006064820152608401610aab565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061242c90849061302d565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161249291815260200190565b60405180910390a35050505050565b60006124e383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a51565b9392505050565b6000826000036124fc57506000610a14565b60006125088385613003565b9050826125158583613076565b146124e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610aab565b60006124e383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612aa5565b600081905060006125f9600c54600d54610a1a565b6126125760145460115461260d919061302d565b612615565b60005b601654601354601554601254939450600093612631908661302d565b61263b919061302d565b612645919061302d565b61264f919061302d565b6126598385613003565b6126639190613076565b60165460135460155460125493945060009361267f908761302d565b612689919061302d565b612693919061302d565b61269d919061302d565b6015546012546126ad919061302d565b6126b79086613003565b6126c19190613076565b6016546013546015546012549394506000936126dd908861302d565b6126e7919061302d565b6126f1919061302d565b6126fb919061302d565b60165460135461270b919061302d565b6127159087613003565b61271f9190613076565b90508260176000016000828254612736919061302d565b90915550506018805483919060009061275090849061302d565b90915550506019805482919060009061276a90849061302d565b90915550600090508161277d848661302d565b612787919061302d565b905060006127968560026125a2565b905080601760030160008282546127ad919061302d565b90915550600090506127bf88836124a1565b9050476127cb82612aed565b60006127d747836124a1565b905060006127e98661181d848c6124ea565b905060006127fb8761181d858b6124ea565b90508160176004016000828254612812919061302d565b9091555050601d805482919060009061282c90849061302d565b9091555061283c90508683612ca0565b4760176005016000828254612851919061302d565b909155505060105460405160009173ffffffffffffffffffffffffffffffffffffffff169083908381818185875af1925050503d80600081146128b0576040519150601f19603f3d011682016040523d82523d6000602084013e6128b5565b606091505b5050600f5460405191925073ffffffffffffffffffffffffffffffffffffffff16904790600081818185875af1925050503d8060008114612912576040519150601f19603f3d011682016040523d82523d6000602084013e612917565b606091505b5050505050505050505050505050505050565b6000806064601160000154856129409190613003565b61294a9190613076565b905060006064601160010154866129619190613003565b61296b9190613076565b905060006064601160020154876129829190613003565b61298c9190613076565b905080612999838561302d565b6129a3919061302d565b30600090815260036020526040812080549091906129c290849061302d565b9091555030905073ffffffffffffffffffffffffffffffffffffffff86167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83612a0c878761302d565b612a16919061302d565b60405190815260200160405180910390a38082612a33858961301a565b612a3d919061301a565b612a47919061301a565b9695505050505050565b60008184841115612a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aab9190612d87565b506000612a9c848661301a565b95945050505050565b60008183612ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aab9190612d87565b506000612a9c8486613076565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612b2257612b226130b1565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152600154604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612ba1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc591906130e0565b81600181518110612bd857612bd86130b1565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600154612c0b9130911684611a61565b6001546040517f791ac94700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063791ac94790612c6a9085906000908690309042906004016130fd565b600060405180830381600087803b158015612c8457600080fd5b505af1158015612c98573d6000803e3d6000fd5b505050505050565b600154612cc590309073ffffffffffffffffffffffffffffffffffffffff1684611a61565b600154600e546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101859052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff91821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612d5b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d809190613188565b5050505050565b600060208083528351808285015260005b81811015612db457858101830151858201604001528201612d98565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b73ffffffffffffffffffffffffffffffffffffffff811681146118ad57600080fd5b60008060408385031215612e2857600080fd5b8235612e3381612df3565b946020939093013593505050565b60008060408385031215612e5457600080fd5b50508035926020909101359150565b600060208284031215612e7557600080fd5b5035919050565b600080600060608486031215612e9157600080fd5b8335612e9c81612df3565b92506020840135612eac81612df3565b929592945050506040919091013590565b600060208284031215612ecf57600080fd5b81356124e381612df3565b80151581146118ad57600080fd5b600080600060608486031215612efd57600080fd5b8335612f0881612eda565b9250602084013591506040840135612f1f81612eda565b809150509250925092565b60008060008060008060c08789031215612f4357600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b60008060408385031215612f8057600080fd5b8235612f8b81612df3565b91506020830135612f9b81612eda565b809150509250929050565b60008060408385031215612fb957600080fd5b8235612fc481612df3565b91506020830135612f9b81612df3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610a1457610a14612fd4565b81810381811115610a1457610a14612fd4565b80820180821115610a1457610a14612fd4565b60006020828403121561305257600080fd5b5051919050565b60006020828403121561306b57600080fd5b81516124e381612eda565b6000826130ac577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156130f257600080fd5b81516124e381612df3565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561315a57845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101613128565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b60008060006060848603121561319d57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220c9cebab9168218688f5be3248bf41bd58b117ae1df9f55eaf0cbea7e6fa757e964736f6c6343000813003300000000000000000000000087049cfb96fc280eb04b558d079b7c979da514f3000000000000000000000000210f938abda121454ddc98c048a36dc878ac0ada

Deployed Bytecode

0x6080604052600436106102eb5760003560e01c80637202085a11610184578063a457c2d7116100d6578063d51ed1c81161008a578063ea65bad911610064578063ea65bad914610991578063f1e55257146109b1578063f2fde38b146109e357600080fd5b8063d51ed1c8146108ba578063dc35f3a8146108da578063dd62ed3e1461093e57600080fd5b8063acc6bc72116100bb578063acc6bc7214610853578063bf4cc52b1461086d578063c02466681461089a57600080fd5b8063a457c2d714610813578063a9059cbb1461083357600080fd5b806380471faa11610138578063885a4cd011610112578063885a4cd0146107825780638da5cb5b146107a257806395d89b41146107cd57600080fd5b806380471faa1461072357806384d521031461074257806386f6c3c11461076257600080fd5b806378a52a591161016957806378a52a59146106d85780637d1db4a5146106ed5780637daf4b2b1461070357600080fd5b80637202085a1461067157806375f0a874146106ab57600080fd5b8063296f0a0c1161023d5780635342acb4116101f15780636ddd1713116101cb5780636ddd1713146105ff57806370a0823114610619578063715018a61461065c57600080fd5b80635342acb4146105835780635d098b38146105c95780636c0a24eb146105e957600080fd5b8063313ce56711610222578063313ce5671461051a578063395093511461053657806349bd5a5e1461055657600080fd5b8063296f0a0c146104e55780632b112e491461050557600080fd5b80631694505e1161029f57806323b872dd1161027957806323b872dd14610478578063264d26dd1461049857806327a14fc2146104c557600080fd5b80631694505e146103ef57806318160ddd146104415780631e293c101461045657600080fd5b806307a130f7116102d057806307a130f71461036f578063095ea7b31461039f5780631161ae39146103cf57600080fd5b806303e403b0146102f757806306fdde031461032057600080fd5b366102f257005b600080fd5b34801561030357600080fd5b5061030d600a5481565b6040519081526020015b60405180910390f35b34801561032c57600080fd5b5060408051808201909152600881527f4b6f646120496e7500000000000000000000000000000000000000000000000060208201525b6040516103179190612d87565b34801561037b57600080fd5b50601e54601f5461038a919082565b60408051928352602083019190915201610317565b3480156103ab57600080fd5b506103bf6103ba366004612e15565b610a03565b6040519015158152602001610317565b3480156103db57600080fd5b506103bf6103ea366004612e41565b610a1a565b3480156103fb57600080fd5b5060015461041c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610317565b34801561044d57600080fd5b5060065461030d565b34801561046257600080fd5b50610476610471366004612e63565b610a2e565b005b34801561048457600080fd5b506103bf610493366004612e7c565b610b5d565b3480156104a457600080fd5b50600e5461041c9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104d157600080fd5b506104766104e0366004612e63565b610bbc565b3480156104f157600080fd5b50610476610500366004612ebd565b610ce6565b34801561051157600080fd5b5061030d610dae565b34801561052657600080fd5b5060405160098152602001610317565b34801561054257600080fd5b506103bf610551366004612e15565b610e1c565b34801561056257600080fd5b5060025461041c9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561058f57600080fd5b506103bf61059e366004612ebd565b73ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205460ff1690565b3480156105d557600080fd5b506104766105e4366004612ebd565b610e60565b3480156105f557600080fd5b5061030d60075481565b34801561060b57600080fd5b506009546103bf9060ff1681565b34801561062557600080fd5b5061030d610634366004612ebd565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b34801561066857600080fd5b50610476610f28565b34801561067d57600080fd5b5060145460155460165461069092919083565b60408051938452602084019290925290820152606001610317565b3480156106b757600080fd5b50600f5461041c9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156106e457600080fd5b50610476611018565b3480156106f957600080fd5b5061030d60085481565b34801561070f57600080fd5b5061047661071e366004612ee8565b6110c3565b34801561072f57600080fd5b5060115460125460135461069092919083565b34801561074e57600080fd5b5061047661075d366004612ebd565b611249565b34801561076e57600080fd5b5061047661077d366004612f2a565b611311565b34801561078e57600080fd5b5061047661079d366004612ebd565b6114f9565b3480156107ae57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661041c565b3480156107d957600080fd5b5060408051808201909152600481527f4b4f4441000000000000000000000000000000000000000000000000000000006020820152610362565b34801561081f57600080fd5b506103bf61082e366004612e15565b6116aa565b34801561083f57600080fd5b506103bf61084e366004612e15565b6116ee565b34801561085f57600080fd5b50600b546103bf9060ff1681565b34801561087957600080fd5b5060105461041c9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156108a657600080fd5b506104766108b5366004612f6d565b6116fb565b3480156108c657600080fd5b5061030d6108d5366004612e63565b6117d2565b3480156108e657600080fd5b50601754601854601954601a54601b54601c54601d546109099695949392919087565b604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e001610317565b34801561094a57600080fd5b5061030d610959366004612fa6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b34801561099d57600080fd5b506104766109ac366004612e63565b611823565b3480156109bd57600080fd5b506010546103bf9074010000000000000000000000000000000000000000900460ff1681565b3480156109ef57600080fd5b506104766109fe366004612ebd565b6118b0565b6000610a10338484611a61565b5060015b92915050565b600082610a26836117d2565b119392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ab4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b64012a05f200811015610b49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4d6178205472616e73616374696f6e2063616e6e6f7420626520736574206c6f60448201527f776572207468616e20302e35252e0000000000000000000000000000000000006064820152608401610aab565b610b5781633b9aca00613003565b60085550565b6000610b6a848484611c14565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033808552925290912054610bb2918691610bad90869061301a565b611a61565b5060019392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aab565b6402540be400811015610cd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d61782057616c6c65742063616e6e6f7420626520736574206c6f776572207460448201527f68616e2031252e000000000000000000000000000000000000000000000000006064820152608401610aab565b610ce081633b9aca00613003565b60075550565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aab565b600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c5460008080527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff546006549192610e17929091610e1191906124a1565b906124a1565b905090565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091610a10918590610bad90869061302d565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ee1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aab565b600f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610fa9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aab565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314611099576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aab565b601080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314611144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aab565b6409502f90008211156111d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f53776170546f6b656e4174416d6f756e742063616e6e6f74206265207365742060448201527f686967686572207468616e2034252e00000000000000000000000000000000006064820152608401610aab565b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001684151517905561121382633b9aca00613003565b600a55600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790555050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146112ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aab565b601080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314611392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aab565b60198461139f878961302d565b6113a9919061302d565b1115611437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f546f74616c20627579206665652063616e6e6f7420626520736574206869676860448201527f6572207468616e203235252e00000000000000000000000000000000000000006064820152608401610aab565b601981611444848661302d565b61144e919061302d565b11156114dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f546f74616c2073656c6c206665652063616e6e6f74206265207365742068696760448201527f686572207468616e203235252e000000000000000000000000000000000000006064820152608401610aab565b601195909555601293909355601391909155601455601555601655565b60005473ffffffffffffffffffffffffffffffffffffffff16331461157a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aab565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff82169063a9059cbb90339083906370a0823190602401602060405180830381865afa1580156115ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116129190613040565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af1158015611682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a69190613059565b5050565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091610a10918590610bad90869061301a565b6000610a10338484611c14565b60005473ffffffffffffffffffffffffffffffffffffffff16331461177c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aab565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6000610a146117df610dae565b6002805473ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205461181d9161181691906124ea565b85906124ea565b906125a2565b60005473ffffffffffffffffffffffffffffffffffffffff1633146118a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aab565b6118ad816125e4565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314611931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aab565b73ffffffffffffffffffffffffffffffffffffffff81166119d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610aab565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff8316611b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610aab565b73ffffffffffffffffffffffffffffffffffffffff8216611ba6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610aab565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611cb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610aab565b73ffffffffffffffffffffffffffffffffffffffff8216611d5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610aab565b60008111611dea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610aab565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054839290611e1f90849061301a565b909155505073ffffffffffffffffffffffffffffffffffffffff831660009081526005602052604081205482919060ff16158015611e83575073ffffffffffffffffffffffffffffffffffffffff841660009081526005602052604090205460ff16155b15611e8c575060015b80156123f75760025473ffffffffffffffffffffffffffffffffffffffff858116911614801590611ed7575060025473ffffffffffffffffffffffffffffffffffffffff8681169116145b156120665760105474010000000000000000000000000000000000000000900460ff161561205957600854831115611f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5472616e7366657220416d6f756e74206578636565647320746865206d61785460448201527f786e73416d6f756e7400000000000000000000000000000000000000000000006064820152608401610aab565b60075483611fc18673ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b611fcb919061302d565b1115612059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c6574416d6f756e742e00000000000000000000000000000000000000006064820152608401610aab565b612063838561292a565b91505b60025473ffffffffffffffffffffffffffffffffffffffff8681169116148015906120ab575060025473ffffffffffffffffffffffffffffffffffffffff8581169116145b1561222f5760105474010000000000000000000000000000000000000000900460ff161561216557600854831115612165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5472616e7366657220416d6f756e74206578636565647320746865206d61785460448201527f786e73416d6f756e7400000000000000000000000000000000000000000000006064820152608401610aab565b61216f838661292a565b60095490925060ff1680156121955750600a543060009081526003602052604090205410155b80156121a4575060205460ff16155b1561222f57602080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600b5460ff1615806121e85750600a548210155b156121fd576121f8600a546125e4565b612206565b612206826125e4565b602080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b60025473ffffffffffffffffffffffffffffffffffffffff858116911614801590612275575060025473ffffffffffffffffffffffffffffffffffffffff868116911614155b156123f75760105474010000000000000000000000000000000000000000900460ff16156123f75760085483111561232f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5472616e7366657220416d6f756e74206578636565647320746865206d61785460448201527f786e73416d6f756e7400000000000000000000000000000000000000000000006064820152608401610aab565b6007548361235f8673ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b612369919061302d565b11156123f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c6574416d6f756e742e00000000000000000000000000000000000000006064820152608401610aab565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061242c90849061302d565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161249291815260200190565b60405180910390a35050505050565b60006124e383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a51565b9392505050565b6000826000036124fc57506000610a14565b60006125088385613003565b9050826125158583613076565b146124e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610aab565b60006124e383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612aa5565b600081905060006125f9600c54600d54610a1a565b6126125760145460115461260d919061302d565b612615565b60005b601654601354601554601254939450600093612631908661302d565b61263b919061302d565b612645919061302d565b61264f919061302d565b6126598385613003565b6126639190613076565b60165460135460155460125493945060009361267f908761302d565b612689919061302d565b612693919061302d565b61269d919061302d565b6015546012546126ad919061302d565b6126b79086613003565b6126c19190613076565b6016546013546015546012549394506000936126dd908861302d565b6126e7919061302d565b6126f1919061302d565b6126fb919061302d565b60165460135461270b919061302d565b6127159087613003565b61271f9190613076565b90508260176000016000828254612736919061302d565b90915550506018805483919060009061275090849061302d565b90915550506019805482919060009061276a90849061302d565b90915550600090508161277d848661302d565b612787919061302d565b905060006127968560026125a2565b905080601760030160008282546127ad919061302d565b90915550600090506127bf88836124a1565b9050476127cb82612aed565b60006127d747836124a1565b905060006127e98661181d848c6124ea565b905060006127fb8761181d858b6124ea565b90508160176004016000828254612812919061302d565b9091555050601d805482919060009061282c90849061302d565b9091555061283c90508683612ca0565b4760176005016000828254612851919061302d565b909155505060105460405160009173ffffffffffffffffffffffffffffffffffffffff169083908381818185875af1925050503d80600081146128b0576040519150601f19603f3d011682016040523d82523d6000602084013e6128b5565b606091505b5050600f5460405191925073ffffffffffffffffffffffffffffffffffffffff16904790600081818185875af1925050503d8060008114612912576040519150601f19603f3d011682016040523d82523d6000602084013e612917565b606091505b5050505050505050505050505050505050565b6000806064601160000154856129409190613003565b61294a9190613076565b905060006064601160010154866129619190613003565b61296b9190613076565b905060006064601160020154876129829190613003565b61298c9190613076565b905080612999838561302d565b6129a3919061302d565b30600090815260036020526040812080549091906129c290849061302d565b9091555030905073ffffffffffffffffffffffffffffffffffffffff86167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83612a0c878761302d565b612a16919061302d565b60405190815260200160405180910390a38082612a33858961301a565b612a3d919061301a565b612a47919061301a565b9695505050505050565b60008184841115612a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aab9190612d87565b506000612a9c848661301a565b95945050505050565b60008183612ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aab9190612d87565b506000612a9c8486613076565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612b2257612b226130b1565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152600154604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612ba1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc591906130e0565b81600181518110612bd857612bd86130b1565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600154612c0b9130911684611a61565b6001546040517f791ac94700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063791ac94790612c6a9085906000908690309042906004016130fd565b600060405180830381600087803b158015612c8457600080fd5b505af1158015612c98573d6000803e3d6000fd5b505050505050565b600154612cc590309073ffffffffffffffffffffffffffffffffffffffff1684611a61565b600154600e546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101859052600060448201819052606482015273ffffffffffffffffffffffffffffffffffffffff91821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612d5b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d809190613188565b5050505050565b600060208083528351808285015260005b81811015612db457858101830151858201604001528201612d98565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b73ffffffffffffffffffffffffffffffffffffffff811681146118ad57600080fd5b60008060408385031215612e2857600080fd5b8235612e3381612df3565b946020939093013593505050565b60008060408385031215612e5457600080fd5b50508035926020909101359150565b600060208284031215612e7557600080fd5b5035919050565b600080600060608486031215612e9157600080fd5b8335612e9c81612df3565b92506020840135612eac81612df3565b929592945050506040919091013590565b600060208284031215612ecf57600080fd5b81356124e381612df3565b80151581146118ad57600080fd5b600080600060608486031215612efd57600080fd5b8335612f0881612eda565b9250602084013591506040840135612f1f81612eda565b809150509250925092565b60008060008060008060c08789031215612f4357600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b60008060408385031215612f8057600080fd5b8235612f8b81612df3565b91506020830135612f9b81612eda565b809150509250929050565b60008060408385031215612fb957600080fd5b8235612fc481612df3565b91506020830135612f9b81612df3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610a1457610a14612fd4565b81810381811115610a1457610a14612fd4565b80820180821115610a1457610a14612fd4565b60006020828403121561305257600080fd5b5051919050565b60006020828403121561306b57600080fd5b81516124e381612eda565b6000826130ac577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156130f257600080fd5b81516124e381612df3565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561315a57845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101613128565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b60008060006060848603121561319d57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220c9cebab9168218688f5be3248bf41bd58b117ae1df9f55eaf0cbea7e6fa757e964736f6c63430008130033

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

00000000000000000000000087049cfb96fc280eb04b558d079b7c979da514f3000000000000000000000000210f938abda121454ddc98c048a36dc878ac0ada

-----Decoded View---------------
Arg [0] : marketingAddress (address): 0x87049CFB96fc280Eb04b558d079B7c979DA514f3
Arg [1] : utilityAddress (address): 0x210f938ABda121454Ddc98c048a36dc878aC0ADa

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000087049cfb96fc280eb04b558d079b7c979da514f3
Arg [1] : 000000000000000000000000210f938abda121454ddc98c048a36dc878ac0ada


Deployed Bytecode Sourcemap

224:14986:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;941:54;;;;;;;;;;;;;;;;;;;160:25:7;;;148:2;133:18;941:54:4;;;;;;;;3365:83;;;;;;;;;;-1:-1:-1;3435:5:4;;;;;;;;;;;;;;;;;3365:83;;;;;;;:::i;2005:40::-;;;;;;;;;;-1:-1:-1;2005:40:4;;;;;;;;;;;;;982:25:7;;;1038:2;1023:18;;1016:34;;;;955:18;2005:40:4;808:248:7;4197:161:4;;;;;;;;;;-1:-1:-1;4197:161:4;;;;;:::i;:::-;;:::i;:::-;;;1705:14:7;;1698:22;1680:41;;1668:2;1653:18;4197:161:4;1540:187:7;5610:150:4;;;;;;;;;;-1:-1:-1;5610:150:4;;;;;:::i;:::-;;:::i;309:41::-;;;;;;;;;;-1:-1:-1;309:41:4;;;;;;;;;;;2187:42:7;2175:55;;;2157:74;;2145:2;2130:18;309:41:4;1985:252:7;3642:95:4;;;;;;;;;;-1:-1:-1;3722:7:4;;3642:95;;6812:246;;;;;;;;;;-1:-1:-1;6812:246:4;;;;;:::i;:::-;;:::i;:::-;;4366:266;;;;;;;;;;-1:-1:-1;4366:266:4;;;;;:::i;:::-;;:::i;1136:32::-;;;;;;;;;;-1:-1:-1;1136:32:4;;;;;;;;7066:224;;;;;;;;;;-1:-1:-1;7066:224:4;;;;;:::i;:::-;;:::i;7637:130::-;;;;;;;;;;-1:-1:-1;7637:130:4;;;;;:::i;:::-;;:::i;5248:161::-;;;;;;;;;;;;;:::i;3551:83::-;;;;;;;;;;-1:-1:-1;3551:83:4;;720:1;3513:36:7;;3501:2;3486:18;3551:83:4;3371:184:7;4640:215:4;;;;;;;;;;-1:-1:-1;4640:215:4;;;;;:::i;:::-;;:::i;359:28::-;;;;;;;;;;-1:-1:-1;359:28:4;;;;;;;;9230:123;;;;;;;;;;-1:-1:-1;9230:123:4;;;;;:::i;:::-;9318:27;;9294:4;9318:27;;;:18;:27;;;;;;;;;9230:123;7775:128;;;;;;;;;;-1:-1:-1;7775:128:4;;;;;:::i;:::-;;:::i;786:53::-;;;;;;;;;;;;;;;;904:30;;;;;;;;;;-1:-1:-1;904:30:4;;;;;;;;3745:118;;;;;;;;;;-1:-1:-1;3745:118:4;;;;;:::i;:::-;3838:17;;3811:7;3838:17;;;:8;:17;;;;;;;3745:118;624:148:5;;;;;;;;;;;;;:::i;1920:30:4:-;;;;;;;;;;-1:-1:-1;1920:30:4;;;;;;;;;;;;;;;;3762:25:7;;;3818:2;3803:18;;3796:34;;;;3846:18;;;3839:34;3750:2;3735:18;1920:30:4;3560:319:7;1175:30:4;;;;;;;;;;-1:-1:-1;1175:30:4;;;;;;;;5904:102;;;;;;;;;;;;;:::i;846:49::-;;;;;;;;;;;;;;;;7298:331;;;;;;;;;;-1:-1:-1;7298:331:4;;;;;:::i;:::-;;:::i;1885:28::-;;;;;;;;;;-1:-1:-1;1885:28:4;;;;;;;;;;;;7911:120;;;;;;;;;;-1:-1:-1;7911:120:4;;;;;:::i;:::-;;:::i;6014:790::-;;;;;;;;;;-1:-1:-1;6014:790:4;;;;;:::i;:::-;;:::i;15019:188::-;;;;;;;;;;-1:-1:-1;15019:188:4;;;;;:::i;:::-;;:::i;410:79:5:-;;;;;;;;;;-1:-1:-1;448:7:5;475:6;;;410:79;;3456:87:4;;;;;;;;;;-1:-1:-1;3528:7:4;;;;;;;;;;;;;;;;;3456:87;;4863:225;;;;;;;;;;-1:-1:-1;4863:225:4;;;;;:::i;:::-;;:::i;3871:167::-;;;;;;;;;;-1:-1:-1;3871:167:4;;;;;:::i;:::-;;:::i;1002:36::-;;;;;;;;;;-1:-1:-1;1002:36:4;;;;;;;;1212:28;;;;;;;;;;-1:-1:-1;1212:28:4;;;;;;;;5100:140;;;;;;;;;;-1:-1:-1;5100:140:4;;;;;:::i;:::-;;:::i;5417:185::-;;;;;;;;;;-1:-1:-1;5417:185:4;;;;;:::i;:::-;;:::i;1957:41::-;;;;;;;;;;-1:-1:-1;1957:41:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;5686:25:7;;;5742:2;5727:18;;5720:34;;;;5770:18;;;5763:34;;;;5828:2;5813:18;;5806:34;;;;5871:3;5856:19;;5849:35;5915:3;5900:19;;5893:35;5959:3;5944:19;;5937:35;5673:3;5658:19;1957:41:4;5371:607:7;4046:143:4;;;;;;;;;;-1:-1:-1;4046:143:4;;;;;:::i;:::-;4154:18;;;;4127:7;4154:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4046:143;5809:87;;;;;;;;;;-1:-1:-1;5809:87:4;;;;;:::i;:::-;;:::i;1249:33::-;;;;;;;;;;-1:-1:-1;1249:33:4;;;;;;;;;;;780:244:5;;;;;;;;;;-1:-1:-1;780:244:5;;;;;:::i;:::-;;:::i;4197:161:4:-;4272:4;4289:39;192:10:0;4312:7:4;4321:6;4289:8;:39::i;:::-;-1:-1:-1;4346:4:4;4197:161;;;;;:::o;5610:150::-;5690:4;5746:6;5714:29;5734:8;5714:19;:29::i;:::-;:38;;5610:150;-1:-1:-1;;;5610:150:4:o;6812:246::-;537:6:5;;:22;:6;192:10:0;537:22:5;529:67;;;;;;;6578:2:7;529:67:5;;;6560:21:7;;;6597:18;;;6590:30;6656:34;6636:18;;;6629:62;6708:18;;529:67:5;;;;;;;;;6935:10:4::1;6911:20;:34;;6903:93;;;::::0;::::1;::::0;;6939:2:7;6903:93:4::1;::::0;::::1;6921:21:7::0;6978:2;6958:18;;;6951:30;7017:34;6997:18;;;6990:62;7088:16;7068:18;;;7061:44;7122:19;;6903:93:4::1;6737:410:7::0;6903:93:4::1;7022:28;:20:::0;7045:5:::1;7022:28;:::i;:::-;7007:12;:43:::0;-1:-1:-1;6812:246:4:o;4366:266::-;4464:4;4481:36;4491:6;4499:9;4510:6;4481:9;:36::i;:::-;4559:19;;;;;;;:11;:19;;;;;;;;192:10:0;4559:33:4;;;;;;;;;4528:74;;4537:6;;4559:42;;4595:6;;4559:42;:::i;:::-;4528:8;:74::i;:::-;-1:-1:-1;4620:4:4;4366:266;;;;;:::o;7066:224::-;537:6:5;;:22;:6;192:10:0;537:22:5;529:67;;;;;;;6578:2:7;529:67:5;;;6560:21:7;;;6597:18;;;6590:30;6656:34;6636:18;;;6629:62;6708:18;;529:67:5;6376:356:7;529:67:5;7174:11:4::1;7155:15;:30;;7147:82;;;::::0;::::1;::::0;;7849:2:7;7147:82:4::1;::::0;::::1;7831:21:7::0;7888:2;7868:18;;;7861:30;7927:34;7907:18;;;7900:62;7998:9;7978:18;;;7971:37;8025:19;;7147:82:4::1;7647:403:7::0;7147:82:4::1;7259:23;:15:::0;7277:5:::1;7259:23;:::i;:::-;7240:16;:42:::0;-1:-1:-1;7066:224:4:o;7637:130::-;537:6:5;;:22;:6;192:10:0;537:22:5;529:67;;;;;;;6578:2:7;529:67:5;;;6560:21:7;;;6597:18;;;6590:30;6656:34;6636:18;;;6629:62;6708:18;;529:67:5;6376:356:7;529:67:5;7721:17:4::1;:38:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;7637:130::o;5248:161::-;3838:8;:17;;;;5301:7;3838:17;;;;;5328:7;;5301;;5328:73;;3838:17;;5328:40;;:7;:11;:40::i;:::-;:44;;:73::i;:::-;5321:80;;5248:161;:::o;4640:215::-;192:10:0;4728:4:4;4777:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;4728:4;;4745:80;;4768:7;;4777:47;;4814:10;;4777:47;:::i;7775:128::-;537:6:5;;:22;:6;192:10:0;537:22:5;529:67;;;;;;;6578:2:7;529:67:5;;;6560:21:7;;;6597:18;;;6590:30;6656:34;6636:18;;;6629:62;6708:18;;529:67:5;6376:356:7;529:67:5;7859:15:4::1;:36:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;7775:128::o;624:148:5:-;537:6;;:22;:6;192:10:0;537:22:5;529:67;;;;;;;6578:2:7;529:67:5;;;6560:21:7;;;6597:18;;;6590:30;6656:34;6636:18;;;6629:62;6708:18;;529:67:5;6376:356:7;529:67:5;731:1:::1;715:6:::0;;694:40:::1;::::0;::::1;715:6:::0;;::::1;::::0;694:40:::1;::::0;731:1;;694:40:::1;762:1;745:19:::0;;;::::1;::::0;;624:148::o;5904:102:4:-;537:6:5;;:22;:6;192:10:0;537:22:5;529:67;;;;;;;6578:2:7;529:67:5;;;6560:21:7;;;6597:18;;;6590:30;6656:34;6636:18;;;6629:62;6708:18;;529:67:5;6376:356:7;529:67:5;5976:14:4::1;:22:::0;;;::::1;::::0;;5904:102::o;7298:331::-;537:6:5;;:22;:6;192:10:0;537:22:5;529:67;;;;;;;6578:2:7;529:67:5;;;6560:21:7;;;6597:18;;;6590:30;6656:34;6636:18;;;6629:62;6708:18;;529:67:5;6376:356:7;529:67:5;7433:11:4::1;7417:12;:27;;7409:87;;;::::0;::::1;::::0;;8387:2:7;7409:87:4::1;::::0;::::1;8369:21:7::0;8426:2;8406:18;;;8399:30;8465:34;8445:18;;;8438:62;8536:17;8516:18;;;8509:45;8571:19;;7409:87:4::1;8185:411:7::0;7409:87:4::1;7507:11;:21:::0;;;::::1;::::0;::::1;;;::::0;;7559:20:::1;:12:::0;7574:5:::1;7559:20;:::i;:::-;7539:17;:40:::0;7590:17:::1;:31:::0;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;;7298:331:4:o;7911:120::-;537:6:5;;:22;:6;192:10:0;537:22:5;529:67;;;;;;;6578:2:7;529:67:5;;;6560:21:7;;;6597:18;;;6590:30;6656:34;6636:18;;;6629:62;6708:18;;529:67:5;6376:356:7;529:67:5;7991:13:4::1;:32:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;7911:120::o;6014:790::-;537:6:5;;:22;:6;192:10:0;537:22:5;529:67;;;;;;;6578:2:7;529:67:5;;;6560:21:7;;;6597:18;;;6590:30;6656:34;6636:18;;;6629:62;6708:18;;529:67:5;6376:356:7;529:67:5;6287:2:4::1;6270:13:::0;6228:39:::1;6249:18:::0;6228;:39:::1;:::i;:::-;:55;;;;:::i;:::-;:61;;6220:118;;;::::0;::::1;::::0;;8803:2:7;6220:118:4::1;::::0;::::1;8785:21:7::0;8842:2;8822:18;;;8815:30;8881:34;8861:18;;;8854:62;8952:14;8932:18;;;8925:42;8984:19;;6220:118:4::1;8601:408:7::0;6220:118:4::1;6418:2;6401:14:::0;6357:41:::1;6379:19:::0;6357;:41:::1;:::i;:::-;:58;;;;:::i;:::-;:63;;6349:121;;;::::0;::::1;::::0;;9216:2:7;6349:121:4::1;::::0;::::1;9198:21:7::0;9255:2;9235:18;;;9228:30;9294:34;9274:18;;;9267:62;9365:15;9345:18;;;9338:43;9398:19;;6349:121:4::1;9014:409:7::0;6349:121:4::1;6483:13;:44:::0;;;;6538:23;:44;;;;6593:21;:37;;;;6643:14:::1;:46:::0;6700:24;:46;6757:22;:39;6014:790::o;15019:188::-;537:6:5;;:22;:6;192:10:0;537:22:5;529:67;;;;;;;6578:2:7;529:67:5;;;6560:21:7;;;6597:18;;;6590:30;6656:34;6636:18;;;6629:62;6708:18;;529:67:5;6376:356:7;529:67:5;15152:46:4::1;::::0;;;;15192:4:::1;15152:46;::::0;::::1;2157:74:7::0;15100:30:4::1;::::0;::::1;::::0;::::1;::::0;15139:10:::1;::::0;15100:30;;15152:31:::1;::::0;2130:18:7;;15152:46:4::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15100:99;::::0;;::::1;::::0;;;;;;9821:42:7;9809:55;;;15100:99:4::1;::::0;::::1;9791:74:7::0;9881:18;;;9874:34;9764:18;;15100:99:4::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15019:188:::0;:::o;4863:225::-;192:10:0;4956:4:4;5005:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;4956:4;;4973:85;;4996:7;;5005:52;;5042:15;;5005:52;:::i;3871:167::-;3949:4;3966:42;192:10:0;3990:9:4;4001:6;3966:9;:42::i;5100:140::-;537:6:5;;:22;:6;192:10:0;537:22:5;529:67;;;;;;;6578:2:7;529:67:5;;;6560:21:7;;;6597:18;;;6590:30;6656:34;6636:18;;;6629:62;6708:18;;529:67:5;6376:356:7;529:67:5;5185:36:4::1;::::0;;;::::1;;::::0;;;:18:::1;:36;::::0;;;;:47;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;5100:140::o;5417:185::-;5485:7;5512:82;5571:22;:20;:22::i;:::-;5563:1;5543:13;;;;3811:7;3838:17;;;:8;:17;;;;;;5512:54;;5525:40;;:37;;:40::i;:::-;5512:8;;:12;:54::i;:::-;:58;;:82::i;5809:87::-;537:6:5;;:22;:6;192:10:0;537:22:5;529:67;;;;;;;6578:2:7;529:67:5;;;6560:21:7;;;6597:18;;;6590:30;6656:34;6636:18;;;6629:62;6708:18;;529:67:5;6376:356:7;529:67:5;5872:16:4::1;5881:6;5872:8;:16::i;:::-;5809:87:::0;:::o;780:244:5:-;537:6;;:22;:6;192:10:0;537:22:5;529:67;;;;;;;6578:2:7;529:67:5;;;6560:21:7;;;6597:18;;;6590:30;6656:34;6636:18;;;6629:62;6708:18;;529:67:5;6376:356:7;529:67:5;869:22:::1;::::0;::::1;861:73;;;::::0;::::1;::::0;;10371:2:7;861:73:5::1;::::0;::::1;10353:21:7::0;10410:2;10390:18;;;10383:30;10449:34;10429:18;;;10422:62;10520:8;10500:18;;;10493:36;10546:19;;861:73:5::1;10169:402:7::0;861:73:5::1;971:6;::::0;;950:38:::1;::::0;::::1;::::0;;::::1;::::0;971:6;::::1;::::0;950:38:::1;::::0;::::1;999:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;780:244::o;9361:337:4:-;9454:19;;;9446:68;;;;;;;10778:2:7;9446:68:4;;;10760:21:7;10817:2;10797:18;;;10790:30;10856:34;10836:18;;;10829:62;10927:6;10907:18;;;10900:34;10951:19;;9446:68:4;10576:400:7;9446:68:4;9533:21;;;9525:68;;;;;;;11183:2:7;9525:68:4;;;11165:21:7;11222:2;11202:18;;;11195:30;11261:34;11241:18;;;11234:62;11332:4;11312:18;;;11305:32;11354:19;;9525:68:4;10981:398:7;9525:68:4;9606:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9658:32;;160:25:7;;;9658:32:4;;133:18:7;9658:32:4;;;;;;;9361:337;;;:::o;9706:2212::-;9828:18;;;9820:68;;;;;;;11586:2:7;9820:68:4;;;11568:21:7;11625:2;11605:18;;;11598:30;11664:34;11644:18;;;11637:62;11735:7;11715:18;;;11708:35;11760:19;;9820:68:4;11384:401:7;9820:68:4;9907:16;;;9899:64;;;;;;;11992:2:7;9899:64:4;;;11974:21:7;12031:2;12011:18;;;12004:30;12070:34;12050:18;;;12043:62;12141:5;12121:18;;;12114:33;12164:19;;9899:64:4;11790:399:7;9899:64:4;9991:1;9982:6;:10;9974:64;;;;;;;12396:2:7;9974:64:4;;;12378:21:7;12435:2;12415:18;;;12408:30;12474:34;12454:18;;;12447:62;12545:11;12525:18;;;12518:39;12574:19;;9974:64:4;12194:405:7;9974:64:4;10059:14;;;;;;;:8;:14;;;;;:24;;10077:6;;10059:14;:24;;10077:6;;10059:24;:::i;:::-;;;;-1:-1:-1;;10175:24:4;;;10094:22;10175:24;;;:18;:24;;;;;;10119:6;;10094:22;10175:24;;10174:25;:52;;;;-1:-1:-1;10204:22:4;;;;;;;:18;:22;;;;;;;;10203:23;10174:52;10171:97;;;-1:-1:-1;10252:4:4;10171:97;10283:7;10280:1530;;;10315:13;;;10309:19;;;10315:13;;10309:19;;;;:44;;-1:-1:-1;10340:13:4;;;10332:21;;;10340:13;;10332:21;10309:44;10306:401;;;10376:14;;;;;;;10373:260;;;10433:12;;10423:6;:22;;10415:76;;;;;;;12806:2:7;10415:76:4;;;12788:21:7;12845:2;12825:18;;;12818:30;12884:34;12864:18;;;12857:62;12955:11;12935:18;;;12928:39;12984:19;;10415:76:4;12604:405:7;10415:76:4;10548:16;;10538:6;10522:13;10532:2;3838:17;;3811:7;3838:17;;;:8;:17;;;;;;;3745:118;10522:13;:22;;;;:::i;:::-;:42;;10514:99;;;;;;;13216:2:7;10514:99:4;;;13198:21:7;13255:2;13235:18;;;13228:30;13294:34;13274:18;;;13267:62;13365:14;13345:18;;;13338:42;13397:19;;10514:99:4;13014:408:7;10514:99:4;10668:23;10680:6;10688:2;10668:11;:23::i;:::-;10651:40;;10306:401;10734:13;;;10726:21;;;10734:13;;10726:21;;;;:44;;-1:-1:-1;10757:13:4;;;10751:19;;;10757:13;;10751:19;10726:44;10723:718;;;10793:14;;;;;;;10790:138;;;10850:12;;10840:6;:22;;10832:76;;;;;;;12806:2:7;10832:76:4;;;12788:21:7;12845:2;12825:18;;;12818:30;12884:34;12864:18;;;12857:62;12955:11;12935:18;;;12928:39;12984:19;;10832:76:4;12604:405:7;10832:76:4;10963:26;10976:6;10984:4;10963:12;:26::i;:::-;11013:11;;10946:43;;-1:-1:-1;11013:11:4;;:60;;;;-1:-1:-1;11056:17:4;;11046:4;3811:7;3838:17;;;:8;:17;;;;;;11028:45;;11013:60;:73;;;;-1:-1:-1;11078:8:4;;;;11077:9;11013:73;11009:417;;;11111:8;:15;;;;11122:4;11111:15;;;11153:17;;11111:15;11153:17;11152:18;;:57;;;11192:17;;11174:14;:35;;11152:57;11149:221;;;11238:27;11247:17;;11238:8;:27::i;:::-;11149:221;;;11322:24;11331:14;11322:8;:24::i;:::-;11392:8;:16;;;;;;11009:417;11466:13;;;11460:19;;;11466:13;;11460:19;;;;:44;;-1:-1:-1;11491:13:4;;;11483:21;;;11491:13;;11483:21;;11460:44;11457:342;;;11527:14;;;;;;;11524:260;;;11584:12;;11574:6;:22;;11566:76;;;;;;;12806:2:7;11566:76:4;;;12788:21:7;12845:2;12825:18;;;12818:30;12884:34;12864:18;;;12857:62;12955:11;12935:18;;;12928:39;12984:19;;11566:76:4;12604:405:7;11566:76:4;11699:16;;11689:6;11673:13;11683:2;3838:17;;3811:7;3838:17;;;:8;:17;;;;;;;3745:118;11673:13;:22;;;;:::i;:::-;:42;;11665:99;;;;;;;13216:2:7;11665:99:4;;;13198:21:7;13255:2;13235:18;;;13228:30;13294:34;13274:18;;;13267:62;13365:14;13345:18;;;13338:42;13397:19;;11665:99:4;13014:408:7;11665:99:4;11830:12;;;;;;;:8;:12;;;;;:30;;11846:14;;11830:12;:30;;11846:14;;11830:30;:::i;:::-;;;;;;;;11891:2;11876:34;;11885:4;11876:34;;;11895:14;11876:34;;;;160:25:7;;148:2;133:18;;14:177;11876:34:4;;;;;;;;9809:2109;;9706:2212;;;:::o;276:136:6:-;334:7;361:43;365:1;368;361:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;354:50;276:136;-1:-1:-1;;;276:136:6:o;620:250::-;678:7;702:1;707;702:6;698:47;;-1:-1:-1;732:1:6;725:8;;698:47;757:9;769:5;773:1;769;:5;:::i;:::-;757:17;-1:-1:-1;802:1:6;793:5;797:1;757:17;793:5;:::i;:::-;:10;785:56;;;;;;;13908:2:7;785:56:6;;;13890:21:7;13947:2;13927:18;;;13920:30;13986:34;13966:18;;;13959:62;14057:3;14037:18;;;14030:31;14078:19;;785:56:6;13706:397:7;878:132:6;936:7;963:39;967:1;970;963:39;;;;;;;;;;;;;;;;;:3;:39::i;11929:2217:4:-;11982:18;12003:6;11982:27;;12020;12050:60;12066:15;;12083:26;;12050:15;:60::i;:::-;:119;;12144:14;:24;12118:13;:23;:50;;12144:24;12118:50;:::i;:::-;12050:119;;;12113:1;12050:119;12343:22;;12319:21;;12292:24;;12266:23;;12020:149;;-1:-1:-1;12180:23:4;;12244:45;;12020:149;12244:45;:::i;:::-;:72;;;;:::i;:::-;:96;;;;:::i;:::-;:121;;;;:::i;:::-;12206:34;12220:19;12206:10;:34;:::i;:::-;:160;;;;:::i;:::-;12571:22;;12547:21;;12520:24;;12494:23;;12180:186;;-1:-1:-1;12377:23:4;;12472:45;;:19;:45;:::i;:::-;:72;;;;:::i;:::-;:96;;;;:::i;:::-;:121;;;;:::i;:::-;12443:24;;12417:23;;:50;;12443:24;12417:50;:::i;:::-;12403:65;;:10;:65;:::i;:::-;:191;;;;:::i;:::-;12794:22;;12770:21;;12743:24;;12717:23;;12377:217;;-1:-1:-1;12605:21:4;;12695:45;;:19;:45;:::i;:::-;:72;;;;:::i;:::-;:96;;;;:::i;:::-;:121;;;;:::i;:::-;12667:22;;12643:21;;:46;;12667:22;12643:46;:::i;:::-;12629:61;;:10;:61;:::i;:::-;:188;;;;:::i;:::-;12605:212;;12871:15;12828:22;:39;;;:58;;;;;;;:::i;:::-;;;;-1:-1:-1;;12897:39:4;:58;;12940:15;;12897:39;;;:58;;12940:15;;12897:58;:::i;:::-;;;;-1:-1:-1;;12966:37:4;:54;;13007:13;;12966:37;;;:54;;13007:13;;12966:54;:::i;:::-;;;;-1:-1:-1;13033:25:4;;-1:-1:-1;13097:13:4;13061:33;13079:15;13061;:33;:::i;:::-;:49;;;;:::i;:::-;13033:77;-1:-1:-1;13131:26:4;13160:22;:15;13180:1;13160:19;:22::i;:::-;13131:51;;13234:18;13193:22;:37;;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;13263:26:4;;-1:-1:-1;13292:34:4;:10;13307:18;13292:14;:34::i;:::-;13263:63;-1:-1:-1;13375:21:4;13409:36;13263:63;13409:16;:36::i;:::-;13457:18;13478:44;:21;13504:17;13478:25;:44::i;:::-;13457:65;-1:-1:-1;13543:23:4;13569:54;13605:17;13569:31;13457:65;13584:15;13569:14;:31::i;:54::-;13543:80;-1:-1:-1;13634:21:4;13658:52;13692:17;13658:29;:10;13673:13;13658:14;:29::i;:52::-;13634:76;;13760:15;13721:22;:35;;;:54;;;;;;;:::i;:::-;;;;-1:-1:-1;;13786:33:4;:50;;13823:13;;13786:33;;;:50;;13823:13;;13786:50;:::i;:::-;;;;-1:-1:-1;13849:49:4;;-1:-1:-1;13862:18:4;13882:15;13849:12;:49::i;:::-;13948:21;13909:22;:35;;;:60;;;;;;;:::i;:::-;;;;-1:-1:-1;;14006:13:4;;13998:53;;13981:12;;14006:13;;;14033;;13981:12;13998:53;13981:12;13998:53;14033:13;14006;13998:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14083:15:4;;14075:63;;13980:71;;-1:-1:-1;14083:15:4;;;14112:21;;14075:63;;;;14112:21;14083:15;14075:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;11929:2217:4:o;8039:587::-;8107:7;8127:25;8190:3;8164:13;:23;;;8155:6;:32;;;;:::i;:::-;:38;;;;:::i;:::-;8127:66;;8205:26;8269:3;8243:13;:23;;;8234:6;:32;;;;:::i;:::-;:38;;;;:::i;:::-;8205:67;;8283:21;8339:3;8316:13;:21;;;8307:6;:30;;;;:::i;:::-;:35;;;;:::i;:::-;8283:59;-1:-1:-1;8283:59:4;8382:38;8402:18;8382:17;:38;:::i;:::-;:54;;;;:::i;:::-;8372:4;8355:23;;;;:8;:23;;;;;:81;;:23;;;:81;;;;;:::i;:::-;;;;-1:-1:-1;8476:4:4;;-1:-1:-1;8452:86:4;;;;8524:13;8483:38;8504:17;8483:18;:38;:::i;:::-;:54;;;;:::i;:::-;8452:86;;160:25:7;;;148:2;133:18;8452:86:4;;;;;;;8604:13;8584:18;8557:25;8565:17;8557:6;:25;:::i;:::-;:45;;;;:::i;:::-;:60;;;;:::i;:::-;8549:69;8039:587;-1:-1:-1;;;;;;8039:587:4:o;420:192:6:-;506:7;542:12;534:6;;;;526:29;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;566:9:6;578:5;582:1;578;:5;:::i;:::-;566:17;420:192;-1:-1:-1;;;;;420:192:6:o;1018:278::-;1104:7;1139:12;1132:5;1124:28;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1163:9:6;1175:5;1179:1;1175;:5;:::i;14154:475:4:-;14244:16;;;14258:1;14244:16;;;;;;;;14220:21;;14244:16;;;;;;;;;;-1:-1:-1;14244:16:4;14220:40;;14289:4;14271;14276:1;14271:7;;;;;;;;:::i;:::-;:23;;;;:7;;;;;;;;;;:23;;;;14315:15;;:22;;;;;;;;:15;;;;;:20;;:22;;;;;14271:7;;14315:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14305:4;14310:1;14305:7;;;;;;;;:::i;:::-;:32;;;;:7;;;;;;;;;:32;14382:15;;14350:62;;14367:4;;14382:15;14400:11;14350:8;:62::i;:::-;14425:15;;:196;;;;;:15;;;;;:66;;:196;;14506:11;;14425:15;;14548:4;;14575;;14595:15;;14425:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14209:420;14154:475;:::o;14637:374::-;14750:15;;14718:62;;14735:4;;14750:15;;14768:11;14718:8;:62::i;:::-;14793:15;;14945:17;;14793:210;;;;;14867:4;14793:210;;;16347:34:7;16397:18;;;16390:34;;;14793:15:4;16440:18:7;;;16433:34;;;16483:18;;;16476:34;14793:15:4;14945:17;;;16526:19:7;;;16519:44;14977:15:4;16579:19:7;;;16572:35;14793:15:4;;;:31;;14833:9;;16258:19:7;;14793:210:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14637:374;;:::o;196:607:7:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;794:2;724:66;719:2;711:6;707:15;703:88;692:9;688:104;684:113;676:121;;;;196:607;;;;:::o;1061:154::-;1147:42;1140:5;1136:54;1129:5;1126:65;1116:93;;1205:1;1202;1195:12;1220:315;1288:6;1296;1349:2;1337:9;1328:7;1324:23;1320:32;1317:52;;;1365:1;1362;1355:12;1317:52;1404:9;1391:23;1423:31;1448:5;1423:31;:::i;:::-;1473:5;1525:2;1510:18;;;;1497:32;;-1:-1:-1;;;1220:315:7:o;1732:248::-;1800:6;1808;1861:2;1849:9;1840:7;1836:23;1832:32;1829:52;;;1877:1;1874;1867:12;1829:52;-1:-1:-1;;1900:23:7;;;1970:2;1955:18;;;1942:32;;-1:-1:-1;1732:248:7:o;2242:180::-;2301:6;2354:2;2342:9;2333:7;2329:23;2325:32;2322:52;;;2370:1;2367;2360:12;2322:52;-1:-1:-1;2393:23:7;;2242:180;-1:-1:-1;2242:180:7:o;2427:456::-;2504:6;2512;2520;2573:2;2561:9;2552:7;2548:23;2544:32;2541:52;;;2589:1;2586;2579:12;2541:52;2628:9;2615:23;2647:31;2672:5;2647:31;:::i;:::-;2697:5;-1:-1:-1;2754:2:7;2739:18;;2726:32;2767:33;2726:32;2767:33;:::i;:::-;2427:456;;2819:7;;-1:-1:-1;;;2873:2:7;2858:18;;;;2845:32;;2427:456::o;3119:247::-;3178:6;3231:2;3219:9;3210:7;3206:23;3202:32;3199:52;;;3247:1;3244;3237:12;3199:52;3286:9;3273:23;3305:31;3330:5;3305:31;:::i;3884:118::-;3970:5;3963:13;3956:21;3949:5;3946:32;3936:60;;3992:1;3989;3982:12;4007:444;4078:6;4086;4094;4147:2;4135:9;4126:7;4122:23;4118:32;4115:52;;;4163:1;4160;4153:12;4115:52;4202:9;4189:23;4221:28;4243:5;4221:28;:::i;:::-;4268:5;-1:-1:-1;4320:2:7;4305:18;;4292:32;;-1:-1:-1;4376:2:7;4361:18;;4348:32;4389:30;4348:32;4389:30;:::i;:::-;4438:7;4428:17;;;4007:444;;;;;:::o;4456:523::-;4560:6;4568;4576;4584;4592;4600;4653:3;4641:9;4632:7;4628:23;4624:33;4621:53;;;4670:1;4667;4660:12;4621:53;-1:-1:-1;;4693:23:7;;;4763:2;4748:18;;4735:32;;-1:-1:-1;4814:2:7;4799:18;;4786:32;;4865:2;4850:18;;4837:32;;-1:-1:-1;4916:3:7;4901:19;;4888:33;;-1:-1:-1;4968:3:7;4953:19;4940:33;;-1:-1:-1;4456:523:7;-1:-1:-1;4456:523:7:o;4984:382::-;5049:6;5057;5110:2;5098:9;5089:7;5085:23;5081:32;5078:52;;;5126:1;5123;5116:12;5078:52;5165:9;5152:23;5184:31;5209:5;5184:31;:::i;:::-;5234:5;-1:-1:-1;5291:2:7;5276:18;;5263:32;5304:30;5263:32;5304:30;:::i;:::-;5353:7;5343:17;;;4984:382;;;;;:::o;5983:388::-;6051:6;6059;6112:2;6100:9;6091:7;6087:23;6083:32;6080:52;;;6128:1;6125;6118:12;6080:52;6167:9;6154:23;6186:31;6211:5;6186:31;:::i;:::-;6236:5;-1:-1:-1;6293:2:7;6278:18;;6265:32;6306:33;6265:32;6306:33;:::i;7152:184::-;7204:77;7201:1;7194:88;7301:4;7298:1;7291:15;7325:4;7322:1;7315:15;7341:168;7414:9;;;7445;;7462:15;;;7456:22;;7442:37;7432:71;;7483:18;;:::i;7514:128::-;7581:9;;;7602:11;;;7599:37;;;7616:18;;:::i;8055:125::-;8120:9;;;8141:10;;;8138:36;;;8154:18;;:::i;9428:184::-;9498:6;9551:2;9539:9;9530:7;9526:23;9522:32;9519:52;;;9567:1;9564;9557:12;9519:52;-1:-1:-1;9590:16:7;;9428:184;-1:-1:-1;9428:184:7:o;9919:245::-;9986:6;10039:2;10027:9;10018:7;10014:23;10010:32;10007:52;;;10055:1;10052;10045:12;10007:52;10087:9;10081:16;10106:28;10128:5;10106:28;:::i;13427:274::-;13467:1;13493;13483:189;;13528:77;13525:1;13518:88;13629:4;13626:1;13619:15;13657:4;13654:1;13647:15;13483:189;-1:-1:-1;13686:9:7;;13427:274::o;14507:184::-;14559:77;14556:1;14549:88;14656:4;14653:1;14646:15;14680:4;14677:1;14670:15;14696:251;14766:6;14819:2;14807:9;14798:7;14794:23;14790:32;14787:52;;;14835:1;14832;14825:12;14787:52;14867:9;14861:16;14886:31;14911:5;14886:31;:::i;14952:1026::-;15214:4;15262:3;15251:9;15247:19;15293:6;15282:9;15275:25;15319:2;15357:6;15352:2;15341:9;15337:18;15330:34;15400:3;15395:2;15384:9;15380:18;15373:31;15424:6;15459;15453:13;15490:6;15482;15475:22;15528:3;15517:9;15513:19;15506:26;;15567:2;15559:6;15555:15;15541:29;;15588:1;15598:218;15612:6;15609:1;15606:13;15598:218;;;15677:13;;15692:42;15673:62;15661:75;;15791:15;;;;15756:12;;;;15634:1;15627:9;15598:218;;;-1:-1:-1;;15884:42:7;15872:55;;;;15867:2;15852:18;;15845:83;-1:-1:-1;;;15959:3:7;15944:19;15937:35;15833:3;14952:1026;-1:-1:-1;;;14952:1026:7:o;16618:306::-;16706:6;16714;16722;16775:2;16763:9;16754:7;16750:23;16746:32;16743:52;;;16791:1;16788;16781:12;16743:52;16820:9;16814:16;16804:26;;16870:2;16859:9;16855:18;16849:25;16839:35;;16914:2;16903:9;16899:18;16893:25;16883:35;;16618:306;;;;;:::o

Swarm Source

ipfs://c9cebab9168218688f5be3248bf41bd58b117ae1df9f55eaf0cbea7e6fa757e9

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

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