POL Price: $0.416344 (-8.09%)
 

Overview

POL Balance

Polygon PoS Chain LogoPolygon PoS Chain LogoPolygon PoS Chain Logo0 POL

POL Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve638735672024-11-04 12:08:1670 days ago1730722096IN
0x76f8A102...D55f4C853
0 POL0.0014671560.30733266
Transfer623192522024-09-27 0:47:49108 days ago1727398069IN
0x76f8A102...D55f4C853
0 POL0.0011393130.00000001
Transfer618670892024-09-15 20:02:50119 days ago1726430570IN
0x76f8A102...D55f4C853
0 POL0.00178231.82323888
Approve618569012024-09-15 13:58:54119 days ago1726408734IN
0x76f8A102...D55f4C853
0 POL0.0014016230.07
Approve607872732024-08-19 16:39:01146 days ago1724085541IN
0x76f8A102...D55f4C853
0 POL0.0012229326.25000002
Approve599280572024-07-28 23:48:23168 days ago1722210503IN
0x76f8A102...D55f4C853
0 POL0.0010149941.72142001
Approve599280482024-07-28 23:48:05168 days ago1722210485IN
0x76f8A102...D55f4C853
0 POL0.0009733540.00982146
Approve598148972024-07-26 2:34:14171 days ago1721961254IN
0x76f8A102...D55f4C853
0 POL0.0013983930.00067731
Transfer597132512024-07-23 13:59:23173 days ago1721743163IN
0x76f8A102...D55f4C853
0 POL0.0011393230.00041763
Approve571132262024-05-18 15:59:57239 days ago1716047997IN
0x76f8A102...D55f4C853
0 POL0.002330650
Approve561340162024-04-22 18:50:13265 days ago1713811813IN
0x76f8A102...D55f4C853
0 POL0.0020076643.33963939
Transfer561185622024-04-22 9:30:34266 days ago1713778234IN
0x76f8A102...D55f4C853
0 POL0.00462437118.96098842
Transfer561185042024-04-22 9:28:30266 days ago1713778110IN
0x76f8A102...D55f4C853
0 POL0.00676235120.81453313
Approve558828242024-04-16 8:08:14272 days ago1713254894IN
0x76f8A102...D55f4C853
0 POL0.00925143198.63103711
Transfer550840292024-03-26 2:15:26293 days ago1711419326IN
0x76f8A102...D55f4C853
0 POL0.00422541108.6979009
Approve550288192024-03-24 14:13:39294 days ago1711289619IN
0x76f8A102...D55f4C853
0 POL0.00548466118.42854533
Approve550230222024-03-24 10:27:21295 days ago1711276041IN
0x76f8A102...D55f4C853
0 POL0.0016210235.00221829
Approve550229012024-03-24 10:22:33295 days ago1711275753IN
0x76f8A102...D55f4C853
0 POL0.0016963736.62930003
Approve550164922024-03-24 6:22:15295 days ago1711261335IN
0x76f8A102...D55f4C853
0 POL0.0028379961.27983012
Approve549182022024-03-21 14:56:52297 days ago1711033012IN
0x76f8A102...D55f4C853
0 POL0.0043551194.03859689
Approve549181522024-03-21 14:55:06297 days ago1711032906IN
0x76f8A102...D55f4C853
0 POL0.0045278397.76801438
Approve549181272024-03-21 14:54:12297 days ago1711032852IN
0x76f8A102...D55f4C853
0 POL0.0045938499.19347833
Approve548972652024-03-21 1:13:07298 days ago1710983587IN
0x76f8A102...D55f4C853
0 POL0.00463482100.07831415
Approve548816112024-03-20 15:04:10298 days ago1710947050IN
0x76f8A102...D55f4C853
0 POL0.0039016884.20417376
Approve548799752024-03-20 14:00:22298 days ago1710943222IN
0x76f8A102...D55f4C853
0 POL0.0024458452.47236225
View all transactions

Latest 1 internal transaction

Parent Transaction Hash Block From To
541808642024-03-02 14:39:24316 days ago1709390364
0x76f8A102...D55f4C853
 Contract Creation0 POL
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AKT

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2024-03-02
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;
interface IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from, address to, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
library Address {
    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
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;
        }
    }
}
interface ISwapPair {
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint256);
    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;
    function MINIMUM_LIQUIDITY() external pure returns (uint256);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint256);
    function price1CumulativeLast() external view returns (uint256);
    function kLast() external view returns (uint256);
    function mint(address to) external returns (uint256 liquidity);
    function burn(address to) external returns (uint256 amount0, uint256 amount1);
    function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}
interface ISwapFactory {
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint256) external view returns (address pair);
    function allPairsLength() external view returns (uint256);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface ISwapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);
    function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
    function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) external returns (uint256 amountA, uint256 amountB);
    function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external returns (uint256 amountToken, uint256 amountETH);
    function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts);
    function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts);
    function swapExactETHForTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable returns (uint256[] memory amounts);
    function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts);
    function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts);
    function swapETHForExactTokens(uint256 amountOut, address[] calldata path, address to, uint256 deadline) external payable returns (uint256[] memory amounts);
    function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) external pure returns (uint256 amountB);
    function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) external pure returns (uint256 amountOut);
    function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) external pure returns (uint256 amountIn);
    function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts);
    function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external;
}
contract Ownable {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _transferOwnership(_msgSender());
    }
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
contract Distributor {
    constructor(address token) {
        IERC20(token).approve(msg.sender, uint256(~uint256(0)));
    }
}
contract AKT is IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isFeeExempt;
    uint256 private _totalSupply;
    uint256 private _totalCirculation;
    uint256 public minTotalSupply;
    string private _name;
    string private _symbol;
    address public manager;
    address public market;
    address private _usdtAddress;
    address public swapPair;
    ISwapRouter private _swapRouter;
    Distributor internal _distributor;
    bool _inSwapAndLiquify;
    modifier lockTheSwap() {
        _inSwapAndLiquify = true;
        _;
        _inSwapAndLiquify = false;
    }

    function withdrawToken(IERC20 token, uint256 amount) public {
        if (manager == _msgSender()) {
            token.transfer(msg.sender, amount);
        }
    }
    function setSwapPair(address pair) public {
        if (manager == _msgSender()) {
            swapPair = pair;
        }
    }
    function setSwapRouter(address data) public {
        if (manager == _msgSender()) {
            _swapRouter = ISwapRouter(data);
        }
    }
    function setManager(address account) public {
        if (manager == _msgSender()) {
            manager = account;
        }
    }
    function setIsFeeExempt(address account, bool newValue) public {
        if (manager == _msgSender()) {
            isFeeExempt[account] = newValue;
        }
    }

    constructor() {
        _name = "AKT";
        _symbol = "AKT";
        manager = 0x0440aEaf993e286a64A369614E8bCA24154a1498;
        market = 0x86Cd1F1Cd8b320D0a7126774a1ac9B5d650BDfbC;
        _usdtAddress = 0xc2132D05D31c914a87C6611C10748AEb04B58e8F;
        address routerAddress = 0xedf6066a2b290C185783862C7F4776A2C8077AD1;
        _swapRouter = ISwapRouter(routerAddress);
        swapPair = pairFor(_swapRouter.factory(), address(this), _usdtAddress);
        isFeeExempt[address(this)] = true;
        isFeeExempt[market] = true;
        isFeeExempt[msg.sender] = true;
        isFeeExempt[0xf6Da4D436832c2fb346f91E5ec51F2614e26eBF5] = true;
        _distributor = new Distributor(_usdtAddress);
        _mint(0xf6Da4D436832c2fb346f91E5ec51F2614e26eBF5, 21_0000 * 10 ** decimals());
        renounceOwnership();
    }
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }
    function name() public view virtual override returns (string memory) {
        return _name;
    }
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }
    function totalCirculation() public view virtual returns (uint256) {
        return _totalCirculation;
    }
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = msg.sender;
        _transfer(owner, to, amount);
        return true;
    }
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = msg.sender;
        _approve(owner, spender, amount);
        return true;
    }
    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = msg.sender;
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = msg.sender;
        _approve(owner, spender, _allowances[owner][spender] + addedValue);
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = msg.sender;
        uint256 currentAllowance = _allowances[owner][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }
        return true;
    }
    function _transfer(address from, address recipient, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        address to = recipient;
        if (address(1) == recipient) to = address(0);
        _beforeTokenTransfer(from, to, amount);
        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        if (to == swapPair && !_inSwapAndLiquify && balanceOf(address(this)) > getAutoSwapMin()) {
            _swapAndLiquify();
        }
        if (_inSwapAndLiquify || isFeeExempt[from] || isFeeExempt[to]) {
            _balances[to] += amount;
            emit Transfer(from, to, amount);
        } else if (from == swapPair) {
            uint256 every = amount.div(100);
            _balances[address(this)] += every * 3;
            emit Transfer(from, address(this), every * 3);
            _balances[to] += amount - every * 3;
            emit Transfer(from, to, amount - every * 3);
        } else if (to == swapPair) {
            uint256 every = amount.div(100);
            _balances[address(this)] += every * 10;
            emit Transfer(from, address(this), every * 10);
            _balances[to] += amount - every * 10;
            emit Transfer(from, to, amount - every * 10);
        } else {
            _balances[to] += amount;
            emit Transfer(from, to, amount);
        }
        _afterTokenTransfer(from, to, amount);
    }
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply += amount;
        _totalCirculation += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
        _afterTokenTransfer(address(0), account, amount);
    }
    function _burn(address account, uint256 amount) internal virtual returns (bool) {
        require(account != address(0), "ERC20: burn from the zero address");
        if (_totalCirculation > minTotalSupply + amount) {
            _beforeTokenTransfer(account, address(0), amount);
            uint256 accountBalance = _balances[account];
            require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
            unchecked {
                _balances[account] = accountBalance - amount;
                _balances[address(0)] += amount;
            }
            _totalCirculation -= amount;
            emit Transfer(account, address(0), amount);
            _afterTokenTransfer(account, address(0), amount);
            return true;
        }
        return false;
    }
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        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 _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}
    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}

    function getPrice() public view returns (uint256) {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _usdtAddress;
        if (swapPair == address(0)) return 0;
        (uint256 reserve1, uint256 reserve2, ) = ISwapPair(swapPair)
            .getReserves();
        if (reserve1 == 0 || reserve2 == 0) {
            return 0;
        } else {
            return _swapRouter.getAmountsOut(1 * 10 ** decimals(), path)[1];
        }
    }
    function swapAndTrans() public {
        if (!_inSwapAndLiquify && balanceOf(address(this)) > getAutoSwapMin()) {
            _swapAndLiquify();
        }
    }
    function getAutoSwapMin() public view returns (uint256) {
        uint256 price = getPrice();
        if (price == 0) {
            return _totalSupply;
        } else {
            return (10 * 1e18 * 1e6) / price;
        }
    }

    function _swapAndLiquify() private lockTheSwap returns (bool) {
        IERC20 USDT = IERC20(_usdtAddress);
        uint256 amount = (balanceOf(address(this)) / 2);
        if (amount > 0) {
            address token0 = ISwapPair(swapPair).token0();
            (uint256 reserve0, uint256 reserve1, ) = ISwapPair(swapPair)
                .getReserves();
            uint256 tokenPool = reserve0;
            if (token0 != address(this)) tokenPool = reserve1;
            if (amount > tokenPool / 100) {
                amount = tokenPool / 100;
            }
            _swapTokensForUSDT(amount);
            uint256 amountU = USDT.balanceOf(address(_distributor));
            USDT.transferFrom(address(_distributor), market, amountU);
            return true;
        }
        return false;
    }
    function _swapTokensForUSDT(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _usdtAddress;
        _approve(address(this), address(_swapRouter), tokenAmount);
        _swapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(_distributor), block.timestamp);
        emit SwapTokensForTokens(tokenAmount, path);
    }
    event SwapTokensForTokens(uint256 amountIn, address[] path);
    function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {
        require(tokenA != tokenB, "UniswapV2Library: IDENTICAL_ADDRESSES");
        (token0, token1) = tokenA < tokenB
            ? (tokenA, tokenB)
            : (tokenB, tokenA);
        require(token0 != address(0), "UniswapV2Library: ZERO_ADDRESS");
    }
    function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {
        (address token0, address token1) = sortTokens(tokenA, tokenB);
        pair = address(uint160(uint256(keccak256(abi.encodePacked(hex"ff", factory, keccak256(abi.encodePacked(token0, token1)), hex"96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f")))));
    }
}

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":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":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForTokens","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAutoSwapMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPrice","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":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"market","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"setSwapPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"data","type":"address"}],"name":"setSwapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndTrans","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalCirculation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506200001d33620002c8565b6040805180820190915260038152621052d560ea1b602082015260079062000046908262000723565b506040805180820190915260038152621052d560ea1b602082015260089062000070908262000723565b5060098054730440aeaf993e286a64a369614e8bca24154a14986001600160a01b031991821617909155600a80547386cd1f1cd8b320d0a7126774a1ac9b5d650bdfbc908316179055600b805473c2132d05d31c914a87c6611c10748aeb04b58e8f908316179055600d805473edf6066a2b290c185783862c7f4776a2c8077ad19216821790556040805163c45a015560e01b815290516200017491839163c45a0155916004808201926020929091908290030181865afa1580156200013a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001609190620007ef565b600b5430906001600160a01b031662000318565b600c80546001600160a01b0319166001600160a01b0392831617905530600090815260036020526040808220805460ff199081166001908117909255600a54851684528284208054821683179055338452828420805482168317905573f6da4d436832c2fb346f91e5ec51f2614e26ebf59093527f3ad9171aad86ee1e307d5155412d199c751c526083537811ce524666935b7cfb805490931617909155600b549051911690620002259062000671565b6001600160a01b039091168152602001604051809103906000f08015801562000252573d6000803e3d6000fd5b50600e80546001600160a01b0319166001600160a01b0392909216919091179055620002b773f6da4d436832c2fb346f91e5ec51f2614e26ebf562000295601290565b620002a290600a62000936565b620002b1906203345062000947565b62000401565b620002c162000505565b5062000977565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080806200032885856200056f565b6040516001600160601b0319606084811b8216602084015283901b1660348201529193509150869060480160405160208183030381529060405280519060200120604051602001620003df9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b6001600160601b031916600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b60408051601f1981840301815291905280516020909101209695505050505050565b6001600160a01b0382166200045d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b806004600082825462000471919062000961565b9250508190555080600560008282546200048c919062000961565b90915550506001600160a01b03821660009081526001602052604081208054839290620004bb90849062000961565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000546001600160a01b03163314620005615760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000454565b6200056d6000620002c8565b565b600080826001600160a01b0316846001600160a01b031603620005e35760405162461bcd60e51b815260206004820152602560248201527f556e697377617056324c6962726172793a204944454e544943414c5f41444452604482015264455353455360d81b606482015260840162000454565b826001600160a01b0316846001600160a01b0316106200060557828462000608565b83835b90925090506001600160a01b038216620006655760405162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604482015260640162000454565b9250929050565b505050565b61014780620026ac83390190565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620006aa57607f821691505b602082108103620006cb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200066c57600081815260208120601f850160051c81016020861015620006fa5750805b601f850160051c820191505b818110156200071b5782815560010162000706565b505050505050565b81516001600160401b038111156200073f576200073f6200067f565b620007578162000750845462000695565b84620006d1565b602080601f8311600181146200078f5760008415620007765750858301515b600019600386901b1c1916600185901b1785556200071b565b600085815260208120601f198616915b82811015620007c0578886015182559484019460019091019084016200079f565b5085821015620007df5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200080257600080fd5b81516001600160a01b03811681146200081a57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620008785781600019048211156200085c576200085c62000821565b808516156200086a57918102915b93841c93908002906200083c565b509250929050565b600082620008915750600162000930565b81620008a05750600062000930565b8160018114620008b95760028114620008c457620008e4565b600191505062000930565b60ff841115620008d857620008d862000821565b50506001821b62000930565b5060208310610133831016604e8410600b841016171562000909575081810a62000930565b62000915838362000837565b80600019048211156200092c576200092c62000821565b0290505b92915050565b60006200081a60ff84168362000880565b808202811582820484141762000930576200093062000821565b8082018082111562000930576200093062000821565b611d2580620009876000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639e281a98116100a2578063d0ebdbe711610071578063d0ebdbe7146103c2578063d1daa4f4146103d5578063dd62ed3e146103dd578063f2fde38b1461041657600080fd5b80639e281a9814610381578063a457c2d714610394578063a9059cbb146103a7578063afe9d95c146103ba57600080fd5b806380f55605116100de57806380f556051461034d5780638da5cb5b1461036057806395d89b411461037157806398d5fdca1461037957600080fd5b8063715018a61461032957806373a432bb1461033157806379db63461461034457600080fd5b80633f4218e011610171578063481c6a751161014b578063481c6a75146102d25780635dcf8d2b146102e5578063658d4b7f146102ed57806370a082311461030057600080fd5b80633f4218e01461028757806341273657146102aa57806342966c68146102bf57600080fd5b806323b872dd116101ad57806323b872dd1461022757806326991cc81461023a578063313ce56714610265578063395093511461027457600080fd5b806306fdde03146101d4578063095ea7b3146101f257806318160ddd14610215575b600080fd5b6101dc610429565b6040516101e99190611777565b60405180910390f35b6102056102003660046117da565b6104bb565b60405190151581526020016101e9565b6004545b6040519081526020016101e9565b610205610235366004611806565b6104d5565b600c5461024d906001600160a01b031681565b6040516001600160a01b0390911681526020016101e9565b604051601281526020016101e9565b6102056102823660046117da565b6104f9565b610205610295366004611847565b60036020526000908152604090205460ff1681565b6102bd6102b8366004611847565b610538565b005b6102bd6102cd366004611864565b61056b565b60095461024d906001600160a01b031681565b600554610219565b6102bd6102fb36600461188b565b610579565b61021961030e366004611847565b6001600160a01b031660009081526001602052604090205490565b6102bd6105b7565b6102bd61033f366004611847565b610622565b61021960065481565b600a5461024d906001600160a01b031681565b6000546001600160a01b031661024d565b6101dc610656565b610219610665565b6102bd61038f3660046117da565b61084f565b6102056103a23660046117da565b6108d9565b6102056103b53660046117da565b61096b565b6102bd610979565b6102bd6103d0366004611847565b6109b5565b6102196109e9565b6102196103eb3660046118c4565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6102bd610424366004611847565b610a21565b606060078054610438906118f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610464906118f2565b80156104b15780601f10610486576101008083540402835291602001916104b1565b820191906000526020600020905b81548152906001019060200180831161049457829003601f168201915b5050505050905090565b6000336104c9818585610ae9565b60019150505b92915050565b6000336104e3858285610c0d565b6104ee858585610c9f565b506001949350505050565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091906104c99082908690610533908790611942565b610ae9565b600954336001600160a01b039091160361056857600d80546001600160a01b0319166001600160a01b0383161790555b50565b61057533826111a4565b5050565b600954336001600160a01b0390911603610575576001600160a01b0382166000908152600360205260409020805482151560ff199091161790555050565b6000546001600160a01b031633146106165760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6106206000611332565b565b600954336001600160a01b039091160361056857600c80546001600160a01b0383166001600160a01b031990911617905550565b606060088054610438906118f2565b60408051600280825260608201835260009283929190602083019080368337019050509050308160008151811061069e5761069e61196b565b6001600160a01b039283166020918202929092010152600b548251911690829060019081106106cf576106cf61196b565b6001600160a01b039283166020918202929092010152600c54166106f557600091505090565b600080600c60009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561074b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076f919061199d565b506001600160701b031691506001600160701b031691508160001480610793575080155b156107a2576000935050505090565b600d546001600160a01b031663d06ca61f6107bf6012600a611ac2565b6107ca906001611ad1565b856040518363ffffffff1660e01b81526004016107e8929190611b2c565b600060405180830381865afa158015610805573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261082d9190810190611b4d565b60018151811061083f5761083f61196b565b6020026020010151935050505090565b600954336001600160a01b03909116036105755760405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d49190611c0b565b505050565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091908381101561095e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161060d565b6104ee8286868403610ae9565b6000336104c9818585610c9f565b600e54600160a01b900460ff161580156109a857506109966109e9565b30600090815260016020526040902054115b1561062057610568611382565b600954336001600160a01b039091160361056857600980546001600160a01b0383166001600160a01b031990911617905550565b6000806109f4610665565b905080600003610a0657505060045490565b610a1b816a084595161401484a000000611c28565b91505090565b6000546001600160a01b03163314610a7b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060d565b6001600160a01b038116610ae05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060d565b61056881611332565b6001600160a01b038316610b4b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161060d565b6001600160a01b038216610bac5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161060d565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600260209081526040808320938616835292905220546000198114610c995781811015610c8c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161060d565b610c998484848403610ae9565b50505050565b6001600160a01b038316610d035760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161060d565b6001600160a01b038216610d655760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161060d565b816001600160a01b038116600103610d7b575060005b6001600160a01b03841660009081526001602052604090205482811015610df35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161060d565b6001600160a01b0380861660009081526001602052604090208483039055600c548382169116148015610e305750600e54600160a01b900460ff16155b8015610e515750610e3f6109e9565b30600090815260016020526040902054115b15610e6057610e5e611382565b505b600e54600160a01b900460ff1680610e9057506001600160a01b03851660009081526003602052604090205460ff165b80610eb357506001600160a01b03821660009081526003602052604090205460ff165b15610f27576001600160a01b03821660009081526001602052604081208054859290610ee0908490611942565b92505081905550816001600160a01b0316856001600160a01b0316600080516020611cd083398151915285604051610f1a91815260200190565b60405180910390a361119d565b600c546001600160a01b039081169086160361103d576000610f4a84606461162c565b9050610f57816003611ad1565b3060009081526001602052604081208054909190610f76908490611942565b909155503090506001600160a01b038716600080516020611cd0833981519152610fa1846003611ad1565b60405190815260200160405180910390a3610fbd816003611ad1565b610fc79085611c4a565b6001600160a01b03841660009081526001602052604081208054909190610fef908490611942565b90915550506001600160a01b03808416908716600080516020611cd083398151915261101c846003611ad1565b6110269088611c4a565b60405190815260200160405180910390a35061119d565b600c546001600160a01b039081169083160361113257600061106084606461162c565b905061106d81600a611ad1565b306000908152600160205260408120805490919061108c908490611942565b909155503090506001600160a01b038716600080516020611cd08339815191526110b784600a611ad1565b60405190815260200160405180910390a36110d381600a611ad1565b6110dd9085611c4a565b6001600160a01b03841660009081526001602052604081208054909190611105908490611942565b90915550506001600160a01b03808416908716600080516020611cd083398151915261101c84600a611ad1565b6001600160a01b0382166000908152600160205260408120805485929061115a908490611942565b92505081905550816001600160a01b0316856001600160a01b0316600080516020611cd08339815191528560405161119491815260200190565b60405180910390a35b5050505050565b60006001600160a01b0383166112065760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161060d565b816006546112149190611942565b6005541115611329576001600160a01b038316600090815260016020526040902054828110156112915760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161060d565b6001600160a01b038416600090815260016020526040812084830390558080527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49805485019055600580548592906112ea908490611c4a565b90915550506040518381526000906001600160a01b03861690600080516020611cd08339815191529060200160405180910390a35b60019150506104cf565b50600092915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600e805460ff60a01b1916600160a01b179055600b546000906001600160a01b03168160026113c6306001600160a01b031660009081526001602052604090205490565b6113d09190611c28565b9050801561161557600c5460408051630dfe168160e01b815290516000926001600160a01b031691630dfe16819160048083019260209291908290030181865afa158015611422573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114469190611c5d565b9050600080600c60009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561149e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c2919061199d565b506001600160701b039182169350169050816001600160a01b03841630146114e75750805b6114f2606482611c28565b85111561150757611504606482611c28565b94505b6115108561163f565b600e546040516370a0823160e01b81526001600160a01b0391821660048201526000918816906370a0823190602401602060405180830381865afa15801561155c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115809190611c7a565b600e54600a546040516323b872dd60e01b81526001600160a01b0392831660048201529082166024820152604481018390529192508816906323b872dd906064016020604051808303816000875af11580156115e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116049190611c0b565b50600197505050505050505061161c565b6000925050505b600e805460ff60a01b1916905590565b60006116388284611c28565b9392505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106116745761167461196b565b6001600160a01b039283166020918202929092010152600b548251911690829060019081106116a5576116a561196b565b6001600160a01b039283166020918202929092010152600d546116cb9130911684610ae9565b600d54600e54604051635c11d79560e01b81526001600160a01b0392831692635c11d7959261170892879260009288929116904290600401611c93565b600060405180830381600087803b15801561172257600080fd5b505af1158015611736573d6000803e3d6000fd5b505050507f7ec0e62e5eb75d92620f9df4e706e28dac160965ba772960cde791c489038447828260405161176b929190611b2c565b60405180910390a15050565b600060208083528351808285015260005b818110156117a457858101830151858201604001528201611788565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461056857600080fd5b600080604083850312156117ed57600080fd5b82356117f8816117c5565b946020939093013593505050565b60008060006060848603121561181b57600080fd5b8335611826816117c5565b92506020840135611836816117c5565b929592945050506040919091013590565b60006020828403121561185957600080fd5b8135611638816117c5565b60006020828403121561187657600080fd5b5035919050565b801515811461056857600080fd5b6000806040838503121561189e57600080fd5b82356118a9816117c5565b915060208301356118b98161187d565b809150509250929050565b600080604083850312156118d757600080fd5b82356118e2816117c5565b915060208301356118b9816117c5565b600181811c9082168061190657607f821691505b60208210810361192657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156104cf576104cf61192c565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b80516001600160701b038116811461199857600080fd5b919050565b6000806000606084860312156119b257600080fd5b6119bb84611981565b92506119c960208501611981565b9150604084015163ffffffff811681146119e257600080fd5b809150509250925092565b600181815b80851115611a28578160001904821115611a0e57611a0e61192c565b80851615611a1b57918102915b93841c93908002906119f2565b509250929050565b600082611a3f575060016104cf565b81611a4c575060006104cf565b816001811461131f5760028103611a795760ff841115611a6e57611a6e61192c565b50506001821b6104cf565b5060208310610133831016604e8410600b8410161715611a9c575081810a6104cf565b611aa683836119ed565b8060001904821115611aba57611aba61192c565b029392505050565b600061163860ff841683611a30565b80820281158282048414176104cf576104cf61192c565b600081518084526020808501945080840160005b83811015611b215781516001600160a01b031687529582019590820190600101611afc565b509495945050505050565b828152604060208201526000611b456040830184611ae8565b949350505050565b60006020808385031215611b6057600080fd5b825167ffffffffffffffff80821115611b7857600080fd5b818501915085601f830112611b8c57600080fd5b815181811115611b9e57611b9e611955565b8060051b604051601f19603f83011681018181108582111715611bc357611bc3611955565b604052918252848201925083810185019188831115611be157600080fd5b938501935b82851015611bff57845184529385019392850192611be6565b98975050505050505050565b600060208284031215611c1d57600080fd5b81516116388161187d565b600082611c4557634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156104cf576104cf61192c565b600060208284031215611c6f57600080fd5b8151611638816117c5565b600060208284031215611c8c57600080fd5b5051919050565b85815284602082015260a060408201526000611cb260a0830186611ae8565b6001600160a01b039490941660608301525060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220701a8ab73abb8898d4d614aecd4a7cea4e3bcb82b6513137886c160a99110af664736f6c63430008110033608060405234801561001057600080fd5b5060405161014738038061014783398101604081905261002f916100a8565b60405163095ea7b360e01b815233600482015260001960248201526001600160a01b0382169063095ea7b3906044016020604051808303816000875af115801561007d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a191906100d8565b50506100fa565b6000602082840312156100ba57600080fd5b81516001600160a01b03811681146100d157600080fd5b9392505050565b6000602082840312156100ea57600080fd5b815180151581146100d157600080fd5b603f806101086000396000f3fe6080604052600080fdfea26469706673582212200e6d214d3545d31643816a390f633534dd0855691ce8e3c137ddbabc3012d43064736f6c63430008110033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639e281a98116100a2578063d0ebdbe711610071578063d0ebdbe7146103c2578063d1daa4f4146103d5578063dd62ed3e146103dd578063f2fde38b1461041657600080fd5b80639e281a9814610381578063a457c2d714610394578063a9059cbb146103a7578063afe9d95c146103ba57600080fd5b806380f55605116100de57806380f556051461034d5780638da5cb5b1461036057806395d89b411461037157806398d5fdca1461037957600080fd5b8063715018a61461032957806373a432bb1461033157806379db63461461034457600080fd5b80633f4218e011610171578063481c6a751161014b578063481c6a75146102d25780635dcf8d2b146102e5578063658d4b7f146102ed57806370a082311461030057600080fd5b80633f4218e01461028757806341273657146102aa57806342966c68146102bf57600080fd5b806323b872dd116101ad57806323b872dd1461022757806326991cc81461023a578063313ce56714610265578063395093511461027457600080fd5b806306fdde03146101d4578063095ea7b3146101f257806318160ddd14610215575b600080fd5b6101dc610429565b6040516101e99190611777565b60405180910390f35b6102056102003660046117da565b6104bb565b60405190151581526020016101e9565b6004545b6040519081526020016101e9565b610205610235366004611806565b6104d5565b600c5461024d906001600160a01b031681565b6040516001600160a01b0390911681526020016101e9565b604051601281526020016101e9565b6102056102823660046117da565b6104f9565b610205610295366004611847565b60036020526000908152604090205460ff1681565b6102bd6102b8366004611847565b610538565b005b6102bd6102cd366004611864565b61056b565b60095461024d906001600160a01b031681565b600554610219565b6102bd6102fb36600461188b565b610579565b61021961030e366004611847565b6001600160a01b031660009081526001602052604090205490565b6102bd6105b7565b6102bd61033f366004611847565b610622565b61021960065481565b600a5461024d906001600160a01b031681565b6000546001600160a01b031661024d565b6101dc610656565b610219610665565b6102bd61038f3660046117da565b61084f565b6102056103a23660046117da565b6108d9565b6102056103b53660046117da565b61096b565b6102bd610979565b6102bd6103d0366004611847565b6109b5565b6102196109e9565b6102196103eb3660046118c4565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6102bd610424366004611847565b610a21565b606060078054610438906118f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610464906118f2565b80156104b15780601f10610486576101008083540402835291602001916104b1565b820191906000526020600020905b81548152906001019060200180831161049457829003601f168201915b5050505050905090565b6000336104c9818585610ae9565b60019150505b92915050565b6000336104e3858285610c0d565b6104ee858585610c9f565b506001949350505050565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091906104c99082908690610533908790611942565b610ae9565b600954336001600160a01b039091160361056857600d80546001600160a01b0319166001600160a01b0383161790555b50565b61057533826111a4565b5050565b600954336001600160a01b0390911603610575576001600160a01b0382166000908152600360205260409020805482151560ff199091161790555050565b6000546001600160a01b031633146106165760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6106206000611332565b565b600954336001600160a01b039091160361056857600c80546001600160a01b0383166001600160a01b031990911617905550565b606060088054610438906118f2565b60408051600280825260608201835260009283929190602083019080368337019050509050308160008151811061069e5761069e61196b565b6001600160a01b039283166020918202929092010152600b548251911690829060019081106106cf576106cf61196b565b6001600160a01b039283166020918202929092010152600c54166106f557600091505090565b600080600c60009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561074b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076f919061199d565b506001600160701b031691506001600160701b031691508160001480610793575080155b156107a2576000935050505090565b600d546001600160a01b031663d06ca61f6107bf6012600a611ac2565b6107ca906001611ad1565b856040518363ffffffff1660e01b81526004016107e8929190611b2c565b600060405180830381865afa158015610805573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261082d9190810190611b4d565b60018151811061083f5761083f61196b565b6020026020010151935050505090565b600954336001600160a01b03909116036105755760405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d49190611c0b565b505050565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091908381101561095e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161060d565b6104ee8286868403610ae9565b6000336104c9818585610c9f565b600e54600160a01b900460ff161580156109a857506109966109e9565b30600090815260016020526040902054115b1561062057610568611382565b600954336001600160a01b039091160361056857600980546001600160a01b0383166001600160a01b031990911617905550565b6000806109f4610665565b905080600003610a0657505060045490565b610a1b816a084595161401484a000000611c28565b91505090565b6000546001600160a01b03163314610a7b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060d565b6001600160a01b038116610ae05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060d565b61056881611332565b6001600160a01b038316610b4b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161060d565b6001600160a01b038216610bac5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161060d565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600260209081526040808320938616835292905220546000198114610c995781811015610c8c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161060d565b610c998484848403610ae9565b50505050565b6001600160a01b038316610d035760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161060d565b6001600160a01b038216610d655760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161060d565b816001600160a01b038116600103610d7b575060005b6001600160a01b03841660009081526001602052604090205482811015610df35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161060d565b6001600160a01b0380861660009081526001602052604090208483039055600c548382169116148015610e305750600e54600160a01b900460ff16155b8015610e515750610e3f6109e9565b30600090815260016020526040902054115b15610e6057610e5e611382565b505b600e54600160a01b900460ff1680610e9057506001600160a01b03851660009081526003602052604090205460ff165b80610eb357506001600160a01b03821660009081526003602052604090205460ff165b15610f27576001600160a01b03821660009081526001602052604081208054859290610ee0908490611942565b92505081905550816001600160a01b0316856001600160a01b0316600080516020611cd083398151915285604051610f1a91815260200190565b60405180910390a361119d565b600c546001600160a01b039081169086160361103d576000610f4a84606461162c565b9050610f57816003611ad1565b3060009081526001602052604081208054909190610f76908490611942565b909155503090506001600160a01b038716600080516020611cd0833981519152610fa1846003611ad1565b60405190815260200160405180910390a3610fbd816003611ad1565b610fc79085611c4a565b6001600160a01b03841660009081526001602052604081208054909190610fef908490611942565b90915550506001600160a01b03808416908716600080516020611cd083398151915261101c846003611ad1565b6110269088611c4a565b60405190815260200160405180910390a35061119d565b600c546001600160a01b039081169083160361113257600061106084606461162c565b905061106d81600a611ad1565b306000908152600160205260408120805490919061108c908490611942565b909155503090506001600160a01b038716600080516020611cd08339815191526110b784600a611ad1565b60405190815260200160405180910390a36110d381600a611ad1565b6110dd9085611c4a565b6001600160a01b03841660009081526001602052604081208054909190611105908490611942565b90915550506001600160a01b03808416908716600080516020611cd083398151915261101c84600a611ad1565b6001600160a01b0382166000908152600160205260408120805485929061115a908490611942565b92505081905550816001600160a01b0316856001600160a01b0316600080516020611cd08339815191528560405161119491815260200190565b60405180910390a35b5050505050565b60006001600160a01b0383166112065760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161060d565b816006546112149190611942565b6005541115611329576001600160a01b038316600090815260016020526040902054828110156112915760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161060d565b6001600160a01b038416600090815260016020526040812084830390558080527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49805485019055600580548592906112ea908490611c4a565b90915550506040518381526000906001600160a01b03861690600080516020611cd08339815191529060200160405180910390a35b60019150506104cf565b50600092915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600e805460ff60a01b1916600160a01b179055600b546000906001600160a01b03168160026113c6306001600160a01b031660009081526001602052604090205490565b6113d09190611c28565b9050801561161557600c5460408051630dfe168160e01b815290516000926001600160a01b031691630dfe16819160048083019260209291908290030181865afa158015611422573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114469190611c5d565b9050600080600c60009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561149e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c2919061199d565b506001600160701b039182169350169050816001600160a01b03841630146114e75750805b6114f2606482611c28565b85111561150757611504606482611c28565b94505b6115108561163f565b600e546040516370a0823160e01b81526001600160a01b0391821660048201526000918816906370a0823190602401602060405180830381865afa15801561155c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115809190611c7a565b600e54600a546040516323b872dd60e01b81526001600160a01b0392831660048201529082166024820152604481018390529192508816906323b872dd906064016020604051808303816000875af11580156115e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116049190611c0b565b50600197505050505050505061161c565b6000925050505b600e805460ff60a01b1916905590565b60006116388284611c28565b9392505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106116745761167461196b565b6001600160a01b039283166020918202929092010152600b548251911690829060019081106116a5576116a561196b565b6001600160a01b039283166020918202929092010152600d546116cb9130911684610ae9565b600d54600e54604051635c11d79560e01b81526001600160a01b0392831692635c11d7959261170892879260009288929116904290600401611c93565b600060405180830381600087803b15801561172257600080fd5b505af1158015611736573d6000803e3d6000fd5b505050507f7ec0e62e5eb75d92620f9df4e706e28dac160965ba772960cde791c489038447828260405161176b929190611b2c565b60405180910390a15050565b600060208083528351808285015260005b818110156117a457858101830151858201604001528201611788565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461056857600080fd5b600080604083850312156117ed57600080fd5b82356117f8816117c5565b946020939093013593505050565b60008060006060848603121561181b57600080fd5b8335611826816117c5565b92506020840135611836816117c5565b929592945050506040919091013590565b60006020828403121561185957600080fd5b8135611638816117c5565b60006020828403121561187657600080fd5b5035919050565b801515811461056857600080fd5b6000806040838503121561189e57600080fd5b82356118a9816117c5565b915060208301356118b98161187d565b809150509250929050565b600080604083850312156118d757600080fd5b82356118e2816117c5565b915060208301356118b9816117c5565b600181811c9082168061190657607f821691505b60208210810361192657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156104cf576104cf61192c565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b80516001600160701b038116811461199857600080fd5b919050565b6000806000606084860312156119b257600080fd5b6119bb84611981565b92506119c960208501611981565b9150604084015163ffffffff811681146119e257600080fd5b809150509250925092565b600181815b80851115611a28578160001904821115611a0e57611a0e61192c565b80851615611a1b57918102915b93841c93908002906119f2565b509250929050565b600082611a3f575060016104cf565b81611a4c575060006104cf565b816001811461131f5760028103611a795760ff841115611a6e57611a6e61192c565b50506001821b6104cf565b5060208310610133831016604e8410600b8410161715611a9c575081810a6104cf565b611aa683836119ed565b8060001904821115611aba57611aba61192c565b029392505050565b600061163860ff841683611a30565b80820281158282048414176104cf576104cf61192c565b600081518084526020808501945080840160005b83811015611b215781516001600160a01b031687529582019590820190600101611afc565b509495945050505050565b828152604060208201526000611b456040830184611ae8565b949350505050565b60006020808385031215611b6057600080fd5b825167ffffffffffffffff80821115611b7857600080fd5b818501915085601f830112611b8c57600080fd5b815181811115611b9e57611b9e611955565b8060051b604051601f19603f83011681018181108582111715611bc357611bc3611955565b604052918252848201925083810185019188831115611be157600080fd5b938501935b82851015611bff57845184529385019392850192611be6565b98975050505050505050565b600060208284031215611c1d57600080fd5b81516116388161187d565b600082611c4557634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156104cf576104cf61192c565b600060208284031215611c6f57600080fd5b8151611638816117c5565b600060208284031215611c8c57600080fd5b5051919050565b85815284602082015260a060408201526000611cb260a0830186611ae8565b6001600160a01b039490941660608301525060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220701a8ab73abb8898d4d614aecd4a7cea4e3bcb82b6513137886c160a99110af664736f6c63430008110033

Deployed Bytecode Sourcemap

12485:11658:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15011:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16042:199;;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;16042:199:0;1023:187:1;15326:108:0;15414:12;;15326:108;;;1361:25:1;;;1349:2;1334:18;15326:108:0;1215:177:1;16247:259:0;;;;;;:::i;:::-;;:::i;13024:23::-;;;;;-1:-1:-1;;;;;13024:23:0;;;;;;-1:-1:-1;;;;;2022:32:1;;;2004:51;;1992:2;1977:18;13024:23:0;1858:203:1;15227:93:0;;;15310:2;2208:36:1;;2196:2;2181:18;15227:93:0;2066:184:1;16512:238:0;;;;;;:::i;:::-;;:::i;12715:43::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;13594:149;;;;;;:::i;:::-;;:::i;:::-;;14914:91;;;;;;:::i;:::-;;:::i;12932:22::-;;;;;-1:-1:-1;;;;;12932:22:0;;;15440:109;15524:17;;15440:109;;13890:168;;;;;;:::i;:::-;;:::i;15555:127::-;;;;;;:::i;:::-;-1:-1:-1;;;;;15656:18:0;15629:7;15656:18;;;:9;:18;;;;;;;15555:127;11839:103;;;:::i;13457:131::-;;;;;;:::i;:::-;;:::i;12840:29::-;;;;;;12961:21;;;;;-1:-1:-1;;;;;12961:21:0;;;11620:87;11666:7;11693:6;-1:-1:-1;;;;;11693:6:0;11620:87;;15117:104;;;:::i;21107:499::-;;;:::i;13283:168::-;;;;;;:::i;:::-;;:::i;16756:434::-;;;;;;:::i;:::-;;:::i;15688:191::-;;;;;;:::i;:::-;;:::i;21612:164::-;;;:::i;13749:135::-;;;;;;:::i;:::-;;:::i;21782:238::-;;;:::i;15885:151::-;;;;;;:::i;:::-;-1:-1:-1;;;;;16001:18:0;;;15974:7;16001:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15885:151;11948:201;;;;;;:::i;:::-;;:::i;15011:100::-;15065:13;15098:5;15091:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15011:100;:::o;16042:199::-;16125:4;16158:10;16179:32;16158:10;16195:7;16204:6;16179:8;:32::i;:::-;16229:4;16222:11;;;16042:199;;;;;:::o;16247:259::-;16344:4;16379:10;16400:38;16416:4;16379:10;16431:6;16400:15;:38::i;:::-;16449:27;16459:4;16465:2;16469:6;16449:9;:27::i;:::-;-1:-1:-1;16494:4:0;;16247:259;-1:-1:-1;;;;16247:259:0:o;16512:238::-;16633:10;16600:4;16679:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;16679:27:0;;;;;;;;;;16600:4;;16633:10;16654:66;;16633:10;;16670:7;;16679:40;;16709:10;;16679:40;:::i;:::-;16654:8;:66::i;13594:149::-;13653:7;;11489:10;-1:-1:-1;;;;;13653:7:0;;;:23;13649:87;;13693:11;:31;;-1:-1:-1;;;;;;13693:31:0;-1:-1:-1;;;;;13693:31:0;;;;;13649:87;13594:149;:::o;14914:91::-;14970:27;11489:10;14990:6;14970:5;:27::i;:::-;;14914:91;:::o;13890:168::-;13968:7;;11489:10;-1:-1:-1;;;;;13968:7:0;;;:23;13964:87;;-1:-1:-1;;;;;14008:20:0;;;;;;:11;:20;;;;;:31;;;;;-1:-1:-1;;14008:31:0;;;;;;13890:168;;:::o;11839:103::-;11666:7;11693:6;-1:-1:-1;;;;;11693:6:0;11489:10;11753:23;11745:68;;;;-1:-1:-1;;;11745:68:0;;4777:2:1;11745:68:0;;;4759:21:1;;;4796:18;;;4789:30;4855:34;4835:18;;;4828:62;4907:18;;11745:68:0;;;;;;;;;11904:30:::1;11931:1;11904:18;:30::i;:::-;11839:103::o:0;13457:131::-;13514:7;;11489:10;-1:-1:-1;;;;;13514:7:0;;;:23;13510:71;;13554:8;:15;;-1:-1:-1;;;;;13554:15:0;;-1:-1:-1;;;;;;13554:15:0;;;;;;13457:131;:::o;15117:104::-;15173:13;15206:7;15199:14;;;;;:::i;21107:499::-;21192:16;;;21206:1;21192:16;;;;;;;;21148:7;;;;21192:16;21206:1;21192:16;;;;;;;;;;-1:-1:-1;21192:16:0;21168:40;;21237:4;21219;21224:1;21219:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21219:23:0;;;:7;;;;;;;;;:23;21263:12;;21253:7;;21263:12;;;21253:4;;21263:12;;21253:7;;;;;;:::i;:::-;-1:-1:-1;;;;;21253:22:0;;;:7;;;;;;;;;:22;21290:8;;;21286:36;;21321:1;21314:8;;;21107:499;:::o;21286:36::-;21334:16;21352;21384:8;;;;;;;;;-1:-1:-1;;;;;21384:8:0;-1:-1:-1;;;;;21374:45:0;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21333:88;-1:-1:-1;;;;;21333:88:0;;;-1:-1:-1;;;;;21333:88:0;;;21436:8;21448:1;21436:13;:30;;;-1:-1:-1;21453:13:0;;21436:30;21432:167;;;21490:1;21483:8;;;;;21107:499;:::o;21432:167::-;21531:11;;-1:-1:-1;;;;;21531:11:0;:25;21561:16;15310:2;21561;:16;:::i;:::-;21557:20;;:1;:20;:::i;:::-;21579:4;21531:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21531:53:0;;;;;;;;;;;;:::i;:::-;21585:1;21531:56;;;;;;;;:::i;:::-;;;;;;;21524:63;;;;;21107:499;:::o;13283:168::-;13358:7;;11489:10;-1:-1:-1;;;;;13358:7:0;;;:23;13354:90;;13398:34;;-1:-1:-1;;;13398:34:0;;13413:10;13398:34;;;9491:51:1;9558:18;;;9551:34;;;-1:-1:-1;;;;;13398:14:0;;;;;9464:18:1;;13398:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13283:168;;:::o;16756:434::-;16882:10;16849:4;16930:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;16930:27:0;;;;;;;;;;16849:4;;16882:10;16976:35;;;;16968:85;;;;-1:-1:-1;;;16968:85:0;;10048:2:1;16968:85:0;;;10030:21:1;10087:2;10067:18;;;10060:30;10126:34;10106:18;;;10099:62;-1:-1:-1;;;10177:18:1;;;10170:35;10222:19;;16968:85:0;9846:401:1;16968:85:0;17089:60;17098:5;17105:7;17133:15;17114:16;:34;17089:8;:60::i;15688:191::-;15767:4;15800:10;15821:28;15800:10;15838:2;15842:6;15821:9;:28::i;21612:164::-;21659:17;;-1:-1:-1;;;21659:17:0;;;;21658:18;:65;;;;;21707:16;:14;:16::i;:::-;21698:4;15629:7;15656:18;;;:9;:18;;;;;;21680:43;21658:65;21654:115;;;21740:17;:15;:17::i;13749:135::-;13808:7;;11489:10;-1:-1:-1;;;;;13808:7:0;;;:23;13804:73;;13848:7;:17;;-1:-1:-1;;;;;13848:17:0;;-1:-1:-1;;;;;;13848:17:0;;;;;;13749:135;:::o;21782:238::-;21829:7;21849:13;21865:10;:8;:10::i;:::-;21849:26;;21890:5;21899:1;21890:10;21886:127;;-1:-1:-1;;21924:12:0;;;21782:238::o;21886:127::-;21976:25;21996:5;21977:15;21976:25;:::i;:::-;21969:32;;;21782:238;:::o;11948:201::-;11666:7;11693:6;-1:-1:-1;;;;;11693:6:0;11489:10;11753:23;11745:68;;;;-1:-1:-1;;;11745:68:0;;4777:2:1;11745:68:0;;;4759:21:1;;;4796:18;;;4789:30;4855:34;4835:18;;;4828:62;4907:18;;11745:68:0;4575:356:1;11745:68:0;-1:-1:-1;;;;;12037:22:0;::::1;12029:73;;;::::0;-1:-1:-1;;;12029:73:0;;10676:2:1;12029:73:0::1;::::0;::::1;10658:21:1::0;10715:2;10695:18;;;10688:30;10754:34;10734:18;;;10727:62;-1:-1:-1;;;10805:18:1;;;10798:36;10851:19;;12029:73:0::1;10474:402:1::0;12029:73:0::1;12113:28;12132:8;12113:18;:28::i;20137:344::-:0;-1:-1:-1;;;;;20239:19:0;;20231:68;;;;-1:-1:-1;;;20231:68:0;;11083:2:1;20231:68:0;;;11065:21:1;11122:2;11102:18;;;11095:30;11161:34;11141:18;;;11134:62;-1:-1:-1;;;11212:18:1;;;11205:34;11256:19;;20231:68:0;10881:400:1;20231:68:0;-1:-1:-1;;;;;20318:21:0;;20310:68;;;;-1:-1:-1;;;20310:68:0;;11488:2:1;20310:68:0;;;11470:21:1;11527:2;11507:18;;;11500:30;11566:34;11546:18;;;11539:62;-1:-1:-1;;;11617:18:1;;;11610:32;11659:19;;20310:68:0;11286:398:1;20310:68:0;-1:-1:-1;;;;;20389:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;20441:32;;1361:25:1;;;20441:32:0;;1334:18:1;20441:32:0;;;;;;;20137:344;;;:::o;20487:419::-;-1:-1:-1;;;;;16001:18:0;;;20588:24;16001:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;20655:37:0;;20651:248;;20737:6;20717:16;:26;;20709:68;;;;-1:-1:-1;;;20709:68:0;;11891:2:1;20709:68:0;;;11873:21:1;11930:2;11910:18;;;11903:30;11969:31;11949:18;;;11942:59;12018:18;;20709:68:0;11689:353:1;20709:68:0;20821:51;20830:5;20837:7;20865:6;20846:16;:25;20821:8;:51::i;:::-;20577:329;20487:419;;;:::o;17196:1683::-;-1:-1:-1;;;;;17300:18:0;;17292:68;;;;-1:-1:-1;;;17292:68:0;;12249:2:1;17292:68:0;;;12231:21:1;12288:2;12268:18;;;12261:30;12327:34;12307:18;;;12300:62;-1:-1:-1;;;12378:18:1;;;12371:35;12423:19;;17292:68:0;12047:401:1;17292:68:0;-1:-1:-1;;;;;17379:23:0;;17371:71;;;;-1:-1:-1;;;17371:71:0;;12655:2:1;17371:71:0;;;12637:21:1;12694:2;12674:18;;;12667:30;12733:34;12713:18;;;12706:62;-1:-1:-1;;;12784:18:1;;;12777:33;12827:19;;17371:71:0;12453:399:1;17371:71:0;17466:9;-1:-1:-1;;;;;17490:23:0;;17498:1;17490:23;17486:44;;-1:-1:-1;17528:1:0;17486:44;-1:-1:-1;;;;;17612:15:0;;17590:19;17612:15;;;:9;:15;;;;;;17646:21;;;;17638:72;;;;-1:-1:-1;;;17638:72:0;;13059:2:1;17638:72:0;;;13041:21:1;13098:2;13078:18;;;13071:30;13137:34;13117:18;;;13110:62;-1:-1:-1;;;13188:18:1;;;13181:36;13234:19;;17638:72:0;12857:402:1;17638:72:0;-1:-1:-1;;;;;17746:15:0;;;;;;;:9;:15;;;;;17764:20;;;17746:38;;17816:8;;17810:14;;;17816:8;;17810:14;:36;;;;-1:-1:-1;17829:17:0;;-1:-1:-1;;;17829:17:0;;;;17828:18;17810:36;:83;;;;;17877:16;:14;:16::i;:::-;17868:4;15629:7;15656:18;;;:9;:18;;;;;;17850:43;17810:83;17806:133;;;17910:17;:15;:17::i;:::-;;17806:133;17953:17;;-1:-1:-1;;;17953:17:0;;;;;:38;;-1:-1:-1;;;;;;17974:17:0;;;;;;:11;:17;;;;;;;;17953:38;:57;;;-1:-1:-1;;;;;;17995:15:0;;;;;;:11;:15;;;;;;;;17953:57;17949:875;;;-1:-1:-1;;;;;18027:13:0;;;;;;:9;:13;;;;;:23;;18044:6;;18027:13;:23;;18044:6;;18027:23;:::i;:::-;;;;;;;;18085:2;-1:-1:-1;;;;;18070:26:0;18079:4;-1:-1:-1;;;;;18070:26:0;-1:-1:-1;;;;;;;;;;;18089:6:0;18070:26;;;;1361:25:1;;1349:2;1334:18;;1215:177;18070:26:0;;;;;;;;17949:875;;;18126:8;;-1:-1:-1;;;;;18126:8:0;;;18118:16;;;;18114:710;;18151:13;18167:15;:6;18178:3;18167:10;:15::i;:::-;18151:31;-1:-1:-1;18225:9:0;18151:31;18233:1;18225:9;:::i;:::-;18215:4;18197:24;;;;:9;:24;;;;;:37;;:24;;;:37;;;;;:::i;:::-;;;;-1:-1:-1;18277:4:0;;-1:-1:-1;;;;;;18254:40:0;;-1:-1:-1;;;;;;;;;;;18284:9:0;:5;18292:1;18284:9;:::i;:::-;18254:40;;1361:25:1;;;1349:2;1334:18;18254:40:0;;;;;;;18335:9;:5;18343:1;18335:9;:::i;:::-;18326:18;;:6;:18;:::i;:::-;-1:-1:-1;;;;;18309:13:0;;;;;;:9;:13;;;;;:35;;:13;;;:35;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;18364:38:0;;;;;;-1:-1:-1;;;;;;;;;;;18392:9:0;:5;18400:1;18392:9;:::i;:::-;18383:18;;:6;:18;:::i;:::-;18364:38;;1361:25:1;;;1349:2;1334:18;18364:38:0;;;;;;;18136:278;18114:710;;;18430:8;;-1:-1:-1;;;;;18430:8:0;;;18424:14;;;;18420:404;;18455:13;18471:15;:6;18482:3;18471:10;:15::i;:::-;18455:31;-1:-1:-1;18529:10:0;18455:31;18537:2;18529:10;:::i;:::-;18519:4;18501:24;;;;:9;:24;;;;;:38;;:24;;;:38;;;;;:::i;:::-;;;;-1:-1:-1;18582:4:0;;-1:-1:-1;;;;;;18559:41:0;;-1:-1:-1;;;;;;;;;;;18589:10:0;:5;18597:2;18589:10;:::i;:::-;18559:41;;1361:25:1;;;1349:2;1334:18;18559:41:0;;;;;;;18641:10;:5;18649:2;18641:10;:::i;:::-;18632:19;;:6;:19;:::i;:::-;-1:-1:-1;;;;;18615:13:0;;;;;;:9;:13;;;;;:36;;:13;;;:36;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;18671:39:0;;;;;;-1:-1:-1;;;;;;;;;;;18699:10:0;:5;18707:2;18699:10;:::i;18420:404::-;-1:-1:-1;;;;;18743:13:0;;;;;;:9;:13;;;;;:23;;18760:6;;18743:13;:23;;18760:6;;18743:23;:::i;:::-;;;;;;;;18801:2;-1:-1:-1;;;;;18786:26:0;18795:4;-1:-1:-1;;;;;18786:26:0;-1:-1:-1;;;;;;;;;;;18805:6:0;18786:26;;;;1361:25:1;;1349:2;1334:18;;1215:177;18786:26:0;;;;;;;;18420:404;17281:1598;;17196:1683;;;:::o;19322:809::-;19396:4;-1:-1:-1;;;;;19421:21:0;;19413:67;;;;-1:-1:-1;;;19413:67:0;;13599:2:1;19413:67:0;;;13581:21:1;13638:2;13618:18;;;13611:30;13677:34;13657:18;;;13650:62;-1:-1:-1;;;13728:18:1;;;13721:31;13769:19;;19413:67:0;13397:397:1;19413:67:0;19532:6;19515:14;;:23;;;;:::i;:::-;19495:17;;:43;19491:610;;;-1:-1:-1;;;;;19644:18:0;;19619:22;19644:18;;;:9;:18;;;;;;19685:24;;;;19677:71;;;;-1:-1:-1;;;19677:71:0;;14001:2:1;19677:71:0;;;13983:21:1;14040:2;14020:18;;;14013:30;14079:34;14059:18;;;14052:62;-1:-1:-1;;;14130:18:1;;;14123:32;14172:19;;19677:71:0;13799:398:1;19677:71:0;-1:-1:-1;;;;;19792:18:0;;;;;;:9;:18;;;;;19813:23;;;19792:44;;19855:21;;;;:31;;;;;;19916:17;:27;;19830:6;;19792:18;19916:27;;19830:6;;19916:27;:::i;:::-;;;;-1:-1:-1;;19963:37:0;;1361:25:1;;;19989:1:0;;-1:-1:-1;;;;;19963:37:0;;;-1:-1:-1;;;;;;;;;;;19963:37:0;1349:2:1;1334:18;19963:37:0;;;;;;;20015:48;20085:4;20078:11;;;;;19491:610;-1:-1:-1;20118:5:0;19322:809;;;;:::o;12155:191::-;12229:16;12248:6;;-1:-1:-1;;;;;12265:17:0;;;-1:-1:-1;;;;;;12265:17:0;;;;;;12298:40;;12248:6;;;;;;;12298:40;;12229:16;12298:40;12218:128;12155:191;:::o;22028:820::-;13195:17;:24;;-1:-1:-1;;;;13195:24:0;-1:-1:-1;;;13195:24:0;;;22122:12:::1;::::0;22084:4;;-1:-1:-1;;;;;22122:12:0::1;22084:4:::0;22191:1:::1;22164:24;22182:4;-1:-1:-1::0;;;;;15656:18:0;15629:7;15656:18;;;:9;:18;;;;;;;15555:127;22164:24:::1;:28;;;;:::i;:::-;22146:47:::0;-1:-1:-1;22208:10:0;;22204:614:::1;;22262:8;::::0;22252:28:::1;::::0;;-1:-1:-1;;;22252:28:0;;;;22235:14:::1;::::0;-1:-1:-1;;;;;22262:8:0::1;::::0;22252:26:::1;::::0;:28:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;22262:8;22252:28:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22235:45;;22296:16;22314::::0;22346:8:::1;;;;;;;;;-1:-1:-1::0;;;;;22346:8:0::1;-1:-1:-1::0;;;;;22336:49:0::1;;:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;22295:92:0;;::::1;::::0;-1:-1:-1;22295:92:0::1;::::0;-1:-1:-1;22295:92:0;-1:-1:-1;;;;;22449:23:0;::::1;22467:4;22449:23;22445:49;;-1:-1:-1::0;22486:8:0;22445:49:::1;22522:15;22534:3;22522:9:::0;:15:::1;:::i;:::-;22513:6;:24;22509:89;;;22567:15;22579:3;22567:9:::0;:15:::1;:::i;:::-;22558:24;;22509:89;22612:26;22631:6;22612:18;:26::i;:::-;22694:12;::::0;22671:37:::1;::::0;-1:-1:-1;;;22671:37:0;;-1:-1:-1;;;;;22694:12:0;;::::1;22671:37;::::0;::::1;2004:51:1::0;22653:15:0::1;::::0;22671:14;::::1;::::0;::::1;::::0;1977:18:1;;22671:37:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22749:12;::::0;22764:6:::1;::::0;22723:57:::1;::::0;-1:-1:-1;;;22723:57:0;;-1:-1:-1;;;;;22749:12:0;;::::1;22723:57;::::0;::::1;14887:34:1::0;22764:6:0;;::::1;14937:18:1::0;;;14930:43;14989:18;;;14982:34;;;22653:55:0;;-1:-1:-1;22723:17:0;::::1;::::0;::::1;::::0;14822:18:1;;22723:57:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22802:4;22795:11;;;;;;;;;;;22204:614;22835:5;22828:12;;;;13230:1;13242:17:::0;:25;;-1:-1:-1;;;;13242:25:0;;;22028:820;:::o;5550:98::-;5608:7;5635:5;5639:1;5635;:5;:::i;:::-;5628:12;5550:98;-1:-1:-1;;;5550:98:0:o;22854:444::-;22946:16;;;22960:1;22946:16;;;;;;;;22922:21;;22946:16;;;;;;;;;;-1:-1:-1;22946:16:0;22922:40;;22991:4;22973;22978:1;22973:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22973:23:0;;;:7;;;;;;;;;:23;23017:12;;23007:7;;23017:12;;;23007:4;;23017:12;;23007:7;;;;;;:::i;:::-;-1:-1:-1;;;;;23007:22:0;;;:7;;;;;;;;;:22;23072:11;;23040:58;;23057:4;;23072:11;23086;23040:8;:58::i;:::-;23109:11;;23205:12;;23109:127;;-1:-1:-1;;;23109:127:0;;-1:-1:-1;;;;;23109:11:0;;;;:65;;:127;;23175:11;;23109;;23191:4;;23205:12;;;23220:15;;23109:127;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23252:38;23272:11;23285:4;23252:38;;;;;;;:::i;:::-;;;;;;;;22911:387;22854:444;:::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;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;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2255:247::-;2314:6;2367:2;2355:9;2346:7;2342:23;2338:32;2335:52;;;2383:1;2380;2373:12;2335:52;2422:9;2409:23;2441:31;2466:5;2441:31;:::i;2507:180::-;2566:6;2619:2;2607:9;2598:7;2594:23;2590:32;2587:52;;;2635:1;2632;2625:12;2587:52;-1:-1:-1;2658:23:1;;2507:180;-1:-1:-1;2507:180:1:o;2692:118::-;2778:5;2771:13;2764:21;2757:5;2754:32;2744:60;;2800:1;2797;2790:12;2815:382;2880:6;2888;2941:2;2929:9;2920:7;2916:23;2912:32;2909:52;;;2957:1;2954;2947:12;2909:52;2996:9;2983:23;3015:31;3040:5;3015:31;:::i;:::-;3065:5;-1:-1:-1;3122:2:1;3107:18;;3094:32;3135:30;3094:32;3135:30;:::i;:::-;3184:7;3174:17;;;2815:382;;;;;:::o;3535:388::-;3603:6;3611;3664:2;3652:9;3643:7;3639:23;3635:32;3632:52;;;3680:1;3677;3670:12;3632:52;3719:9;3706:23;3738:31;3763:5;3738:31;:::i;:::-;3788:5;-1:-1:-1;3845:2:1;3830:18;;3817:32;3858:33;3817:32;3858:33;:::i;3928:380::-;4007:1;4003:12;;;;4050;;;4071:61;;4125:4;4117:6;4113:17;4103:27;;4071:61;4178:2;4170:6;4167:14;4147:18;4144:38;4141:161;;4224:10;4219:3;4215:20;4212:1;4205:31;4259:4;4256:1;4249:15;4287:4;4284:1;4277:15;4141:161;;3928:380;;;:::o;4313:127::-;4374:10;4369:3;4365:20;4362:1;4355:31;4405:4;4402:1;4395:15;4429:4;4426:1;4419:15;4445:125;4510:9;;;4531:10;;;4528:36;;;4544:18;;:::i;4936:127::-;4997:10;4992:3;4988:20;4985:1;4978:31;5028:4;5025:1;5018:15;5052:4;5049:1;5042:15;5068:127;5129:10;5124:3;5120:20;5117:1;5110:31;5160:4;5157:1;5150:15;5184:4;5181:1;5174:15;5200:188;5279:13;;-1:-1:-1;;;;;5321:42:1;;5311:53;;5301:81;;5378:1;5375;5368:12;5301:81;5200:188;;;:::o;5393:450::-;5480:6;5488;5496;5549:2;5537:9;5528:7;5524:23;5520:32;5517:52;;;5565:1;5562;5555:12;5517:52;5588:40;5618:9;5588:40;:::i;:::-;5578:50;;5647:49;5692:2;5681:9;5677:18;5647:49;:::i;:::-;5637:59;;5739:2;5728:9;5724:18;5718:25;5783:10;5776:5;5772:22;5765:5;5762:33;5752:61;;5809:1;5806;5799:12;5752:61;5832:5;5822:15;;;5393:450;;;;;:::o;5848:422::-;5937:1;5980:5;5937:1;5994:270;6015:7;6005:8;6002:21;5994:270;;;6074:4;6070:1;6066:6;6062:17;6056:4;6053:27;6050:53;;;6083:18;;:::i;:::-;6133:7;6123:8;6119:22;6116:55;;;6153:16;;;;6116:55;6232:22;;;;6192:15;;;;5994:270;;;5998:3;5848:422;;;;;:::o;6275:806::-;6324:5;6354:8;6344:80;;-1:-1:-1;6395:1:1;6409:5;;6344:80;6443:4;6433:76;;-1:-1:-1;6480:1:1;6494:5;;6433:76;6525:4;6543:1;6538:59;;;;6611:1;6606:130;;6518:218;6606:130;6643:3;6633:8;6630:17;6627:43;;;6650:18;;:::i;:::-;-1:-1:-1;;6706:1:1;6692:16;;6721:5;;6518:218;;6820:2;6810:8;6807:16;6801:3;6795:4;6792:13;6788:36;6782:2;6772:8;6769:16;6764:2;6758:4;6755:12;6751:35;6748:77;6745:159;;;-1:-1:-1;6857:19:1;;;6889:5;;6745:159;6936:34;6961:8;6955:4;6936:34;:::i;:::-;7006:6;7002:1;6998:6;6994:19;6985:7;6982:32;6979:58;;;7017:18;;:::i;:::-;7055:20;;6275:806;-1:-1:-1;;;6275:806:1:o;7086:140::-;7144:5;7173:47;7214:4;7204:8;7200:19;7194:4;7173:47;:::i;7231:168::-;7304:9;;;7335;;7352:15;;;7346:22;;7332:37;7322:71;;7373:18;;:::i;7404:461::-;7457:3;7495:5;7489:12;7522:6;7517:3;7510:19;7548:4;7577:2;7572:3;7568:12;7561:19;;7614:2;7607:5;7603:14;7635:1;7645:195;7659:6;7656:1;7653:13;7645:195;;;7724:13;;-1:-1:-1;;;;;7720:39:1;7708:52;;7780:12;;;;7815:15;;;;7756:1;7674:9;7645:195;;;-1:-1:-1;7856:3:1;;7404:461;-1:-1:-1;;;;;7404:461:1:o;7870:332::-;8077:6;8066:9;8059:25;8120:2;8115;8104:9;8100:18;8093:30;8040:4;8140:56;8192:2;8181:9;8177:18;8169:6;8140:56;:::i;:::-;8132:64;7870:332;-1:-1:-1;;;;7870:332:1:o;8207:1105::-;8302:6;8333:2;8376;8364:9;8355:7;8351:23;8347:32;8344:52;;;8392:1;8389;8382:12;8344:52;8425:9;8419:16;8454:18;8495:2;8487:6;8484:14;8481:34;;;8511:1;8508;8501:12;8481:34;8549:6;8538:9;8534:22;8524:32;;8594:7;8587:4;8583:2;8579:13;8575:27;8565:55;;8616:1;8613;8606:12;8565:55;8645:2;8639:9;8667:2;8663;8660:10;8657:36;;;8673:18;;:::i;:::-;8719:2;8716:1;8712:10;8751:2;8745:9;8814:2;8810:7;8805:2;8801;8797:11;8793:25;8785:6;8781:38;8869:6;8857:10;8854:22;8849:2;8837:10;8834:18;8831:46;8828:72;;;8880:18;;:::i;:::-;8916:2;8909:22;8966:18;;;9000:15;;;;-1:-1:-1;9042:11:1;;;9038:20;;;9070:19;;;9067:39;;;9102:1;9099;9092:12;9067:39;9126:11;;;;9146:135;9162:6;9157:3;9154:15;9146:135;;;9228:10;;9216:23;;9179:12;;;;9259;;;;9146:135;;;9300:6;8207:1105;-1:-1:-1;;;;;;;;8207:1105:1:o;9596:245::-;9663:6;9716:2;9704:9;9695:7;9691:23;9687:32;9684:52;;;9732:1;9729;9722:12;9684:52;9764:9;9758:16;9783:28;9805:5;9783:28;:::i;10252:217::-;10292:1;10318;10308:132;;10362:10;10357:3;10353:20;10350:1;10343:31;10397:4;10394:1;10387:15;10425:4;10422:1;10415:15;10308:132;-1:-1:-1;10454:9:1;;10252:217::o;13264:128::-;13331:9;;;13352:11;;;13349:37;;;13366:18;;:::i;14202:251::-;14272:6;14325:2;14313:9;14304:7;14300:23;14296:32;14293:52;;;14341:1;14338;14331:12;14293:52;14373:9;14367:16;14392:31;14417:5;14392:31;:::i;14458:184::-;14528:6;14581:2;14569:9;14560:7;14556:23;14552:32;14549:52;;;14597:1;14594;14587:12;14549:52;-1:-1:-1;14620:16:1;;14458:184;-1:-1:-1;14458:184:1:o;15027:582::-;15326:6;15315:9;15308:25;15369:6;15364:2;15353:9;15349:18;15342:34;15412:3;15407:2;15396:9;15392:18;15385:31;15289:4;15433:57;15485:3;15474:9;15470:19;15462:6;15433:57;:::i;:::-;-1:-1:-1;;;;;15526:32:1;;;;15521:2;15506:18;;15499:60;-1:-1:-1;15590:3:1;15575:19;15568:35;15425:65;15027:582;-1:-1:-1;;;15027:582:1:o

Swarm Source

ipfs://0e6d214d3545d31643816a390f633534dd0855691ce8e3c137ddbabc3012d430

Block Transaction Gas Used Reward
view all blocks produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.