ETH Price: $3,467.24 (+0.27%)
Gas: 12 Gwei

Token

Pickle Finance (PICKLE)
 

Overview

Max Total Supply

1,000,000,000 PICKLE

Holders

147

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
PICKLE

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-08
*/

/*
The set and forget yield maximizer.

Website: https://www.picklefi.org
Telegram: https://t.me/pickle_erc
Twitter: https://twitter.com/pickle_erc20
Dapp: https://app.picklefi.org
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

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

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    function renounceOwnership() public onlyOwner {owner = address(0); emit OwnershipTransferred(address(0));}
    event OwnershipTransferred(address owner);
}

interface IERC20 {
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);
}

interface IUniswapRouter {
    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;
}

interface IUniswapFactory {
    function createPair(address tokenA, address tokenB) external returns (address uniswapPair);
    function getPair(address tokenA, address tokenB) external view returns (address uniswapPair);
}

contract PICKLE is IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isExemptFees;
    string private constant _name = 'Pickle Finance';
    string private constant _symbol = 'PICKLE';
    uint8 private constant _decimals = 18;
    uint256 private _supplyTotal = 10 ** 9 * (10 ** _decimals);
    IUniswapRouter uniswapRouter;
    address public uniswapPair;
    bool private tradeStarted = false;
    bool private taxSwpaEnabled = true;
    uint256 private swapTokensAt;
    bool private inswap;
    uint256 swapCounter = 1;
    uint256 private swapFeeThreshold = ( _supplyTotal * 3) / 100;
    uint256 private minTokensForSell = ( _supplyTotal * 1) / 100000;
    modifier lockSwap {inswap = true; _; inswap = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0; 
    uint256 private developmentFee = 100; 
    uint256 private burnFee = 0;
    uint256 private totalFee = 2800; 
    uint256 private sellFee = 2800; 
    uint256 private transferFee = 2800;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0x6b515af053cBCB38fC6ea165c733244b15E5eD83;
    address internal marketing_receiver = 0x6b515af053cBCB38fC6ea165c733244b15E5eD83; 
    address internal liquidity_receiver = 0x6b515af053cBCB38fC6ea165c733244b15E5eD83;
    uint256 public maxTxAmount = ( _supplyTotal * 150 ) / 10000;
    uint256 public mTransferSize = ( _supplyTotal * 150 ) / 10000;
    uint256 public maxWalletAmount = ( _supplyTotal * 150 ) / 10000;

    constructor() Ownable(msg.sender) {
        IUniswapRouter _router = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IUniswapFactory(_router.factory()).createPair(address(this), _router.WETH());
        uniswapRouter = _router; uniswapPair = _pair;
        isExemptFees[liquidity_receiver] = true;
        isExemptFees[marketing_receiver] = true;
        isExemptFees[development_receiver] = true;
        isExemptFees[msg.sender] = true;
        _balances[msg.sender] = _supplyTotal;
        emit Transfer(address(0), msg.sender, _supplyTotal);
    }

    receive() external payable {}
    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 getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, 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(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _supplyTotal.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
        
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

    function setLimits(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
        uint256 newTx = _supplyTotal.mul(_buy).div(10000); uint256 newTransfer = _supplyTotal.mul(_sell).div(10000); uint256 newWallet = _supplyTotal.mul(_wallet).div(10000);
        maxTxAmount = newTx; mTransferSize = newTransfer; maxWalletAmount = newWallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }

    function initTax(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; developmentFee = _development; totalFee = _total; sellFee = _sell; transferFee = _trans;
        require(totalFee <= denominator && sellFee <= denominator && transferFee <= denominator, "totalFee and sellFee cannot be more than 100%");
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
      return (a > b) ? b : a;
    }
    function swapBackCA(uint256 tokens) private lockSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensToETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(development_receiver).transfer(contractBalance);}
    }
    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(uniswapRouter), tokenAmount);
        uniswapRouter.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp);
    }
    function enableSwap() external onlyOwner {tradeStarted = true;}
    function swapTokensToETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();
        _approve(address(this), address(uniswapRouter), tokenAmount);
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isExemptFees[sender] && !isExemptFees[recipient];
    }
    
    function getTaxDenominator(address sender, address recipient) internal view returns (uint256) {
        if(recipient == uniswapPair){return sellFee;}
        if(sender == uniswapPair){return totalFee;}
        return transferFee;
    }

    function takeFees(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTaxDenominator(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTaxDenominator(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0) && getTaxDenominator(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }
    
    function canSwapFees(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokensForSell;
        bool aboveThreshold = balanceOf(address(this)) >= minTokensForSell;
        return !inswap && taxSwpaEnabled && tradeStarted && aboveMin && !isExemptFees[sender] && recipient == uniswapPair && swapTokensAt >= swapCounter && aboveThreshold;
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if(!isExemptFees[sender] && !isExemptFees[recipient]){require(tradeStarted, "tradeStarted");}
        if(!isExemptFees[sender] && !isExemptFees[recipient] && recipient != address(uniswapPair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= maxWalletAmount, "Exceeds maximum wallet amount.");}
        if(sender != uniswapPair){require(amount <= mTransferSize || isExemptFees[sender] || isExemptFees[recipient], "TX Limit Exceeded");}
        require(amount <= maxTxAmount || isExemptFees[sender] || isExemptFees[recipient], "TX Limit Exceeded"); 
        if(recipient == uniswapPair && !isExemptFees[sender]){swapTokensAt += uint256(1);}
        if(canSwapFees(sender, recipient, amount)){swapBackCA(min(balanceOf(address(this)), swapFeeThreshold)); swapTokensAt = uint256(0);}
        if (!tradeStarted || !isExemptFees[sender]) { _balances[sender] = _balances[sender].sub(amount); }
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFees(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"initTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExemptFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mTransferSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a620004c8565b6200002290633b9aca00620004e0565b60048190556006805461ffff60a01b1916600160a81b179055600160095560649062000050906003620004e0565b6200005c9190620004fa565b600a55620186a06004546001620000749190620004e0565b620000809190620004fa565b600b556000600c819055600d8190556064600e55600f55610af060108190556011819055601255612710601381905560148054736b515af053cbcb38fc6ea165c733244b15e5ed836001600160a01b0319918216811790925560158054821683179055601680549091169091179055600454620000ff906096620004e0565b6200010b9190620004fa565b6017556127106004546096620001229190620004e0565b6200012e9190620004fa565b6018556127106004546096620001459190620004e0565b620001519190620004fa565b6019553480156200016157600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ef91906200051d565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200023d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026391906200051d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d791906200051d565b600580546001600160a01b038086166001600160a01b03199283161790925560068054838516921691909117905560165481166000908152600360209081526040808320805460ff199081166001908117909255601554861685528285208054821683179055601454909516845281842080548616821790553380855282852080549096168217909555600454925280832082905551939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620003a391815260200190565b60405180910390a3505062000548565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200040a578160001904821115620003ee57620003ee620003b3565b80851615620003fc57918102915b93841c9390800290620003ce565b509250929050565b6000826200042357506001620004c2565b816200043257506000620004c2565b81600181146200044b5760028114620004565762000476565b6001915050620004c2565b60ff8411156200046a576200046a620003b3565b50506001821b620004c2565b5060208310610133831016604e8410600b84101617156200049b575081810a620004c2565b620004a78383620003c9565b8060001904821115620004be57620004be620003b3565b0290505b92915050565b6000620004d960ff84168362000412565b9392505050565b8082028115828204841417620004c257620004c2620003b3565b6000826200051857634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200053057600080fd5b81516001600160a01b0381168114620004d957600080fd5b61189780620005586000396000f3fe60806040526004361061012e5760003560e01c8063715018a6116100ab578063a9059cbb1161006f578063a9059cbb14610370578063aa4bde2814610390578063c816841b146103a6578063dd62ed3e146103c6578063f2fde38b1461040c578063fcc78ef11461042c57600080fd5b8063715018a6146102ce57806378384dec146102e3578063893d20e8146102f95780638c0b5e221461032b57806395d89b411461034157600080fd5b806323b872dd116100f257806323b872dd1461021857806329691448146102385780632f54bf6e1461024d578063313ce5671461027c57806370a082311461029857600080fd5b806306fdde031461013a578063095ea7b314610183578063144ac2a6146101b357806318160ddd146101d5578063189ae5f2146101f857600080fd5b3661013557005b600080fd5b34801561014657600080fd5b5060408051808201909152600e81526d5069636b6c652046696e616e636560901b60208201525b60405161017a9190611531565b60405180910390f35b34801561018f57600080fd5b506101a361019e366004611597565b61045c565b604051901515815260200161017a565b3480156101bf57600080fd5b506101d36101ce3660046115c3565b610473565b005b3480156101e157600080fd5b506101ea61055a565b60405190815260200161017a565b34801561020457600080fd5b506101d361021336600461160f565b6105cb565b34801561022457600080fd5b506101a361023336600461163b565b610703565b34801561024457600080fd5b506101d361076d565b34801561025957600080fd5b506101a361026836600461167c565b6000546001600160a01b0391821691161490565b34801561028857600080fd5b506040516012815260200161017a565b3480156102a457600080fd5b506101ea6102b336600461167c565b6001600160a01b031660009081526001602052604090205490565b3480156102da57600080fd5b506101d36107ac565b3480156102ef57600080fd5b506101ea60185481565b34801561030557600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161017a565b34801561033757600080fd5b506101ea60175481565b34801561034d57600080fd5b506040805180820190915260068152655049434b4c4560d01b602082015261016d565b34801561037c57600080fd5b506101a361038b366004611597565b61081b565b34801561039c57600080fd5b506101ea60195481565b3480156103b257600080fd5b50600654610313906001600160a01b031681565b3480156103d257600080fd5b506101ea6103e1366004611699565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561041857600080fd5b506101d361042736600461167c565b610828565b34801561043857600080fd5b506101a361044736600461167c565b60036020526000908152604090205460ff1681565b60006104693384846108a6565b5060015b92915050565b6000546001600160a01b031633146104a65760405162461bcd60e51b815260040161049d906116d2565b60405180910390fd5b600c879055600d869055600f859055600e84905560108390556011829055601281905560135483118015906104df575060135460115411155b80156104ef575060135460125411155b6105515760405162461bcd60e51b815260206004820152602d60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526c6f7265207468616e203130302560981b606482015260840161049d565b50505050505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5460045491926105c69290916105c091906109ca565b906109ca565b905090565b6000546001600160a01b031633146105f55760405162461bcd60e51b815260040161049d906116d2565b6000610618612710610612866004546109d690919063ffffffff16565b906109e2565b90506000610637612710610612866004546109d690919063ffffffff16565b90506000610656612710610612866004546109d690919063ffffffff16565b601784905560188390556019819055905060006106826103e8610612600561067c61055a565b906109d6565b90508084101580156106945750808310155b80156106a05750808210155b6105515760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b606482015260840161049d565b60006107108484846109ee565b610762843361075d8560405180606001604052806028815260200161183a602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190610f08565b6108a6565b5060015b9392505050565b6000546001600160a01b031633146107975760405162461bcd60e51b815260040161049d906116d2565b6006805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146107d65760405162461bcd60e51b815260040161049d906116d2565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b60006104693384846109ee565b6000546001600160a01b031633146108525760405162461bcd60e51b815260040161049d906116d2565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166109085760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161049d565b6001600160a01b0382166109695760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161049d565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006107668284611708565b6000610766828461171b565b60006107668284611732565b6001600160a01b038316610a525760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161049d565b6001600160a01b038216610ab45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161049d565b6001600160a01b03831660009081526003602052604090205460ff16158015610af657506001600160a01b03821660009081526003602052604090205460ff16155b15610b4357600654600160a01b900460ff16610b435760405162461bcd60e51b815260206004820152600c60248201526b1d1c98591954dd185c9d195960a21b604482015260640161049d565b6001600160a01b03831660009081526003602052604090205460ff16158015610b8557506001600160a01b03821660009081526003602052604090205460ff16155b8015610b9f57506006546001600160a01b03838116911614155b8015610bb657506001600160a01b03821661dead14155b15610c2f576019546001600160a01b038316600090815260016020526040902054610be19083610f34565b1115610c2f5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161049d565b6006546001600160a01b03848116911614610cd05760185481111580610c6d57506001600160a01b03831660009081526003602052604090205460ff165b80610c9057506001600160a01b03821660009081526003602052604090205460ff165b610cd05760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161049d565b60175481111580610cf957506001600160a01b03831660009081526003602052604090205460ff165b80610d1c57506001600160a01b03821660009081526003602052604090205460ff165b610d5c5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161049d565b6006546001600160a01b038381169116148015610d9257506001600160a01b03831660009081526003602052604090205460ff16155b15610db057600160076000828254610daa9190611754565b90915550505b610dbb838383610f40565b15610deb5730600090815260016020526040902054610de590610de090600a54610ff9565b61100e565b60006007555b600654600160a01b900460ff161580610e1d57506001600160a01b03831660009081526003602052604090205460ff16155b15610e5f576001600160a01b038316600090815260016020526040902054610e4590826109ca565b6001600160a01b0384166000908152600160205260409020555b6000610e6b848461118b565b610e755781610e80565b610e808484846111d1565b6001600160a01b038416600090815260016020526040902054909150610ea69082610f34565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610efa9085815260200190565b60405180910390a350505050565b60008184841115610f2c5760405162461bcd60e51b815260040161049d9190611531565b505050900390565b60006107668284611754565b600b5430600090815260016020526040812054600854919280851015929110159060ff16158015610f7a5750600654600160a81b900460ff165b8015610f8f5750600654600160a01b900460ff165b8015610f985750815b8015610fbd57506001600160a01b03861660009081526003602052604090205460ff16155b8015610fd657506006546001600160a01b038681169116145b8015610fe6575060095460075410155b8015610fef5750805b9695505050505050565b60008183116110085782610766565b50919050565b6008805460ff19166001908117909155600e54600d54600c546000936110489360029361067c939192611042928391610f34565b90610f34565b9050600061106582610612600c54866109d690919063ffffffff16565b9050600061107384836109ca565b90504761107f826112d8565b600061108b47836109ca565b905060006110ae6110a7600c54886109ca90919063ffffffff16565b83906109e2565b905060006110c7600c54836109d690919063ffffffff16565b905080156110d9576110d98682611432565b600d546000906110ee9061067c8560026109d6565b90508015611132576015546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611130573d6000803e3d6000fd5b505b478015611175576014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611173573d6000803e3d6000fd5b505b50506008805460ff191690555050505050505050565b6001600160a01b03821660009081526003602052604081205460ff161580156107665750506001600160a01b031660009081526003602052604090205460ff1615919050565b6000806111de85856114e6565b11156112d15760006112016111f386866114e6565b60135461067c9086906109e2565b3060009081526001602052604090205490915061121e9082610f34565b30600081815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061126f9085815260200190565b60405180910390a36000600f541180156112935750600f5461129186866114e6565b115b156112bf576112bf3061dead6112ba600f5461067c601354896109e290919063ffffffff16565b6109ee565b6112c983826109ca565b915050610766565b5092915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061130d5761130d611767565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611366573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138a919061177d565b8160018151811061139d5761139d611767565b6001600160a01b0392831660209182029290920101526005546113c391309116846108a6565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac947906113fc90859060009086903090429060040161179a565b600060405180830381600087803b15801561141657600080fd5b505af115801561142a573d6000803e3d6000fd5b505050505050565b60055461144a9030906001600160a01b0316846108a6565b60055460165460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156114ba573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114df919061180b565b5050505050565b6006546000906001600160a01b0390811690831603611508575060115461046d565b6006546001600160a01b0390811690841603611527575060105461046d565b5060125492915050565b600060208083528351808285015260005b8181101561155e57858101830151858201604001528201611542565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461159457600080fd5b50565b600080604083850312156115aa57600080fd5b82356115b58161157f565b946020939093013593505050565b600080600080600080600060e0888a0312156115de57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b60008060006060848603121561162457600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561165057600080fd5b833561165b8161157f565b9250602084013561166b8161157f565b929592945050506040919091013590565b60006020828403121561168e57600080fd5b81356107668161157f565b600080604083850312156116ac57600080fd5b82356116b78161157f565b915060208301356116c78161157f565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561046d5761046d6116f2565b808202811582820484141761046d5761046d6116f2565b60008261174f57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561046d5761046d6116f2565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561178f57600080fd5b81516107668161157f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117ea5784516001600160a01b0316835293830193918301916001016117c5565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561182057600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122027968d4208a1c7ecbda04f5686fd398a3eb65aff933225ce92fb59cb9bafbfcd64736f6c63430008130033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c8063715018a6116100ab578063a9059cbb1161006f578063a9059cbb14610370578063aa4bde2814610390578063c816841b146103a6578063dd62ed3e146103c6578063f2fde38b1461040c578063fcc78ef11461042c57600080fd5b8063715018a6146102ce57806378384dec146102e3578063893d20e8146102f95780638c0b5e221461032b57806395d89b411461034157600080fd5b806323b872dd116100f257806323b872dd1461021857806329691448146102385780632f54bf6e1461024d578063313ce5671461027c57806370a082311461029857600080fd5b806306fdde031461013a578063095ea7b314610183578063144ac2a6146101b357806318160ddd146101d5578063189ae5f2146101f857600080fd5b3661013557005b600080fd5b34801561014657600080fd5b5060408051808201909152600e81526d5069636b6c652046696e616e636560901b60208201525b60405161017a9190611531565b60405180910390f35b34801561018f57600080fd5b506101a361019e366004611597565b61045c565b604051901515815260200161017a565b3480156101bf57600080fd5b506101d36101ce3660046115c3565b610473565b005b3480156101e157600080fd5b506101ea61055a565b60405190815260200161017a565b34801561020457600080fd5b506101d361021336600461160f565b6105cb565b34801561022457600080fd5b506101a361023336600461163b565b610703565b34801561024457600080fd5b506101d361076d565b34801561025957600080fd5b506101a361026836600461167c565b6000546001600160a01b0391821691161490565b34801561028857600080fd5b506040516012815260200161017a565b3480156102a457600080fd5b506101ea6102b336600461167c565b6001600160a01b031660009081526001602052604090205490565b3480156102da57600080fd5b506101d36107ac565b3480156102ef57600080fd5b506101ea60185481565b34801561030557600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161017a565b34801561033757600080fd5b506101ea60175481565b34801561034d57600080fd5b506040805180820190915260068152655049434b4c4560d01b602082015261016d565b34801561037c57600080fd5b506101a361038b366004611597565b61081b565b34801561039c57600080fd5b506101ea60195481565b3480156103b257600080fd5b50600654610313906001600160a01b031681565b3480156103d257600080fd5b506101ea6103e1366004611699565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561041857600080fd5b506101d361042736600461167c565b610828565b34801561043857600080fd5b506101a361044736600461167c565b60036020526000908152604090205460ff1681565b60006104693384846108a6565b5060015b92915050565b6000546001600160a01b031633146104a65760405162461bcd60e51b815260040161049d906116d2565b60405180910390fd5b600c879055600d869055600f859055600e84905560108390556011829055601281905560135483118015906104df575060135460115411155b80156104ef575060135460125411155b6105515760405162461bcd60e51b815260206004820152602d60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526c6f7265207468616e203130302560981b606482015260840161049d565b50505050505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5460045491926105c69290916105c091906109ca565b906109ca565b905090565b6000546001600160a01b031633146105f55760405162461bcd60e51b815260040161049d906116d2565b6000610618612710610612866004546109d690919063ffffffff16565b906109e2565b90506000610637612710610612866004546109d690919063ffffffff16565b90506000610656612710610612866004546109d690919063ffffffff16565b601784905560188390556019819055905060006106826103e8610612600561067c61055a565b906109d6565b90508084101580156106945750808310155b80156106a05750808210155b6105515760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b606482015260840161049d565b60006107108484846109ee565b610762843361075d8560405180606001604052806028815260200161183a602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190610f08565b6108a6565b5060015b9392505050565b6000546001600160a01b031633146107975760405162461bcd60e51b815260040161049d906116d2565b6006805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146107d65760405162461bcd60e51b815260040161049d906116d2565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b60006104693384846109ee565b6000546001600160a01b031633146108525760405162461bcd60e51b815260040161049d906116d2565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166109085760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161049d565b6001600160a01b0382166109695760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161049d565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006107668284611708565b6000610766828461171b565b60006107668284611732565b6001600160a01b038316610a525760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161049d565b6001600160a01b038216610ab45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161049d565b6001600160a01b03831660009081526003602052604090205460ff16158015610af657506001600160a01b03821660009081526003602052604090205460ff16155b15610b4357600654600160a01b900460ff16610b435760405162461bcd60e51b815260206004820152600c60248201526b1d1c98591954dd185c9d195960a21b604482015260640161049d565b6001600160a01b03831660009081526003602052604090205460ff16158015610b8557506001600160a01b03821660009081526003602052604090205460ff16155b8015610b9f57506006546001600160a01b03838116911614155b8015610bb657506001600160a01b03821661dead14155b15610c2f576019546001600160a01b038316600090815260016020526040902054610be19083610f34565b1115610c2f5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161049d565b6006546001600160a01b03848116911614610cd05760185481111580610c6d57506001600160a01b03831660009081526003602052604090205460ff165b80610c9057506001600160a01b03821660009081526003602052604090205460ff165b610cd05760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161049d565b60175481111580610cf957506001600160a01b03831660009081526003602052604090205460ff165b80610d1c57506001600160a01b03821660009081526003602052604090205460ff165b610d5c5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161049d565b6006546001600160a01b038381169116148015610d9257506001600160a01b03831660009081526003602052604090205460ff16155b15610db057600160076000828254610daa9190611754565b90915550505b610dbb838383610f40565b15610deb5730600090815260016020526040902054610de590610de090600a54610ff9565b61100e565b60006007555b600654600160a01b900460ff161580610e1d57506001600160a01b03831660009081526003602052604090205460ff16155b15610e5f576001600160a01b038316600090815260016020526040902054610e4590826109ca565b6001600160a01b0384166000908152600160205260409020555b6000610e6b848461118b565b610e755781610e80565b610e808484846111d1565b6001600160a01b038416600090815260016020526040902054909150610ea69082610f34565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610efa9085815260200190565b60405180910390a350505050565b60008184841115610f2c5760405162461bcd60e51b815260040161049d9190611531565b505050900390565b60006107668284611754565b600b5430600090815260016020526040812054600854919280851015929110159060ff16158015610f7a5750600654600160a81b900460ff165b8015610f8f5750600654600160a01b900460ff165b8015610f985750815b8015610fbd57506001600160a01b03861660009081526003602052604090205460ff16155b8015610fd657506006546001600160a01b038681169116145b8015610fe6575060095460075410155b8015610fef5750805b9695505050505050565b60008183116110085782610766565b50919050565b6008805460ff19166001908117909155600e54600d54600c546000936110489360029361067c939192611042928391610f34565b90610f34565b9050600061106582610612600c54866109d690919063ffffffff16565b9050600061107384836109ca565b90504761107f826112d8565b600061108b47836109ca565b905060006110ae6110a7600c54886109ca90919063ffffffff16565b83906109e2565b905060006110c7600c54836109d690919063ffffffff16565b905080156110d9576110d98682611432565b600d546000906110ee9061067c8560026109d6565b90508015611132576015546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611130573d6000803e3d6000fd5b505b478015611175576014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611173573d6000803e3d6000fd5b505b50506008805460ff191690555050505050505050565b6001600160a01b03821660009081526003602052604081205460ff161580156107665750506001600160a01b031660009081526003602052604090205460ff1615919050565b6000806111de85856114e6565b11156112d15760006112016111f386866114e6565b60135461067c9086906109e2565b3060009081526001602052604090205490915061121e9082610f34565b30600081815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061126f9085815260200190565b60405180910390a36000600f541180156112935750600f5461129186866114e6565b115b156112bf576112bf3061dead6112ba600f5461067c601354896109e290919063ffffffff16565b6109ee565b6112c983826109ca565b915050610766565b5092915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061130d5761130d611767565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611366573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138a919061177d565b8160018151811061139d5761139d611767565b6001600160a01b0392831660209182029290920101526005546113c391309116846108a6565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac947906113fc90859060009086903090429060040161179a565b600060405180830381600087803b15801561141657600080fd5b505af115801561142a573d6000803e3d6000fd5b505050505050565b60055461144a9030906001600160a01b0316846108a6565b60055460165460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156114ba573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114df919061180b565b5050505050565b6006546000906001600160a01b0390811690831603611508575060115461046d565b6006546001600160a01b0390811690841603611527575060105461046d565b5060125492915050565b600060208083528351808285015260005b8181101561155e57858101830151858201604001528201611542565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461159457600080fd5b50565b600080604083850312156115aa57600080fd5b82356115b58161157f565b946020939093013593505050565b600080600080600080600060e0888a0312156115de57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b60008060006060848603121561162457600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561165057600080fd5b833561165b8161157f565b9250602084013561166b8161157f565b929592945050506040919091013590565b60006020828403121561168e57600080fd5b81356107668161157f565b600080604083850312156116ac57600080fd5b82356116b78161157f565b915060208301356116c78161157f565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561046d5761046d6116f2565b808202811582820484141761046d5761046d6116f2565b60008261174f57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561046d5761046d6116f2565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561178f57600080fd5b81516107668161157f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117ea5784516001600160a01b0316835293830193918301916001016117c5565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561182057600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122027968d4208a1c7ecbda04f5686fd398a3eb65aff933225ce92fb59cb9bafbfcd64736f6c63430008130033

Deployed Bytecode Sourcemap

4994:10058:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7400:67;;;;;;;;;;-1:-1:-1;7460:5:0;;;;;;;;;;;;-1:-1:-1;;;7460:5:0;;;;7400:67;;;;;;;:::i;:::-;;;;;;;;8094:133;;;;;;;;;;-1:-1:-1;8094:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8094:133:0;1023:187:1;9592:485:0;;;;;;;;;;-1:-1:-1;9592:485:0;;;;;:::i;:::-;;:::i;:::-;;8233:132;;;;;;;;;;;;;:::i;:::-;;;1958:25:1;;;1946:2;1931:18;8233:132:0;1812:177:1;9041:543:0;;;;;;;;;;-1:-1:-1;9041:543:0;;;;;:::i;:::-;;:::i;8381:309::-;;;;;;;;;;-1:-1:-1;8381:309:0;;;;;:::i;:::-;;:::i;11620:63::-;;;;;;;;;;;;;:::i;2851:87::-;;;;;;;;;;-1:-1:-1;2851:87:0;;;;;:::i;:::-;2906:4;2931:5;-1:-1:-1;;;;;2920:16:0;;;2931:5;;2920:16;;2851:87;7550:67;;;;;;;;;;-1:-1:-1;7550:67:0;;5381:2;3170:36:1;;3158:2;3143:18;7550:67:0;3028:184:1;7707:103:0;;;;;;;;;;-1:-1:-1;7707:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7790:18:0;7773:7;7790:18;;;:9;:18;;;;;;;7707:103;3061:106;;;;;;;;;;;;;:::i;6620:61::-;;;;;;;;;;;;;;;;7623:78;;;;;;;;;;-1:-1:-1;7675:7:0;7693:5;-1:-1:-1;;;;;7693:5:0;7623:78;;;-1:-1:-1;;;;;3381:32:1;;;3363:51;;3351:2;3336:18;7623:78:0;3217:203:1;6554:59:0;;;;;;;;;;;;;;;;7473:71;;;;;;;;;;-1:-1:-1;7535:7:0;;;;;;;;;;;;-1:-1:-1;;;7535:7:0;;;;7473:71;;7816:139;;;;;;;;;;-1:-1:-1;7816:139:0;;;;;:::i;:::-;;:::i;6688:63::-;;;;;;;;;;;;;;;;5490:26;;;;;;;;;;-1:-1:-1;5490:26:0;;;;-1:-1:-1;;;;;5490:26:0;;;7961:127;;;;;;;;;;-1:-1:-1;7961:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;8059:18:0;;;8042:7;8059:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7961:127;2944:111;;;;;;;;;;-1:-1:-1;2944:111:0;;;;;:::i;:::-;;:::i;5190:45::-;;;;;;;;;;-1:-1:-1;5190:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8094:133;8169:4;8176:37;8185:10;8197:7;8206:6;8176:8;:37::i;:::-;-1:-1:-1;8221:4:0;8094:133;;;;;:::o;9592:485::-;2906:4;2931:5;-1:-1:-1;;;;;2931:5:0;2818:10;2920:16;2802:38;;;;-1:-1:-1;;;2802:38:0;;;;;;;:::i;:::-;;;;;;;;;9763:12:::1;:25:::0;;;9790:12:::1;:25:::0;;;9817:7:::1;:15:::0;;;9834:14:::1;:29:::0;;;9865:8:::1;:17:::0;;;9884:7:::1;:15:::0;;;9901:11:::1;:20:::0;;;9952:11:::1;::::0;9940:23;::::1;::::0;::::1;::::0;:49:::1;;;9978:11;;9967:7;;:22;;9940:49;:79;;;;;10008:11;;9993;;:26;;9940:79;9932:137;;;::::0;-1:-1:-1;;;9932:137:0;;4614:2:1;9932:137:0::1;::::0;::::1;4596:21:1::0;4653:2;4633:18;;;4626:30;4692:34;4672:18;;;4665:62;-1:-1:-1;;;4743:18:1;;;4736:43;4796:19;;9932:137:0::1;4412:409:1::0;9932:137:0::1;9592:485:::0;;;;;;;:::o;8233:132::-;7790:9;:18;;;;6241:42;8286:7;7790:18;;;;;8303:12;;8286:7;;8303:60;;7790:18;;8303:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;8296:67;;8233:132;:::o;9041:543::-;2906:4;2931:5;-1:-1:-1;;;;;2931:5:0;2818:10;2920:16;2802:38;;;;-1:-1:-1;;;2802:38:0;;;;;;;:::i;:::-;9136:13:::1;9152:33;9179:5;9152:22;9169:4;9152:12;;:16;;:22;;;;:::i;:::-;:26:::0;::::1;:33::i;:::-;9136:49;;9187:19;9209:34;9237:5;9209:23;9226:5;9209:12;;:16;;:23;;;;:::i;:34::-;9187:56;;9245:17;9265:36;9295:5;9265:25;9282:7;9265:12;;:16;;:25;;;;:::i;:36::-;9312:11;:19:::0;;;9333:13:::1;:27:::0;;;9362:15:::1;:27:::0;;;9245:56;-1:-1:-1;;9416:30:0::1;9441:4;9416:20;9434:1;9416:13;:11;:13::i;:::-;:17:::0;::::1;:20::i;:30::-;9400:46;;9474:5;9465;:14;;:38;;;;;9498:5;9483:11;:20;;9465:38;:60;;;;;9520:5;9507:9;:18;;9465:60;9457:119;;;::::0;-1:-1:-1;;;9457:119:0;;5028:2:1;9457:119:0::1;::::0;::::1;5010:21:1::0;5067:2;5047:18;;;5040:30;5106:34;5086:18;;;5079:62;-1:-1:-1;;;5157:18:1;;;5150:44;5211:19;;9457:119:0::1;4826:410:1::0;8381:309:0;8479:4;8496:36;8506:6;8514:9;8525:6;8496:9;:36::i;:::-;8543:117;8552:6;8560:10;8572:87;8608:6;8572:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8572:19:0;;;;;;:11;:19;;;;;;;;8592:10;8572:31;;;;;;;;;:87;:35;:87::i;:::-;8543:8;:117::i;:::-;-1:-1:-1;8678:4:0;8381:309;;;;;;:::o;11620:63::-;2906:4;2931:5;-1:-1:-1;;;;;2931:5:0;2818:10;2920:16;2802:38;;;;-1:-1:-1;;;2802:38:0;;;;;;;:::i;:::-;11662:12:::1;:19:::0;;-1:-1:-1;;;;11662:19:0::1;-1:-1:-1::0;;;11662:19:0::1;::::0;;11620:63::o;3061:106::-;2906:4;2931:5;-1:-1:-1;;;;;2931:5:0;2818:10;2920:16;2802:38;;;;-1:-1:-1;;;2802:38:0;;;;;;;:::i;:::-;3124:1:::1;3108:18:::0;;-1:-1:-1;;;;;;3108:18:0::1;::::0;;3133:32:::1;::::0;3363:51:1;;;3133:32:0::1;::::0;3351:2:1;3336:18;3133:32:0::1;;;;;;;3061:106::o:0;7816:139::-;7894:4;7901:40;7911:10;7923:9;7934:6;7901:9;:40::i;2944:111::-;2906:4;2931:5;-1:-1:-1;;;;;2931:5:0;2818:10;2920:16;2802:38;;;;-1:-1:-1;;;2802:38:0;;;;;;;:::i;:::-;3010:5:::1;:11:::0;;-1:-1:-1;;;;;;3010:11:0::1;-1:-1:-1::0;;;;;3010:11:0;::::1;::::0;;::::1;::::0;;;3028:25:::1;::::0;3363:51:1;;;3028:25:0::1;::::0;3351:2:1;3336:18;3028:25:0::1;;;;;;;2944:111:::0;:::o;8698:335::-;-1:-1:-1;;;;;8791:19:0;;8783:68;;;;-1:-1:-1;;;8783:68:0;;5659:2:1;8783:68:0;;;5641:21:1;5698:2;5678:18;;;5671:30;5737:34;5717:18;;;5710:62;-1:-1:-1;;;5788:18:1;;;5781:34;5832:19;;8783:68:0;5457:400:1;8783:68:0;-1:-1:-1;;;;;8870:21:0;;8862:68;;;;-1:-1:-1;;;8862:68:0;;6064:2:1;8862:68:0;;;6046:21:1;6103:2;6083:18;;;6076:30;6142:34;6122:18;;;6115:62;-1:-1:-1;;;6193:18:1;;;6186:32;6235:19;;8862:68:0;5862:398:1;8862:68:0;-1:-1:-1;;;;;8941:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8993:32;;1958:25:1;;;8993:32:0;;1931:18:1;8993:32:0;;;;;;;8698:335;;;:::o;1502:98::-;1560:7;1587:5;1591:1;1587;:5;:::i;1608:98::-;1666:7;1693:5;1697:1;1693;:5;:::i;1714:98::-;1772:7;1799:5;1803:1;1799;:5;:::i;13613:1436::-;-1:-1:-1;;;;;13710:20:0;;13702:70;;;;-1:-1:-1;;;13702:70:0;;7127:2:1;13702:70:0;;;7109:21:1;7166:2;7146:18;;;7139:30;7205:34;7185:18;;;7178:62;-1:-1:-1;;;7256:18:1;;;7249:35;7301:19;;13702:70:0;6925:401:1;13702:70:0;-1:-1:-1;;;;;13791:23:0;;13783:71;;;;-1:-1:-1;;;13783:71:0;;7533:2:1;13783:71:0;;;7515:21:1;7572:2;7552:18;;;7545:30;7611:34;7591:18;;;7584:62;-1:-1:-1;;;7662:18:1;;;7655:33;7705:19;;13783:71:0;7331:399:1;13783:71:0;-1:-1:-1;;;;;13869:20:0;;;;;;:12;:20;;;;;;;;13868:21;:49;;;;-1:-1:-1;;;;;;13894:23:0;;;;;;:12;:23;;;;;;;;13893:24;13868:49;13865:93;;;13927:12;;-1:-1:-1;;;13927:12:0;;;;13919:37;;;;-1:-1:-1;;;13919:37:0;;7937:2:1;13919:37:0;;;7919:21:1;7976:2;7956:18;;;7949:30;-1:-1:-1;;;7995:18:1;;;7988:42;8047:18;;13919:37:0;7735:336:1;13919:37:0;-1:-1:-1;;;;;13972:20:0;;;;;;:12;:20;;;;;;;;13971:21;:49;;;;-1:-1:-1;;;;;;13997:23:0;;;;;;:12;:23;;;;;;;;13996:24;13971:49;:86;;;;-1:-1:-1;14045:11:0;;-1:-1:-1;;;;;14024:33:0;;;14045:11;;14024:33;;13971:86;:116;;;;-1:-1:-1;;;;;;14061:26:0;;6241:42;14061:26;;13971:116;13968:229;;;14145:15;;-1:-1:-1;;;;;14108:20:0;;;;;;:9;:20;;;;;;:32;;14133:6;14108:24;:32::i;:::-;14107:53;;14099:96;;;;-1:-1:-1;;;14099:96:0;;8278:2:1;14099:96:0;;;8260:21:1;8317:2;8297:18;;;8290:30;8356:32;8336:18;;;8329:60;8406:18;;14099:96:0;8076:354:1;14099:96:0;14220:11;;-1:-1:-1;;;;;14210:21:0;;;14220:11;;14210:21;14207:132;;14251:13;;14241:6;:23;;:47;;;-1:-1:-1;;;;;;14268:20:0;;;;;;:12;:20;;;;;;;;14241:47;:74;;;-1:-1:-1;;;;;;14292:23:0;;;;;;:12;:23;;;;;;;;14241:74;14233:104;;;;-1:-1:-1;;;14233:104:0;;8637:2:1;14233:104:0;;;8619:21:1;8676:2;8656:18;;;8649:30;-1:-1:-1;;;8695:18:1;;;8688:47;8752:18;;14233:104:0;8435:341:1;14233:104:0;14367:11;;14357:6;:21;;:45;;;-1:-1:-1;;;;;;14382:20:0;;;;;;:12;:20;;;;;;;;14357:45;:72;;;-1:-1:-1;;;;;;14406:23:0;;;;;;:12;:23;;;;;;;;14357:72;14349:102;;;;-1:-1:-1;;;14349:102:0;;8637:2:1;14349:102:0;;;8619:21:1;8676:2;8656:18;;;8649:30;-1:-1:-1;;;8695:18:1;;;8688:47;8752:18;;14349:102:0;8435:341:1;14349:102:0;14479:11;;-1:-1:-1;;;;;14466:24:0;;;14479:11;;14466:24;:49;;;;-1:-1:-1;;;;;;14495:20:0;;;;;;:12;:20;;;;;;;;14494:21;14466:49;14463:82;;;14541:1;14517:12;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;14463:82:0;14558:38;14570:6;14578:9;14589:6;14558:11;:38::i;:::-;14555:131;;;14631:4;7773:7;7790:18;;;:9;:18;;;;;;14598:59;;14609:47;;14639:16;;14609:3;:47::i;:::-;14598:10;:59::i;:::-;14682:1;14659:12;:25;14555:131;14701:12;;-1:-1:-1;;;14701:12:0;;;;14700:13;;:38;;-1:-1:-1;;;;;;14718:20:0;;;;;;:12;:20;;;;;;;;14717:21;14700:38;14696:98;;;-1:-1:-1;;;;;14762:17:0;;;;;;:9;:17;;;;;;:29;;14784:6;14762:21;:29::i;:::-;-1:-1:-1;;;;;14742:17:0;;;;;;:9;:17;;;;;:49;14696:98;14804:22;14829:32;14843:6;14851:9;14829:13;:32::i;:::-;:79;;14902:6;14829:79;;;14864:35;14873:6;14881:9;14892:6;14864:8;:35::i;:::-;-1:-1:-1;;;;;14942:20:0;;;;;;:9;:20;;;;;;14804:104;;-1:-1:-1;14942:40:0;;14804:104;14942:24;:40::i;:::-;-1:-1:-1;;;;;14919:20:0;;;;;;;:9;:20;;;;;;;:63;;;;14998:43;;;;;;;;;;15026:14;1958:25:1;;1946:2;1931:18;;1812:177;14998:43:0;;;;;;;;13691:1358;13613:1436;;;:::o;1926:240::-;2046:7;2107:12;2099:6;;;;2091:29;;;;-1:-1:-1;;;2091:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2142:5:0;;;1926:240::o;1396:98::-;1454:7;1481:5;1485:1;1481;:5;:::i;13193:412::-;13331:16;;13398:4;13288;7790:18;;;:9;:18;;;;;;13443:6;;13288:4;;13321:26;;;;;-1:-1:-1;;13380:44:0;;13443:6;;13442:7;:25;;;;-1:-1:-1;13453:14:0;;-1:-1:-1;;;13453:14:0;;;;13442:25;:41;;;;-1:-1:-1;13471:12:0;;-1:-1:-1;;;13471:12:0;;;;13442:41;:53;;;;;13487:8;13442:53;:78;;;;-1:-1:-1;;;;;;13500:20:0;;;;;;:12;:20;;;;;;;;13499:21;13442:78;:106;;;;-1:-1:-1;13537:11:0;;-1:-1:-1;;;;;13524:24:0;;;13537:11;;13524:24;13442:106;:137;;;;;13568:11;;13552:12;;:27;;13442:137;:155;;;;;13583:14;13442:155;13435:162;13193:412;-1:-1:-1;;;;;;13193:412:0:o;10085:105::-;10142:7;10172:1;10168;:5;10167:15;;10181:1;10167:15;;;-1:-1:-1;10177:1:0;10085:105;-1:-1:-1;10085:105:0:o;10196:1055::-;5851:6;:13;;-1:-1:-1;;5851:13:0;5860:4;5851:13;;;;;;10326:14:::1;::::0;10308:12:::1;::::0;10284::::1;::::0;5851:6;;10283:66:::1;::::0;10347:1:::1;::::0;10284:57:::1;::::0;10326:14;;10284:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;10283:66::-;10260:89;;10360:32;10395:42;10424:12;10395:24;10406:12;;10395:6;:10;;:24;;;;:::i;:42::-;10360:77:::0;-1:-1:-1;10448:14:0::1;10465:36;:6:::0;10360:77;10465:10:::1;:36::i;:::-;10448:53:::0;-1:-1:-1;10537:21:0::1;10569:23;10448:53:::0;10569:15:::1;:23::i;:::-;10603:20;10626:41;:21;10652:14:::0;10626:25:::1;:41::i;:::-;10603:64;;10678:19;10699:48;10716:30;10733:12;;10716;:16;;:30;;;;:::i;:::-;10699:12:::0;;:16:::1;:48::i;:::-;10678:69;;10758:29;10790;10806:12;;10790:11;:15;;:29;;;;:::i;:::-;10758:61:::0;-1:-1:-1;10833:34:0;;10830:103:::1;;10869:61;10882:24;10908:21;10869:12;:61::i;:::-;10989:12;::::0;10943:20:::1;::::0;10966:36:::1;::::0;:18:::1;:11:::0;10982:1:::1;10966:15;:18::i;:36::-;10943:59:::0;-1:-1:-1;11016:16:0;;11013:73:::1;;11042:18;::::0;11034:50:::1;::::0;-1:-1:-1;;;;;11042:18:0;;::::1;::::0;11034:50;::::1;;;::::0;11071:12;;11042:18:::1;11034:50:::0;11042:18;11034:50;11071:12;11042:18;11034:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11013:73;11122:21;11157:28:::0;;11154:90:::1;;11195:20;::::0;11187:55:::1;::::0;-1:-1:-1;;;;;11195:20:0;;::::1;::::0;11187:55;::::1;;;::::0;11226:15;;11195:20:::1;11187:55:::0;11195:20;11187:55;11226:15;11195:20;11187:55;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11154:90;-1:-1:-1::0;;5869:6:0;:14;;-1:-1:-1;;5869:14:0;;;-1:-1:-1;;;;;;;;10196:1055:0:o;12151:162::-;-1:-1:-1;;;;;12257:20:0;;12232:4;12257:20;;;:12;:20;;;;;;;;12256:21;:49;;;;-1:-1:-1;;;;;;;12282:23:0;;;;;:12;:23;;;;;;;;12281:24;;12151:162;-1:-1:-1;12151:162:0:o;12572:609::-;12659:7;12721:1;12682:36;12700:6;12708:9;12682:17;:36::i;:::-;:40;12679:480;;;12734:17;12754:65;12782:36;12800:6;12808:9;12782:17;:36::i;:::-;12765:11;;12754:23;;:6;;:10;:23::i;:65::-;12875:4;12857:24;;;;:9;:24;;;;;;12734:85;;-1:-1:-1;12857:39:0;;12734:85;12857:28;:39::i;:::-;12848:4;12830:24;;;;:9;:24;;;;;;;:66;;;;12912:42;;-1:-1:-1;;;;;12912:42:0;;;;;;;12944:9;1958:25:1;;1946:2;1931:18;;1812:177;12912:42:0;;;;;;;;12986:1;12968:7;;:20;:70;;;;;13031:7;;12992:36;13010:6;13018:9;12992:17;:36::i;:::-;:46;12968:70;12965:154;;;13040:77;13058:4;6241:42;13080:36;13108:7;;13080:23;13091:11;;13080:6;:10;;:23;;;;:::i;:36::-;13040:9;:77::i;:::-;13136:21;:6;13147:9;13136:10;:21::i;:::-;13129:28;;;;;12679:480;-1:-1:-1;13167:6:0;12572:609;-1:-1:-1;;12572:609:0:o;11689:454::-;11778:16;;;11792:1;11778:16;;;;;;;;11754:21;;11778:16;;;;;;;;;;-1:-1:-1;11778:16:0;11754:40;;11823:4;11805;11810:1;11805:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11805:23:0;;;:7;;;;;;;;;;:23;;;;11849:13;;:20;;;-1:-1:-1;;;11849:20:0;;;;:13;;;;;:18;;:20;;;;;11805:7;;11849:20;;;;;:13;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11839:4;11844:1;11839:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11839:30:0;;;:7;;;;;;;;;:30;11912:13;;11880:60;;11897:4;;11912:13;11928:11;11880:8;:60::i;:::-;11951:13;;:184;;-1:-1:-1;;;11951:184:0;;-1:-1:-1;;;;;11951:13:0;;;;:64;;:184;;12030:11;;11951:13;;12072:4;;12099;;12119:15;;11951:184;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11743:400;11689:454;:::o;11257:357::-;11370:13;;11338:60;;11355:4;;-1:-1:-1;;;;;11370:13:0;11386:11;11338:8;:60::i;:::-;11409:13;;11557:18;;11409:197;;-1:-1:-1;;;11409:197:0;;11479:4;11409:197;;;10757:34:1;10807:18;;;10800:34;;;11409:13:0;10850:18:1;;;10843:34;;;10893:18;;;10886:34;-1:-1:-1;;;;;11557:18:0;;;10936:19:1;;;10929:44;11590:15:0;10989:19:1;;;10982:35;11409:13:0;;;:29;;11446:9;;10691:19:1;;11409:197:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11257:357;;:::o;12325:239::-;12446:11;;12410:7;;-1:-1:-1;;;;;12446:11:0;;;12433:24;;;;12430:45;;-1:-1:-1;12466:7:0;;12459:14;;12430:45;12498:11;;-1:-1:-1;;;;;12498:11:0;;;12488:21;;;;12485:43;;-1:-1:-1;12518:8:0;;12511:15;;12485:43;-1:-1:-1;12545:11:0;;12325:239;;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:592::-;1328:6;1336;1344;1352;1360;1368;1376;1429:3;1417:9;1408:7;1404:23;1400:33;1397:53;;;1446:1;1443;1436:12;1397:53;-1:-1:-1;;1469:23:1;;;1539:2;1524:18;;1511:32;;-1:-1:-1;1590:2:1;1575:18;;1562:32;;1641:2;1626:18;;1613:32;;-1:-1:-1;1692:3:1;1677:19;;1664:33;;-1:-1:-1;1744:3:1;1729:19;;1716:33;;-1:-1:-1;1796:3:1;1781:19;1768:33;;-1:-1:-1;1215:592:1;-1:-1:-1;1215:592:1:o;1994:316::-;2071:6;2079;2087;2140:2;2128:9;2119:7;2115:23;2111:32;2108:52;;;2156:1;2153;2146:12;2108:52;-1:-1:-1;;2179:23:1;;;2249:2;2234:18;;2221:32;;-1:-1:-1;2300:2:1;2285:18;;;2272:32;;1994:316;-1:-1:-1;1994:316:1:o;2315:456::-;2392:6;2400;2408;2461:2;2449:9;2440:7;2436:23;2432:32;2429:52;;;2477:1;2474;2467:12;2429:52;2516:9;2503:23;2535:31;2560:5;2535:31;:::i;:::-;2585:5;-1:-1:-1;2642:2:1;2627:18;;2614:32;2655:33;2614:32;2655:33;:::i;:::-;2315:456;;2707:7;;-1:-1:-1;;;2761:2:1;2746:18;;;;2733:32;;2315:456::o;2776:247::-;2835:6;2888:2;2876:9;2867:7;2863:23;2859:32;2856:52;;;2904:1;2901;2894:12;2856:52;2943:9;2930:23;2962:31;2987:5;2962:31;:::i;3425:388::-;3493:6;3501;3554:2;3542:9;3533:7;3529:23;3525:32;3522:52;;;3570:1;3567;3560:12;3522:52;3609:9;3596:23;3628:31;3653:5;3628:31;:::i;:::-;3678:5;-1:-1:-1;3735:2:1;3720:18;;3707:32;3748:33;3707:32;3748:33;:::i;:::-;3800:7;3790:17;;;3425:388;;;;;:::o;4078:329::-;4280:2;4262:21;;;4319:1;4299:18;;;4292:29;-1:-1:-1;;;4352:2:1;4337:18;;4330:36;4398:2;4383:18;;4078:329::o;6265:127::-;6326:10;6321:3;6317:20;6314:1;6307:31;6357:4;6354:1;6347:15;6381:4;6378:1;6371:15;6397:128;6464:9;;;6485:11;;;6482:37;;;6499:18;;:::i;6530:168::-;6603:9;;;6634;;6651:15;;;6645:22;;6631:37;6621:71;;6672:18;;:::i;6703:217::-;6743:1;6769;6759:132;;6813:10;6808:3;6804:20;6801:1;6794:31;6848:4;6845:1;6838:15;6876:4;6873:1;6866:15;6759:132;-1:-1:-1;6905:9:1;;6703:217::o;8781:125::-;8846:9;;;8867:10;;;8864:36;;;8880:18;;:::i;9043:127::-;9104:10;9099:3;9095:20;9092:1;9085:31;9135:4;9132:1;9125:15;9159:4;9156:1;9149:15;9175:251;9245:6;9298:2;9286:9;9277:7;9273:23;9269:32;9266:52;;;9314:1;9311;9304:12;9266:52;9346:9;9340:16;9365:31;9390:5;9365:31;:::i;9431:980::-;9693:4;9741:3;9730:9;9726:19;9772:6;9761:9;9754:25;9798:2;9836:6;9831:2;9820:9;9816:18;9809:34;9879:3;9874:2;9863:9;9859:18;9852:31;9903:6;9938;9932:13;9969:6;9961;9954:22;10007:3;9996:9;9992:19;9985:26;;10046:2;10038:6;10034:15;10020:29;;10067:1;10077:195;10091:6;10088:1;10085:13;10077:195;;;10156:13;;-1:-1:-1;;;;;10152:39:1;10140:52;;10247:15;;;;10212:12;;;;10188:1;10106:9;10077:195;;;-1:-1:-1;;;;;;;10328:32:1;;;;10323:2;10308:18;;10301:60;-1:-1:-1;;;10392:3:1;10377:19;10370:35;10289:3;9431:980;-1:-1:-1;;;9431:980:1:o;11028:306::-;11116:6;11124;11132;11185:2;11173:9;11164:7;11160:23;11156:32;11153:52;;;11201:1;11198;11191:12;11153:52;11230:9;11224:16;11214:26;;11280:2;11269:9;11265:18;11259:25;11249:35;;11324:2;11313:9;11309:18;11303:25;11293:35;;11028:306;;;;;:::o

Swarm Source

ipfs://27968d4208a1c7ecbda04f5686fd398a3eb65aff933225ce92fb59cb9bafbfcd
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.