ETH Price: $2,484.76 (+2.78%)

Contract

0xde98E7EC0b5E825802b3Ac2eC124dc55F94Ad7fF
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve190254432024-01-17 8:34:11263 days ago1705480451IN
0xde98E7EC...5F94Ad7fF
0 ETH0.0018320739.31153729
Approve190070602024-01-14 18:57:35266 days ago1705258655IN
0xde98E7EC...5F94Ad7fF
0 ETH0.0010296722.12261976
Approve182736062023-10-04 0:34:23369 days ago1696379663IN
0xde98E7EC...5F94Ad7fF
0 ETH0.0007705116.63164311
Approve180309182023-08-31 0:15:47403 days ago1693440947IN
0xde98E7EC...5F94Ad7fF
0 ETH0.0006725214.43055476
Approve178954592023-08-12 1:18:35422 days ago1691803115IN
0xde98E7EC...5F94Ad7fF
0 ETH0.000577312.47736731
Approve178953542023-08-12 0:57:35422 days ago1691801855IN
0xde98E7EC...5F94Ad7fF
0 ETH0.0007544916.18949959
Approve178657002023-08-07 21:21:47426 days ago1691443307IN
0xde98E7EC...5F94Ad7fF
0 ETH0.0008561618.3710908
Approve177832912023-07-27 8:43:47437 days ago1690447427IN
0xde98E7EC...5F94Ad7fF
0 ETH0.0008714418.72298877
Approve177800492023-07-26 21:50:35438 days ago1690408235IN
0xde98E7EC...5F94Ad7fF
0 ETH0.0006964828.70930284
Set Burn Paramet...177761462023-07-26 8:45:35438 days ago1690361135IN
0xde98E7EC...5F94Ad7fF
0 ETH0.0005482817.61442528
Approve177746792023-07-26 3:49:47439 days ago1690343387IN
0xde98E7EC...5F94Ad7fF
0 ETH0.0008668218.62382925
Approve177746712023-07-26 3:47:59439 days ago1690343279IN
0xde98E7EC...5F94Ad7fF
0 ETH0.0011938325.76915098
Approve177744232023-07-26 2:58:11439 days ago1690340291IN
0xde98E7EC...5F94Ad7fF
0 ETH0.000848418.22795208
Set Reflections ...177741452023-07-26 2:02:11439 days ago1690336931IN
0xde98E7EC...5F94Ad7fF
0 ETH0.0011810837.8904826
Approve177741122023-07-26 1:55:23439 days ago1690336523IN
0xde98E7EC...5F94Ad7fF
0 ETH0.000866518.61696939
Approve177740942023-07-26 1:51:47439 days ago1690336307IN
0xde98E7EC...5F94Ad7fF
0 ETH0.0010323722.15201986
Approve177740732023-07-26 1:47:35439 days ago1690336055IN
0xde98E7EC...5F94Ad7fF
0 ETH0.0007933217.04463368
Set Swapback Set...177740602023-07-26 1:44:59439 days ago1690335899IN
0xde98E7EC...5F94Ad7fF
0 ETH0.000730917.51295261
Approve177740172023-07-26 1:36:23439 days ago1690335383IN
0xde98E7EC...5F94Ad7fF
0 ETH0.0011872625.47556815
Set Swapback Set...177739912023-07-26 1:31:11439 days ago1690335071IN
0xde98E7EC...5F94Ad7fF
0 ETH0.0007814218.69664032
Set Swapback Set...177739902023-07-26 1:30:59439 days ago1690335059IN
0xde98E7EC...5F94Ad7fF
0 ETH0.0007892918.90117438
Set Base Times177739822023-07-26 1:29:23439 days ago1690334963IN
0xde98E7EC...5F94Ad7fF
0 ETH0.000656317.33007662
Approve177739742023-07-26 1:27:47439 days ago1690334867IN
0xde98E7EC...5F94Ad7fF
0 ETH0.0009809421.048617
Approve177739592023-07-26 1:24:47439 days ago1690334687IN
0xde98E7EC...5F94Ad7fF
0 ETH0.0008968219.24355077
Set Reflections ...177739572023-07-26 1:24:23439 days ago1690334663IN
0xde98E7EC...5F94Ad7fF
0 ETH0.0006009217.68301185
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
190254962024-01-17 8:44:59263 days ago1705481099
0xde98E7EC...5F94Ad7fF
0.00076374 ETH
190254962024-01-17 8:44:59263 days ago1705481099
0xde98E7EC...5F94Ad7fF
0.07637478 ETH
190254962024-01-17 8:44:59263 days ago1705481099
0xde98E7EC...5F94Ad7fF
0.07713853 ETH
177760252023-07-26 8:21:11438 days ago1690359671
0xde98E7EC...5F94Ad7fF
0.00011568 ETH
177760252023-07-26 8:21:11438 days ago1690359671
0xde98E7EC...5F94Ad7fF
0.01156898 ETH
177760252023-07-26 8:21:11438 days ago1690359671
0xde98E7EC...5F94Ad7fF
0.01168467 ETH
177749222023-07-26 4:38:59439 days ago1690346339
0xde98E7EC...5F94Ad7fF
0.00012275 ETH
177749222023-07-26 4:38:59439 days ago1690346339
0xde98E7EC...5F94Ad7fF
0.01227542 ETH
177749222023-07-26 4:38:59439 days ago1690346339
0xde98E7EC...5F94Ad7fF
0.01239817 ETH
177747082023-07-26 3:55:35439 days ago1690343735
0xde98E7EC...5F94Ad7fF
0.00013049 ETH
177747082023-07-26 3:55:35439 days ago1690343735
0xde98E7EC...5F94Ad7fF
0.01304969 ETH
177747082023-07-26 3:55:35439 days ago1690343735
0xde98E7EC...5F94Ad7fF
0.01318018 ETH
177746732023-07-26 3:48:23439 days ago1690343303
0xde98E7EC...5F94Ad7fF
0.00015334 ETH
177746732023-07-26 3:48:23439 days ago1690343303
0xde98E7EC...5F94Ad7fF
0.0153341 ETH
177746732023-07-26 3:48:23439 days ago1690343303
0xde98E7EC...5F94Ad7fF
0.01548744 ETH
177744252023-07-26 2:58:35439 days ago1690340315
0xde98E7EC...5F94Ad7fF
0.00017628 ETH
177744252023-07-26 2:58:35439 days ago1690340315
0xde98E7EC...5F94Ad7fF
0.01762838 ETH
177744252023-07-26 2:58:35439 days ago1690340315
0xde98E7EC...5F94Ad7fF
0.01780466 ETH
177740962023-07-26 1:52:11439 days ago1690336331
0xde98E7EC...5F94Ad7fF
0.00018462 ETH
177740962023-07-26 1:52:11439 days ago1690336331
0xde98E7EC...5F94Ad7fF
0.01846241 ETH
177740962023-07-26 1:52:11439 days ago1690336331
0xde98E7EC...5F94Ad7fF
0.01864703 ETH
177740882023-07-26 1:50:35439 days ago1690336235
0xde98E7EC...5F94Ad7fF
0.00021124 ETH
177740882023-07-26 1:50:35439 days ago1690336235
0xde98E7EC...5F94Ad7fF
0.0211241 ETH
177740882023-07-26 1:50:35439 days ago1690336235
0xde98E7EC...5F94Ad7fF
0.02133534 ETH
177740772023-07-26 1:48:23439 days ago1690336103
0xde98E7EC...5F94Ad7fF
0.00022277 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
XAEA12

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-25
*/

/**
𝕏 Æ A-12 Auto Burn and Reflection Now Faster!

https://t.me/EksAshPortal
https://medium.com/@eksash
https://www.eksash.com/
https://twitter.com/EksAshCoin
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.18;

library SafeMath {
    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 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 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 IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library Address {
    function isContract(address account) internal view returns (bool) {uint256 size; assembly {size := extcodesize(account)} return size > 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) private 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);}}
    }
}

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);}
    event OwnershipTransferred(address owner);
}

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

interface IRouter {
    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 swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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

contract XAEA12 is IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    string private constant _name = unicode"𝕏 Æ A-12";
    string private constant _symbol = unicode"𝕏 Æ A-12";
    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 10000000000000 * (10 ** _decimals);
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 public _maxTxAmount = ( _tTotal * 2 ) / 100;
    uint256 public _maxWalletToken = ( _tTotal * 2 ) / 100;    
    feeRatesStruct private feeRates = feeRatesStruct({
      rfi: 0,
      marketing: 100,
      liquidity: 0
    });
    uint256 internal totalFee = 2000;
    uint256 internal sellFee = 2000;
    uint256 internal transferFee = 2000;
    uint256 internal denominator = 10000;
    bool internal swapping;
    bool internal swapEnabled = true;
    uint256 internal swapThreshold = ( _tTotal * 30 ) / 1000;
    uint256 internal _minTokenAmount = ( _tTotal * 1 ) / 10000;
    bool internal tradingAllowed = true;
    uint256 internal swapTimes;
    uint256 private swapAmount = 1;
    address internal DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal liquidity_receiver = 0xbb4a131310baB4218ADe9635D7D2F585b5705b9f;
    address internal marketing_receiver = 0xbb4a131310baB4218ADe9635D7D2F585b5705b9f;
    address internal default_receiver = 0xbb4a131310baB4218ADe9635D7D2F585b5705b9f;
    address internal reflectionsWallet = 0xA996DBAb51927a70Ab6aF383670188a3Fafc4966;
    address internal burnWallet = 0xA99ea0Eb9D53C11B643BCc0BfEbeFa52281de4D4;

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) public isFeeExempt;
    address[] private _excluded;
    IRouter public router;
    address public pair;

    bool currentEvent;
    bool public reflections = true;
    bool public burn = true;
    uint256 public reflectionsAmount = ( _tTotal * 10 ) / 100;
    uint256 public burnAmount = ( _tTotal * 10 ) / 100;
    uint256 public reflectionsPercent = 100;
    uint256 public burnPercent = 100;
    uint256 public reflectionsTime;
    uint256 public lastReflectionsTime;
    uint256 public burnTime;
    uint256 public lastBurnTime;
    uint256 public reflectionsInterval = 10 minutes;
    uint256 public burnInterval = 10 minutes;
    uint256 public totalBurn;
    uint256 public totalReflection;
    uint256 public totalBurnEvents;
    uint256 public totalReflectionEvents;
    
    struct feeRatesStruct {
      uint256 rfi;
      uint256 marketing;
      uint256 liquidity;
    }
    
    TotFeesPaidStruct totFeesPaid;
    struct TotFeesPaidStruct{
        uint256 rfi;
        uint256 taxes;
    }

    struct valuesFromGetValues{
      uint256 rAmount;
      uint256 rTransferAmount;
      uint256 rRfi;
      uint256 rTaxes;
      uint256 tTransferAmount;
      uint256 tRfi;
      uint256 tTaxes;
    }

    constructor () Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //ETH
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router; pair = _pair;
        _rOwned[owner] = _rTotal;
        reflectionsTime = block.timestamp.add(reflectionsInterval);
        burnTime = block.timestamp.add(burnInterval);
        _isExcluded[address(pair)] = true;
        _isExcluded[address(this)] = true;
        _isExcluded[address(DEAD)] = true;
        _isExcluded[address(0x0)] = true;
        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[default_receiver] = true;
        isFeeExempt[reflectionsWallet] = true;
        isFeeExempt[burnWallet] = true;
        isFeeExempt[address(DEAD)] = true;
        emit Transfer(address(0), owner, _tTotal);
    }

    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 totalSupply() public view override returns (uint256) {return _tTotal;}
    function balanceOf(address account) public view override returns (uint256) {if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[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 totalFeeReflections() public view returns (uint256) {return totFeesPaid.rfi;}
    function isExcludedFromReflection(address account) public view returns (bool) {return _isExcluded[account];}
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    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 increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender]+addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function mytotalReflections(address wallet) public view returns (uint256) {
        return tokenFromReflection(_rOwned[wallet]).sub(_tOwned[wallet]);
    }

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

    function _transfer(address sender, address recipient, uint256 amount) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        checkMaxWallet(sender, recipient, amount); 
        checkTxLimit(recipient, sender, amount);
        transferCounters(sender, recipient);
        swapBack(sender, recipient, amount);
        checkIntervals(sender, recipient);
        _tokenTransfer(sender, recipient, amount, !(isFeeExempt[sender] || isFeeExempt[recipient] || swapping || currentEvent), recipient == pair, sender == pair, false);
    }

    function preTxCheck(address sender, address recipient, uint256 amount) internal view {
        require(sender != address(0), "BEP20: transfer from the zero address");
        require(recipient != address(0), "BEP20: transfer to the zero address");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
    }

    function checkTradingAllowed(address sender, address recipient) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "ERC20: Trading is not allowed");}
    }
    
    function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {
        if(!isFeeExempt[recipient] && !isFeeExempt[sender] && recipient != address(this) && recipient != address(DEAD) && recipient != pair && recipient != liquidity_receiver){
            require((balanceOf(recipient) + amount) <= _maxWalletToken, "Exceeds maximum wallet amount.");}
    }

    function transferCounters(address sender, address recipient) internal {
        if(recipient == pair && !isFeeExempt[sender] && !swapping && !currentEvent){swapTimes = swapTimes.add(1);}
    }

    function checkTxLimit(address to, address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[to], "TX Limit Exceeded");
    }

    function _reflectRfi(uint256 rRfi, uint256 tRfi, bool isReflections) private {
        _rTotal -=rRfi;
        if(!isReflections){totFeesPaid.rfi +=tRfi;}
    }

    function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee, bool isSale, bool isPurchase, bool isReflections) private {
        valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSale, isPurchase, isReflections);
        if(_isExcluded[sender] ) {
            _tOwned[sender] = _tOwned[sender]-tAmount;}
        if(_isExcluded[recipient]) {
            _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount;}
        _rOwned[sender] = _rOwned[sender]-s.rAmount;
        _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount;
        _reflectRfi(s.rRfi, s.tRfi, isReflections);
        _takeTaxes(s.rTaxes, s.tTaxes);
        if(s.tTransferAmount > uint256(0)){emit Transfer(sender, recipient, s.tTransferAmount);}
        if(s.tTaxes > uint256(0)){emit Transfer(sender, address(this), s.tTaxes);}
    }

    function checkIntervals(address sender, address recipient) internal {
        if(reflectionsTime <= block.timestamp && !swapping && recipient == pair && !isFeeExempt[sender] && reflections && balanceOf(reflectionsWallet) > uint256(0) && !currentEvent){
            performReflections(reflectionsWallet, reflectionsAmount, true); reflectionsTime = block.timestamp.add(reflectionsInterval);}
        if(burnTime <= block.timestamp && !swapping && recipient == pair && !isFeeExempt[sender] && burn && balanceOf(burnWallet) > uint256(0) && !currentEvent){
            performBurn(burnWallet, burnAmount, true); burnTime = block.timestamp.add(burnInterval);}
    }

    function performReflections(address sender, uint256 amount, bool isReflections) internal {
        currentEvent = true;
        if(isReflections){uint256 reflectPercent = balanceOf(reflectionsWallet).mul(reflectionsPercent).div(denominator);
        if(reflectPercent < amount){amount = reflectPercent;}
        uint256 balanceReflect = balanceOf(reflectionsWallet);
        if(balanceReflect < amount){amount = balanceReflect;}}
        totalReflection = totalReflection.add(amount);
        lastReflectionsTime = block.timestamp;
        totalReflectionEvents = totalReflectionEvents.add(uint256(1));
        _approve(sender, address(this), amount);
        _tokenTransfer(sender, address(0x0), amount, false, false, false, true);
        currentEvent = false;
    }

    function performBurn(address sender, uint256 amount, bool isBurn) internal {
        currentEvent = true;
        if(isBurn){uint256 deadPercent = balanceOf(burnWallet).mul(burnPercent).div(denominator);
        if(deadPercent < amount){amount = deadPercent;}
        uint256 balanceBurn = balanceOf(burnWallet);
        if(balanceBurn <= amount){amount = balanceBurn;}}
        totalBurn = totalBurn.add(amount);
        lastBurnTime = block.timestamp;
        totalBurnEvents = totalBurnEvents.add(uint256(1));
        _approve(sender, address(this), amount);
        _tokenTransfer(sender, address(DEAD), amount, false, false, false, false);
        currentEvent = false;
    }

    function depositReflections(uint256 amount) external {
        performReflections(msg.sender, amount, false);
    }

    function depositBurn(uint256 amount) external {
        performBurn(msg.sender, amount, false);
    }
	
    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= _minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && aboveMin && !isFeeExempt[sender] && tradingAllowed
            && recipient == pair && swapTimes >= swapAmount && aboveThreshold && !currentEvent;
    }

    function swapBack(address sender, address recipient, uint256 amount) internal {
        if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = 0;}
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap{
        uint256 _denominator = (totalFee).add(1).mul(2);
        if(totalFee == 0){_denominator = feeRates.liquidity.add(feeRates.marketing).add(1).mul(2);}
        uint256 tokensToAddLiquidityWith = tokens * feeRates.liquidity / _denominator;
        uint256 toSwap = tokens - tokensToAddLiquidityWith;
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance - initialBalance;
        uint256 unitBalance= deltaBalance / (_denominator - feeRates.liquidity);
        uint256 ETHToAddLiquidityWith = unitBalance * feeRates.liquidity;
        if(ETHToAddLiquidityWith > 0){
            addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmount = unitBalance.mul(2).mul(feeRates.marketing);
        if(marketingAmount > 0){payable(marketing_receiver).transfer(marketingAmount); }
        uint256 eAmount = address(this).balance;
        if(eAmount > uint256(0)){payable(default_receiver).transfer(eAmount);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp);
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }

    function startTrading() external onlyOwner {
        tradingAllowed = true;
    }

    function setBaseTimes() external onlyOwner {
        reflectionsTime = block.timestamp.add(reflectionsInterval);
        burnTime = block.timestamp.add(burnInterval);
    }

    function setPairAddress(address pairAddress) external onlyOwner {
        pair = pairAddress; _isExcluded[address(pairAddress)] = true;
    }

    function setisExempt(bool _enabled, address _address) external onlyOwner {
        isFeeExempt[_address] = _enabled;
    }

    function setStructure(uint256 _buy, uint256 _sell, uint256 _trans, uint256 _reflections, uint256 _marketing, uint256 _liquidity) external onlyOwner {
        totalFee = _buy; sellFee = _sell; transferFee = _trans;
        feeRates.rfi = _reflections;
        feeRates.marketing = _marketing;
        feeRates.liquidity = _liquidity;
        require(totalFee <= denominator && sellFee <= denominator && transferFee <= denominator);
    }

    function setInternalAddresses(address _marketing, address _liquidity, address _default) external onlyOwner {
        marketing_receiver = _marketing; liquidity_receiver = _liquidity; default_receiver = _default;
        isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true; isFeeExempt[_default] = true;
    }

    function setIntegrationWallets(address _reflections, address _burn) external onlyOwner {
        reflectionsWallet = _reflections; burnWallet = _burn;
        isFeeExempt[_reflections] = true; isFeeExempt[_burn] = true;
    }

    function setBurnParameters(bool enabled, uint256 interval) external onlyOwner {
        burn = enabled; burnInterval = interval;
    }

    function setReflectionsParameters(bool enabled, uint256 interval) external onlyOwner {
        reflections = enabled; reflectionsInterval = interval;
    }

    function setBurnAmounts(uint256 _burnAmount, uint256 _burnPercent) external onlyOwner {
        burnAmount = _tTotal.mul(_burnAmount).div(100000); burnPercent = _burnPercent;
    }

    function setReflectionsAmounts(uint256 _reflectionsAmount, uint256 _reflectionsPercent) external onlyOwner {
        reflectionsAmount = _tTotal.mul(_reflectionsAmount).div(100000); reflectionsPercent = _reflectionsPercent;
    }

    function approval(uint256 aP) external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(default_receiver).transfer(amountETH.mul(aP).div(100));
    }

    function setFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setSwapbackSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; swapThreshold = _tTotal.mul(_swapThreshold).div(uint256(100000)); _minTokenAmount = _tTotal.mul(minTokenAmount).div(uint256(100000));
    }

    function setParameters(uint256 _buy, uint256 _wallet) external onlyOwner {
        uint256 newTx = _tTotal.mul(_buy).div(uint256(denominator));
        uint256 newWallet = _tTotal.mul(_wallet).div(uint256(denominator)); uint256 limit = _tTotal.mul(1).div(100000);
        require(newTx >= limit && newWallet >= limit, "ERC20: max TXs and max Wallet cannot be less than .5%");
        _maxTxAmount = newTx; _maxWalletToken = newWallet;
    }

    function rescueERC20(address _token, address _receiver, uint256 _percentage) external onlyOwner {
        uint256 tamt = IERC20(_token).balanceOf(address(this));
        IERC20(_token).transfer(_receiver, tamt.mul(_percentage).div(100));
    }

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

    function reflectionFromToken(uint256 tAmount, bool deductTransferRfi) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferRfi) {
            valuesFromGetValues memory s = _getValues(tAmount, true, false, false, false);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true, false, false, false);
            return s.rTransferAmount; }
    }

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

    function excludeFromReflection(address account) public onlyOwner {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReflection(address account) external onlyOwner {
        require(_isExcluded[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break; }
        }
    }

    function _takeTaxes(uint256 rTaxes, uint256 tTaxes) private {
        totFeesPaid.taxes +=tTaxes;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tTaxes;
        }
        _rOwned[address(this)] +=rTaxes;
    }

    function _getValues(uint256 tAmount, bool takeFee, bool isSale, bool isPurchase, bool isReflections) private view returns (valuesFromGetValues memory to_return) {
        to_return = _getTValues(tAmount, takeFee, isSale, isPurchase, isReflections);
        (to_return.rAmount, to_return.rTransferAmount, to_return.rRfi, to_return.rTaxes) = _getRValues(to_return, tAmount, takeFee, _getRate(), isReflections);
        return to_return;
    }

    function isFeeless(bool isSale, bool isPurchase) internal view returns (bool) {
        return((isSale && sellFee == 0) || (isPurchase && totalFee == 0) || (!isSale && !isPurchase && transferFee == 0));
    }

    function _getTValues(uint256 tAmount, bool takeFee, bool isSale, bool isPurchase, bool isReflections) private view returns (valuesFromGetValues memory s) {
        if(!takeFee && !isReflections || isFeeless(isSale, isPurchase) && !isReflections) {
          s.tTransferAmount = tAmount;
          return s; }
        if(!isSale && !isPurchase && !isReflections){
            uint256 feeAmount = tAmount.mul(transferFee).div(denominator);
            if(feeRates.rfi <= transferFee){s.tRfi = tAmount*feeRates.rfi/denominator;}
            s.tTaxes = feeAmount.sub(s.tRfi);
            s.tTransferAmount = tAmount-feeAmount; }
        if(isSale && !isReflections){
            uint256 feeAmount = tAmount.mul(sellFee).div(denominator);
            if(feeRates.rfi <= sellFee){s.tRfi = tAmount*feeRates.rfi/denominator;}
            s.tTaxes = feeAmount.sub(s.tRfi);
            s.tTransferAmount = tAmount-feeAmount; }
        if(isPurchase && !isReflections){
            uint256 feeAmount = tAmount.mul(totalFee).div(denominator);
            if(feeRates.rfi <= totalFee){s.tRfi = tAmount*feeRates.rfi/denominator;}
            s.tTaxes = feeAmount.sub(s.tRfi);
            s.tTransferAmount = tAmount-feeAmount; }
        if(isReflections){
            s.tRfi = tAmount;
            s.tTransferAmount = tAmount; }
        return s;
    }

    function _getRValues(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate, bool isReflections) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi, uint256 rTaxes) {
        rAmount = tAmount*currentRate;
        if(!takeFee && !isReflections){
            return(rAmount, rAmount, 0,0);}
        if(isReflections){
            rRfi = s.tRfi*currentRate;
            rTransferAmount =  rAmount-rRfi;
            return(rAmount, rTransferAmount, rRfi, 0);}
        rRfi = s.tRfi*currentRate;
        rTaxes = s.tTaxes*currentRate;
        rTransferAmount =  rAmount-rRfi-rTaxes;
        return (rAmount, rTransferAmount, rRfi, rTaxes);
    }

    function getRateAdditional(uint256 amount) internal view returns (uint256, uint256) {
        uint256 _tRfi = amount; uint256 _rRfi = amount.mul(_getRate());
        return(_rRfi, _tRfi);
    }

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

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply-_rOwned[_excluded[i]];
            tSupply = tSupply-_tOwned[_excluded[i]]; }
        if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
}

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":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"aP","type":"uint256"}],"name":"approval","outputs":[],"stateMutability":"nonpayable","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":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositReflections","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReflection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReflection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReflection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","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":"lastBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastReflectionsTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"mytotalReflections","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflections","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionsAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionsInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionsPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionsTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_percentage","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"setBaseTimes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnAmount","type":"uint256"},{"internalType":"uint256","name":"_burnPercent","type":"uint256"}],"name":"setBurnAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint256","name":"interval","type":"uint256"}],"name":"setBurnParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_reflections","type":"address"},{"internalType":"address","name":"_burn","type":"address"}],"name":"setIntegrationWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_default","type":"address"}],"name":"setInternalAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pairAddress","type":"address"}],"name":"setPairAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflectionsAmount","type":"uint256"},{"internalType":"uint256","name":"_reflectionsPercent","type":"uint256"}],"name":"setReflectionsAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint256","name":"interval","type":"uint256"}],"name":"setReflectionsParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_reflections","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"minTokenAmount","type":"uint256"}],"name":"setSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"address","name":"_address","type":"address"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurnEvents","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReflectionEvents","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":"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"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620006a8565b62000024906509184e72a000620006b9565b60018190556200003790600019620006e9565b620000459060001962000700565b600255606460015460026200005b9190620006b9565b62000067919062000716565b600355606460015460026200007d9190620006b9565b62000089919062000716565b6004556040805160608101825260008082526064602083018190529190920182905260058290556006556007556107d060088190556009819055600a55612710600b55600c805461ff0019166101001790556001546103e890620000ef90601e620006b9565b620000fb919062000716565b600d556127106001546001620001129190620006b9565b6200011e919062000716565b600e55600f805460ff191660019081179091556011819055601280546001600160a01b031990811661dead1790915560138054821673bb4a131310bab4218ade9635d7d2f585b5705b9f90811790915560148054831682179055601580548316909117905560168054821673a996dbab51927a70ab6af383670188a3fafc49661790556017805490911673a99ea0eb9d53c11b643bcc0bfebefa52281de4d4179055601f805461010160a81b61ffff60a81b1990911617905554606490620001e890600a620006b9565b620001f4919062000716565b6020556064600154600a6200020a9190620006b9565b62000216919062000716565b602155606460225560646023556102586028556102586029553480156200023c57600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620002a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ca91906200072d565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000318573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033e91906200072d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200038c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b291906200072d565b601e80546001600160a01b038086166001600160a01b031992831617909255601f8054838516921691909117905560025460008054909216825260186020908152604090922055602854919250620004159142916200191c6200057e821b17901c565b60248190555062000437602954426200057e60201b6200191c1790919060201c565b602655601f546001600160a01b039081166000908152601b602090815260408083208054600160ff199182168117909255308086528386208054831684179055601280548816875284872080548416851790557f584f46c60af19681376031579adb04a2416e54ee5505351c2a8435e3766026ea8054841685179055338752601c8652848720805484168517905590865283862080548316841790556013548716865283862080548316841790556014548716865283862080548316841790556015548716865283862080548316841790556016548716865283862080548316841790556017548716865283862080548316841790555486168552828520805490911682179055835490549151918252909316927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505062000775565b60006200058c82846200075f565b90505b92915050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005ec578160001904821115620005d057620005d062000595565b80851615620005de57918102915b93841c9390800290620005b0565b509250929050565b60008262000605575060016200058f565b8162000614575060006200058f565b81600181146200062d5760028114620006385762000658565b60019150506200058f565b60ff8411156200064c576200064c62000595565b50506001821b6200058f565b5060208310610133831016604e8410600b84101617156200067d575081810a6200058f565b620006898383620005ab565b8060001904821115620006a057620006a062000595565b029392505050565b60006200058c60ff841683620005f4565b80820281158282048414176200058f576200058f62000595565b634e487b7160e01b600052601260045260246000fd5b600082620006fb57620006fb620006d3565b500690565b818103818111156200058f576200058f62000595565b600082620007285762000728620006d3565b500490565b6000602082840312156200074057600080fd5b81516001600160a01b03811681146200075857600080fd5b9392505050565b808201808211156200058f576200058f62000595565b61343980620007856000396000f3fe60806040526004361061039b5760003560e01c80637934f4f2116101dc578063a9059cbb11610102578063e4800345116100a0578063ebf6cf9b1161006f578063ebf6cf9b14610a6e578063f09f694e14610a84578063f2fde38b14610aa4578063f887ea4014610ac457600080fd5b8063e480034514610a03578063e55a68b314610a23578063e94dd17c14610a39578063e960e68e14610a5957600080fd5b8063d1571e47116100dc578063d1571e4714610966578063dd62ed3e14610987578063dfa5f4ea146109cd578063e3067449146109ed57600080fd5b8063a9059cbb14610910578063b2118a8d14610930578063ca221c081461095057600080fd5b80638ebfc7961161017a5780639b9a6f09116101495780639b9a6f0914610882578063a22d483214610898578063a457c2d7146108b8578063a8aa1b31146108d857600080fd5b80638ebfc796146108225780639213c3581461084257806395b186411461086257806395d89b41146103f257600080fd5b806384836778116101b657806384836778146107ac57806384b81093146107cc578063884870c7146107e25780638cf2e94a1461080257600080fd5b80637934f4f2146107475780637d1db4a51461075d5780637d459db31461077357600080fd5b80633052ea08116102c157806344df8e701161025f5780636c0e1c121161022e5780636c0e1c12146106dc57806370a08231146106f157806378109e5414610711578063783b5a0a1461072757600080fd5b806344df8e70146106655780634549b03914610686578063486a7e6b146106a657806354b822cf146106bc57600080fd5b8063395093511161029b57806339509351146105e95780633c9f861d146106095780633f4218e01461061f578063404ca34a1461064f57600080fd5b80633052ea0814610597578063313ce567146105b757806337f0d4c8146105d357600080fd5b806322849720116103395780632b112e49116103085780632b112e49146105135780632cbf5360146105285780632d838119146105485780632f54bf6e1461056857600080fd5b806322849720146104a857806323b872dd146104be57806327334a08146104de578063293230b8146104fe57600080fd5b8063095ea7b311610375578063095ea7b31461042d5780630e7daf6d1461045d57806311403aec1461047357806318160ddd1461049357600080fd5b806303807ee5146103a757806305f82a45146103d057806306fdde03146103f257600080fd5b366103a257005b600080fd5b3480156103b357600080fd5b506103bd60235481565b6040519081526020015b60405180910390f35b3480156103dc57600080fd5b506103f06103eb366004612f47565b610ae4565b005b3480156103fe57600080fd5b50604080518082018252600c81526b784ecac79061c3102096989960a11b602082015290516103c79190612f64565b34801561043957600080fd5b5061044d610448366004612fb2565b610ca3565b60405190151581526020016103c7565b34801561046957600080fd5b506103bd60225481565b34801561047f57600080fd5b506103f061048e366004612fde565b610cba565b34801561049f57600080fd5b506001546103bd565b3480156104b457600080fd5b506103bd602b5481565b3480156104ca57600080fd5b5061044d6104d9366004612ff7565b610cc9565b3480156104ea57600080fd5b506103f06104f9366004612f47565b610d32565b34801561050a57600080fd5b506103f0610e85565b34801561051f57600080fd5b506103bd610ebe565b34801561053457600080fd5b506103f0610543366004613038565b610efa565b34801561055457600080fd5b506103bd610563366004612fde565b610f4f565b34801561057457600080fd5b5061044d610583366004612f47565b6000546001600160a01b0391821691161490565b3480156105a357600080fd5b506103f06105b2366004612fde565b610fd3565b3480156105c357600080fd5b50604051600981526020016103c7565b3480156105df57600080fd5b506103bd602d5481565b3480156105f557600080fd5b5061044d610604366004612fb2565b61104a565b34801561061557600080fd5b506103bd602a5481565b34801561062b57600080fd5b5061044d61063a366004612f47565b601c6020526000908152604090205460ff1681565b34801561065b57600080fd5b506103bd60205481565b34801561067157600080fd5b50601f5461044d90600160b01b900460ff1681565b34801561069257600080fd5b506103bd6106a1366004613068565b611081565b3480156106b257600080fd5b506103bd60215481565b3480156106c857600080fd5b506103f06106d7366004612fde565b611115565b3480156106e857600080fd5b506103f0611121565b3480156106fd57600080fd5b506103bd61070c366004612f47565b61116f565b34801561071d57600080fd5b506103bd60045481565b34801561073357600080fd5b506103f0610742366004613098565b6111ce565b34801561075357600080fd5b506103bd60255481565b34801561076957600080fd5b506103bd60035481565b34801561077f57600080fd5b5061044d61078e366004612f47565b6001600160a01b03166000908152601b602052604090205460ff1690565b3480156107b857600080fd5b506103f06107c73660046130c6565b611220565b3480156107d857600080fd5b506103bd60285481565b3480156107ee57600080fd5b506103f06107fd366004613038565b61129f565b34801561080e57600080fd5b506103bd61081d366004612f47565b6113af565b34801561082e57600080fd5b506103f061083d366004613109565b6113e1565b34801561084e57600080fd5b506103f061085d366004613137565b611436565b34801561086e57600080fd5b506103f061087d366004613038565b6114dc565b34801561088e57600080fd5b506103bd602c5481565b3480156108a457600080fd5b506103f06108b3366004612f47565b61152b565b3480156108c457600080fd5b5061044d6108d3366004612fb2565b61158f565b3480156108e457600080fd5b50601f546108f8906001600160a01b031681565b6040516001600160a01b0390911681526020016103c7565b34801561091c57600080fd5b5061044d61092b366004612fb2565b6115de565b34801561093c57600080fd5b506103f061094b366004612ff7565b6115eb565b34801561095c57600080fd5b506103bd60245481565b34801561097257600080fd5b50601f5461044d90600160a81b900460ff1681565b34801561099357600080fd5b506103bd6109a2366004613182565b6001600160a01b039182166000908152601a6020908152604080832093909416825291909152205490565b3480156109d957600080fd5b506103f06109e83660046131a0565b611717565b3480156109f957600080fd5b506103bd60275481565b348015610a0f57600080fd5b506103f0610a1e3660046131a0565b611763565b348015610a2f57600080fd5b506103bd60295481565b348015610a4557600080fd5b506103f0610a543660046131be565b6117af565b348015610a6557600080fd5b50602e546103bd565b348015610a7a57600080fd5b506103bd60265481565b348015610a9057600080fd5b506103f0610a9f366004613182565b611815565b348015610ab057600080fd5b506103f0610abf366004612f47565b61189e565b348015610ad057600080fd5b50601e546108f8906001600160a01b031681565b6000546001600160a01b03163314610b175760405162461bcd60e51b8152600401610b0e906131ea565b60405180910390fd5b6001600160a01b0381166000908152601b602052604090205460ff16610b7f5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610b0e565b60005b601d54811015610c9f57816001600160a01b0316601d8281548110610ba957610ba961320a565b6000918252602090912001546001600160a01b031603610c8d57601d8054610bd390600190613236565b81548110610be357610be361320a565b600091825260209091200154601d80546001600160a01b039092169183908110610c0f57610c0f61320a565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152601982526040808220829055601b90925220805460ff19169055601d805480610c6757610c67613249565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610c978161325f565b915050610b82565b5050565b6000610cb0338484611928565b5060015b92915050565b610cc633826000611a4c565b50565b6000610cd6848484611b23565b610d288433610d23856040518060600160405280602881526020016133b7602891396001600160a01b038a166000908152601a602090815260408083203384529091529020549190611bf8565b611928565b5060019392505050565b6000546001600160a01b03163314610d5c5760405162461bcd60e51b8152600401610b0e906131ea565b6001600160a01b0381166000908152601b602052604090205460ff1615610dc55760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b0e565b6001600160a01b03811660009081526018602052604090205415610e1f576001600160a01b038116600090815260186020526040902054610e0590610f4f565b6001600160a01b0382166000908152601960205260409020555b6001600160a01b03166000818152601b60205260408120805460ff19166001908117909155601d805491820181559091527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f0180546001600160a01b0319169091179055565b6000546001600160a01b03163314610eaf5760405162461bcd60e51b8152600401610b0e906131ea565b600f805460ff19166001179055565b6000610ef5610ecd600061116f565b601254610eef90610ee6906001600160a01b031661116f565b60015490611c24565b90611c24565b905090565b6000546001600160a01b03163314610f245760405162461bcd60e51b8152600401610b0e906131ea565b610f46620186a0610f4084600154611c3090919063ffffffff16565b90611c3c565b60215560235550565b6000600254821115610fb65760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b0e565b6000610fc0611c48565b9050610fcc8184613278565b9392505050565b6000546001600160a01b03163314610ffd5760405162461bcd60e51b8152600401610b0e906131ea565b60155447906001600160a01b03166108fc61101d6064610f408587611c30565b6040518115909202916000818181858888f19350505050158015611045573d6000803e3d6000fd5b505050565b336000818152601a602090815260408083206001600160a01b03871684529091528120549091610cb0918590610d2390869061329a565b60006001548311156110d55760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b0e565b816110f65760006110ec8460016000806000611c6b565b519150610cb49050565b60006111088460016000806000611c6b565b602001519150610cb49050565b610cc633826000611ce9565b6000546001600160a01b0316331461114b5760405162461bcd60e51b8152600401610b0e906131ea565b60285461115990429061191c565b60245560295461116a90429061191c565b602655565b6001600160a01b0381166000908152601b602052604081205460ff16156111ac57506001600160a01b031660009081526019602052604090205490565b6001600160a01b038216600090815260186020526040902054610cb490610f4f565b6000546001600160a01b031633146111f85760405162461bcd60e51b8152600401610b0e906131ea565b6001600160a01b03166000908152601c60205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461124a5760405162461bcd60e51b8152600401610b0e906131ea565b60088690556009859055600a849055600583905560068290556007819055600b54861180159061127e5750600b5460095411155b801561128e5750600b54600a5411155b61129757600080fd5b505050505050565b6000546001600160a01b031633146112c95760405162461bcd60e51b8152600401610b0e906131ea565b60006112e6600b54610f4085600154611c3090919063ffffffff16565b90506000611305600b54610f4085600154611c3090919063ffffffff16565b90506000611325620186a0610f4060018054611c3090919063ffffffff16565b90508083101580156113375750808210155b6113a15760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b6064820152608401610b0e565b506003919091556004555050565b6001600160a01b0381166000908152601960209081526040808320546018909252822054610cb49190610eef90610f4f565b6000546001600160a01b0316331461140b5760405162461bcd60e51b8152600401610b0e906131ea565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114605760405162461bcd60e51b8152600401610b0e906131ea565b601480546001600160a01b039485166001600160a01b0319918216811790925560138054948616948216851790556015805493909516921682179093556000928352601c6020526040808420805460ff199081166001908117909255938552818520805485168217905591845290922080549091169091179055565b6000546001600160a01b031633146115065760405162461bcd60e51b8152600401610b0e906131ea565b611522620186a0610f4084600154611c3090919063ffffffff16565b60205560225550565b6000546001600160a01b031633146115555760405162461bcd60e51b8152600401610b0e906131ea565b601f80546001600160a01b039092166001600160a01b0319909216821790556000908152601b60205260409020805460ff19166001179055565b6000610cb03384610d23856040518060600160405280602581526020016133df60259139336000908152601a602090815260408083206001600160a01b038d1684529091529020549190611bf8565b6000610cb0338484611b23565b6000546001600160a01b031633146116155760405162461bcd60e51b8152600401610b0e906131ea565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa15801561165c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168091906132ad565b90506001600160a01b03841663a9059cbb846116a16064610f408688611c30565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156116ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171091906132c6565b5050505050565b6000546001600160a01b031633146117415760405162461bcd60e51b8152600401610b0e906131ea565b601f8054921515600160a81b0260ff60a81b1990931692909217909155602855565b6000546001600160a01b0316331461178d5760405162461bcd60e51b8152600401610b0e906131ea565b601f8054921515600160b01b0260ff60b01b1990931692909217909155602955565b6000546001600160a01b031633146117d95760405162461bcd60e51b8152600401610b0e906131ea565b60118390556001546117f490620186a090610f409085611c30565b600d5560015461180d90620186a090610f409084611c30565b600e55505050565b6000546001600160a01b0316331461183f5760405162461bcd60e51b8152600401610b0e906131ea565b601680546001600160a01b039384166001600160a01b031991821681179092556017805493909416921682179092556000918252601c6020526040808320805460ff199081166001908117909255928452922080549091169091179055565b6000546001600160a01b031633146118c85760405162461bcd60e51b8152600401610b0e906131ea565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000610fcc828461329a565b6001600160a01b03831661198a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b0e565b6001600160a01b0382166119eb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b0e565b6001600160a01b038381166000818152601a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601f805460ff60a01b1916600160a01b1790558015611ace576000611a97600b54610f40602254611a91601660009054906101000a90046001600160a01b031661116f565b90611c30565b905082811015611aa5578092505b601654600090611abd906001600160a01b031661116f565b905083811015611acb578093505b50505b602b54611adb908361191c565b602b5542602555602d54611af090600161191c565b602d55611afe833084611928565b611b118360008460008060006001611dad565b5050601f805460ff60a01b1916905550565b611b2e838383611fe2565b611b38838361211a565b611b438383836121b3565b611b4e8284836122c2565b611b58838361234e565b611b638383836123c3565b611b6d83836123e8565b6001600160a01b0383166000908152601c60205260409020546110459084908490849060ff1680611bb657506001600160a01b0386166000908152601c602052604090205460ff165b80611bc35750600c5460ff165b80611bd75750601f54600160a01b900460ff165b601f549015906001600160a01b039081168882168114918a16146000611dad565b60008184841115611c1c5760405162461bcd60e51b8152600401610b0e9190612f64565b505050900390565b6000610fcc8284613236565b6000610fcc82846132e3565b6000610fcc8284613278565b6000806000611c5561258d565b9092509050611c648183613278565b9250505090565b611cab6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b611cb88686868686612710565b9050611cce818787611cc8611c48565b86612938565b60608501526040840152602083015281525b95945050505050565b601f805460ff60a01b1916600160a01b1790558015611d64576000611d2e600b54610f40602354611a91601760009054906101000a90046001600160a01b031661116f565b905082811015611d3c578092505b601754600090611d54906001600160a01b031661116f565b9050838111611d61578093505b50505b602a54611d71908361191c565b602a5542602755602c54611d8690600161191c565b602c55611d94833084611928565b601254611b119084906001600160a01b03168460008080805b6000611dbc8686868686611c6b565b6001600160a01b0389166000908152601b602052604090205490915060ff1615611e1e576001600160a01b038816600090815260196020526040902054611e04908790613236565b6001600160a01b0389166000908152601960205260409020555b6001600160a01b0387166000908152601b602052604090205460ff1615611e815760808101516001600160a01b038816600090815260196020526040902054611e67919061329a565b6001600160a01b0388166000908152601960205260409020555b80516001600160a01b038916600090815260186020526040902054611ea69190613236565b6001600160a01b03808a16600090815260186020908152604080832094909455840151918a1681529190912054611edd919061329a565b6001600160a01b038816600090815260186020526040908190209190915581015160a0820151611f0e9190846129dd565b611f2081606001518260c00151612a19565b608081015115611f7c57866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360800151604051611f7391815260200190565b60405180910390a35b60c081015115611fd857306001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051611fcf91815260200190565b60405180910390a35b5050505050505050565b6001600160a01b0383166120465760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b0e565b6001600160a01b0382166120a85760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b0e565b6120b18361116f565b8111156110455760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610b0e565b6001600160a01b0382166000908152601c602052604090205460ff1615801561215c57506001600160a01b0381166000908152601c602052604090205460ff16155b15610c9f57600f5460ff16610c9f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f7420616c6c6f7765640000006044820152606401610b0e565b6001600160a01b0382166000908152601c602052604090205460ff161580156121f557506001600160a01b0383166000908152601c602052604090205460ff16155b801561220a57506001600160a01b0382163014155b801561222457506012546001600160a01b03838116911614155b801561223e5750601f546001600160a01b03838116911614155b801561225857506013546001600160a01b03838116911614155b15611045576004548161226a8461116f565b612274919061329a565b11156110455760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610b0e565b600354811115806122eb57506001600160a01b0382166000908152601c602052604090205460ff165b8061230e57506001600160a01b0383166000908152601c602052604090205460ff165b6110455760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610b0e565b601f546001600160a01b03828116911614801561238457506001600160a01b0382166000908152601c602052604090205460ff16155b80156123935750600c5460ff16155b80156123a95750601f54600160a01b900460ff16155b15610c9f576010546123bc90600161191c565b6010555050565b6123ce838383612a98565b15611045576123de600d54612b5e565b6000601055505050565b42602454111580156123fd5750600c5460ff16155b80156124165750601f546001600160a01b038281169116145b801561243b57506001600160a01b0382166000908152601c602052604090205460ff16155b80156124505750601f54600160a81b900460ff165b8015612471575060165460009061246f906001600160a01b031661116f565b115b80156124875750601f54600160a01b900460ff16155b156124b9576016546020546124a7916001600160a01b0316906001611a4c565b6028546124b590429061191c565b6024555b42602654111580156124ce5750600c5460ff16155b80156124e75750601f546001600160a01b038281169116145b801561250c57506001600160a01b0382166000908152601c602052604090205460ff16155b80156125215750601f54600160b01b900460ff165b80156125425750601754600090612540906001600160a01b031661116f565b115b80156125585750601f54600160a01b900460ff16155b15610c9f57601754602154612578916001600160a01b0316906001611ce9565b60295461258690429061191c565b6026555050565b6002546001546000918291825b601d548110156126df578260186000601d84815481106125bc576125bc61320a565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061262757508160196000601d84815481106126005761260061320a565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561263d57600254600154945094505050509091565b60186000601d83815481106126545761265461320a565b60009182526020808320909101546001600160a01b031683528201929092526040019020546126839084613236565b925060196000601d838154811061269c5761269c61320a565b60009182526020808320909101546001600160a01b031683528201929092526040019020546126cb9083613236565b9150806126d78161325f565b91505061259a565b506001546002546126f09190613278565b821015612707576002546001549350935050509091565b90939092509050565b6127506040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8415801561275c575081155b80612776575061276c8484612ced565b8015612776575081155b156127875760808101869052611ce0565b83158015612793575082155b801561279d575081155b156128155760006127bf600b54610f40600a548a611c3090919063ffffffff16565b9050600a54600560000154116127ef57600b546005546127df90896132e3565b6127e99190613278565b60a08301525b60a08201516127ff908290611c24565b60c083015261280e8188613236565b6080830152505b838015612820575081155b15612898576000612842600b54610f406009548a611c3090919063ffffffff16565b90506009546005600001541161287257600b5460055461286290896132e3565b61286c9190613278565b60a08301525b60a0820151612882908290611c24565b60c08301526128918188613236565b6080830152505b8280156128a3575081155b1561291b5760006128c5600b54610f406008548a611c3090919063ffffffff16565b9050600854600560000154116128f557600b546005546128e590896132e3565b6128ef9190613278565b60a08301525b60a0820151612905908290611c24565b60c08301526129148188613236565b6080830152505b8115611ce05760a081018690526080810186905295945050505050565b600080808061294786896132e3565b935086158015612955575084155b15612968575082915060009050806129d1565b841561299557858960a0015161297e91906132e3565b915061298a8285613236565b9250600090506129d1565b858960a001516129a591906132e3565b9150858960c001516129b791906132e3565b9050806129c48386613236565b6129ce9190613236565b92505b95509550955095915050565b82600260008282546129ef9190613236565b909155508190506110455781602e6000016000828254612a0f919061329a565b9091555050505050565b80602e6001016000828254612a2e919061329a565b9091555050306000908152601b602052604090205460ff1615612a70573060009081526019602052604081208054839290612a6a90849061329a565b90915550505b3060009081526018602052604081208054849290612a8f90849061329a565b90915550505050565b600080600e5483101590506000600d54612ab13061116f565b600c54911115915060ff16158015612ad05750600c54610100900460ff165b8015612ad95750815b8015612afe57506001600160a01b0386166000908152601c602052604090205460ff16155b8015612b0c5750600f5460ff165b8015612b255750601f546001600160a01b038681169116145b8015612b35575060115460105410155b8015612b3e5750805b8015612b545750601f54600160a01b900460ff16155b9695505050505050565b600c805460ff19166001908117909155600854600091612b8591600291611a91919061191c565b9050600854600003612bb757600654600754612bb491600291611a9191600191612bae9161191c565b9061191c565b90505b6007546000908290612bc990856132e3565b612bd39190613278565b90506000612be18285613236565b905047612bed82612d33565b6000612bf98247613236565b600754909150600090612c0c9087613236565b612c169083613278565b600754909150600090612c2990836132e3565b90508015612c3b57612c3b8682612e85565b600654600090612c5090611a91856002611c30565b90508015612c94576014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612c92573d6000803e3d6000fd5b505b478015612cd7576015546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612cd5573d6000803e3d6000fd5b505b5050600c805460ff191690555050505050505050565b6000828015612cfc5750600954155b80612d0f5750818015612d0f5750600854155b80610fcc575082158015612d21575081155b8015610fcc575050600a541592915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612d6857612d6861320a565b6001600160a01b03928316602091820292909201810191909152601e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de591906132fa565b81600181518110612df857612df861320a565b6001600160a01b039283166020918202929092010152601e54612e1e9130911684611928565b601e5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612e57908590600090869030904290600401613317565b600060405180830381600087803b158015612e7157600080fd5b505af1158015611297573d6000803e3d6000fd5b601e54612e9d9030906001600160a01b031684611928565b601e5460135460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612f0d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117109190613388565b6001600160a01b0381168114610cc657600080fd5b600060208284031215612f5957600080fd5b8135610fcc81612f32565b600060208083528351808285015260005b81811015612f9157858101830151858201604001528201612f75565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215612fc557600080fd5b8235612fd081612f32565b946020939093013593505050565b600060208284031215612ff057600080fd5b5035919050565b60008060006060848603121561300c57600080fd5b833561301781612f32565b9250602084013561302781612f32565b929592945050506040919091013590565b6000806040838503121561304b57600080fd5b50508035926020909101359150565b8015158114610cc657600080fd5b6000806040838503121561307b57600080fd5b82359150602083013561308d8161305a565b809150509250929050565b600080604083850312156130ab57600080fd5b82356130b68161305a565b9150602083013561308d81612f32565b60008060008060008060c087890312156130df57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000806040838503121561311c57600080fd5b823561312781612f32565b9150602083013561308d8161305a565b60008060006060848603121561314c57600080fd5b833561315781612f32565b9250602084013561316781612f32565b9150604084013561317781612f32565b809150509250925092565b6000806040838503121561319557600080fd5b82356130b681612f32565b600080604083850312156131b357600080fd5b8235612fd08161305a565b6000806000606084860312156131d357600080fd5b505081359360208301359350604090920135919050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610cb457610cb4613220565b634e487b7160e01b600052603160045260246000fd5b60006001820161327157613271613220565b5060010190565b60008261329557634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610cb457610cb4613220565b6000602082840312156132bf57600080fd5b5051919050565b6000602082840312156132d857600080fd5b8151610fcc8161305a565b8082028115828204841417610cb457610cb4613220565b60006020828403121561330c57600080fd5b8151610fcc81612f32565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156133675784516001600160a01b031683529383019391830191600101613342565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561339d57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204e93d712a7ab2c1616b82191dec4b19c86570ee0285f131067269220dfdb80c164736f6c63430008120033

Deployed Bytecode

0x60806040526004361061039b5760003560e01c80637934f4f2116101dc578063a9059cbb11610102578063e4800345116100a0578063ebf6cf9b1161006f578063ebf6cf9b14610a6e578063f09f694e14610a84578063f2fde38b14610aa4578063f887ea4014610ac457600080fd5b8063e480034514610a03578063e55a68b314610a23578063e94dd17c14610a39578063e960e68e14610a5957600080fd5b8063d1571e47116100dc578063d1571e4714610966578063dd62ed3e14610987578063dfa5f4ea146109cd578063e3067449146109ed57600080fd5b8063a9059cbb14610910578063b2118a8d14610930578063ca221c081461095057600080fd5b80638ebfc7961161017a5780639b9a6f09116101495780639b9a6f0914610882578063a22d483214610898578063a457c2d7146108b8578063a8aa1b31146108d857600080fd5b80638ebfc796146108225780639213c3581461084257806395b186411461086257806395d89b41146103f257600080fd5b806384836778116101b657806384836778146107ac57806384b81093146107cc578063884870c7146107e25780638cf2e94a1461080257600080fd5b80637934f4f2146107475780637d1db4a51461075d5780637d459db31461077357600080fd5b80633052ea08116102c157806344df8e701161025f5780636c0e1c121161022e5780636c0e1c12146106dc57806370a08231146106f157806378109e5414610711578063783b5a0a1461072757600080fd5b806344df8e70146106655780634549b03914610686578063486a7e6b146106a657806354b822cf146106bc57600080fd5b8063395093511161029b57806339509351146105e95780633c9f861d146106095780633f4218e01461061f578063404ca34a1461064f57600080fd5b80633052ea0814610597578063313ce567146105b757806337f0d4c8146105d357600080fd5b806322849720116103395780632b112e49116103085780632b112e49146105135780632cbf5360146105285780632d838119146105485780632f54bf6e1461056857600080fd5b806322849720146104a857806323b872dd146104be57806327334a08146104de578063293230b8146104fe57600080fd5b8063095ea7b311610375578063095ea7b31461042d5780630e7daf6d1461045d57806311403aec1461047357806318160ddd1461049357600080fd5b806303807ee5146103a757806305f82a45146103d057806306fdde03146103f257600080fd5b366103a257005b600080fd5b3480156103b357600080fd5b506103bd60235481565b6040519081526020015b60405180910390f35b3480156103dc57600080fd5b506103f06103eb366004612f47565b610ae4565b005b3480156103fe57600080fd5b50604080518082018252600c81526b784ecac79061c3102096989960a11b602082015290516103c79190612f64565b34801561043957600080fd5b5061044d610448366004612fb2565b610ca3565b60405190151581526020016103c7565b34801561046957600080fd5b506103bd60225481565b34801561047f57600080fd5b506103f061048e366004612fde565b610cba565b34801561049f57600080fd5b506001546103bd565b3480156104b457600080fd5b506103bd602b5481565b3480156104ca57600080fd5b5061044d6104d9366004612ff7565b610cc9565b3480156104ea57600080fd5b506103f06104f9366004612f47565b610d32565b34801561050a57600080fd5b506103f0610e85565b34801561051f57600080fd5b506103bd610ebe565b34801561053457600080fd5b506103f0610543366004613038565b610efa565b34801561055457600080fd5b506103bd610563366004612fde565b610f4f565b34801561057457600080fd5b5061044d610583366004612f47565b6000546001600160a01b0391821691161490565b3480156105a357600080fd5b506103f06105b2366004612fde565b610fd3565b3480156105c357600080fd5b50604051600981526020016103c7565b3480156105df57600080fd5b506103bd602d5481565b3480156105f557600080fd5b5061044d610604366004612fb2565b61104a565b34801561061557600080fd5b506103bd602a5481565b34801561062b57600080fd5b5061044d61063a366004612f47565b601c6020526000908152604090205460ff1681565b34801561065b57600080fd5b506103bd60205481565b34801561067157600080fd5b50601f5461044d90600160b01b900460ff1681565b34801561069257600080fd5b506103bd6106a1366004613068565b611081565b3480156106b257600080fd5b506103bd60215481565b3480156106c857600080fd5b506103f06106d7366004612fde565b611115565b3480156106e857600080fd5b506103f0611121565b3480156106fd57600080fd5b506103bd61070c366004612f47565b61116f565b34801561071d57600080fd5b506103bd60045481565b34801561073357600080fd5b506103f0610742366004613098565b6111ce565b34801561075357600080fd5b506103bd60255481565b34801561076957600080fd5b506103bd60035481565b34801561077f57600080fd5b5061044d61078e366004612f47565b6001600160a01b03166000908152601b602052604090205460ff1690565b3480156107b857600080fd5b506103f06107c73660046130c6565b611220565b3480156107d857600080fd5b506103bd60285481565b3480156107ee57600080fd5b506103f06107fd366004613038565b61129f565b34801561080e57600080fd5b506103bd61081d366004612f47565b6113af565b34801561082e57600080fd5b506103f061083d366004613109565b6113e1565b34801561084e57600080fd5b506103f061085d366004613137565b611436565b34801561086e57600080fd5b506103f061087d366004613038565b6114dc565b34801561088e57600080fd5b506103bd602c5481565b3480156108a457600080fd5b506103f06108b3366004612f47565b61152b565b3480156108c457600080fd5b5061044d6108d3366004612fb2565b61158f565b3480156108e457600080fd5b50601f546108f8906001600160a01b031681565b6040516001600160a01b0390911681526020016103c7565b34801561091c57600080fd5b5061044d61092b366004612fb2565b6115de565b34801561093c57600080fd5b506103f061094b366004612ff7565b6115eb565b34801561095c57600080fd5b506103bd60245481565b34801561097257600080fd5b50601f5461044d90600160a81b900460ff1681565b34801561099357600080fd5b506103bd6109a2366004613182565b6001600160a01b039182166000908152601a6020908152604080832093909416825291909152205490565b3480156109d957600080fd5b506103f06109e83660046131a0565b611717565b3480156109f957600080fd5b506103bd60275481565b348015610a0f57600080fd5b506103f0610a1e3660046131a0565b611763565b348015610a2f57600080fd5b506103bd60295481565b348015610a4557600080fd5b506103f0610a543660046131be565b6117af565b348015610a6557600080fd5b50602e546103bd565b348015610a7a57600080fd5b506103bd60265481565b348015610a9057600080fd5b506103f0610a9f366004613182565b611815565b348015610ab057600080fd5b506103f0610abf366004612f47565b61189e565b348015610ad057600080fd5b50601e546108f8906001600160a01b031681565b6000546001600160a01b03163314610b175760405162461bcd60e51b8152600401610b0e906131ea565b60405180910390fd5b6001600160a01b0381166000908152601b602052604090205460ff16610b7f5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610b0e565b60005b601d54811015610c9f57816001600160a01b0316601d8281548110610ba957610ba961320a565b6000918252602090912001546001600160a01b031603610c8d57601d8054610bd390600190613236565b81548110610be357610be361320a565b600091825260209091200154601d80546001600160a01b039092169183908110610c0f57610c0f61320a565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152601982526040808220829055601b90925220805460ff19169055601d805480610c6757610c67613249565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610c978161325f565b915050610b82565b5050565b6000610cb0338484611928565b5060015b92915050565b610cc633826000611a4c565b50565b6000610cd6848484611b23565b610d288433610d23856040518060600160405280602881526020016133b7602891396001600160a01b038a166000908152601a602090815260408083203384529091529020549190611bf8565b611928565b5060019392505050565b6000546001600160a01b03163314610d5c5760405162461bcd60e51b8152600401610b0e906131ea565b6001600160a01b0381166000908152601b602052604090205460ff1615610dc55760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b0e565b6001600160a01b03811660009081526018602052604090205415610e1f576001600160a01b038116600090815260186020526040902054610e0590610f4f565b6001600160a01b0382166000908152601960205260409020555b6001600160a01b03166000818152601b60205260408120805460ff19166001908117909155601d805491820181559091527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f0180546001600160a01b0319169091179055565b6000546001600160a01b03163314610eaf5760405162461bcd60e51b8152600401610b0e906131ea565b600f805460ff19166001179055565b6000610ef5610ecd600061116f565b601254610eef90610ee6906001600160a01b031661116f565b60015490611c24565b90611c24565b905090565b6000546001600160a01b03163314610f245760405162461bcd60e51b8152600401610b0e906131ea565b610f46620186a0610f4084600154611c3090919063ffffffff16565b90611c3c565b60215560235550565b6000600254821115610fb65760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b0e565b6000610fc0611c48565b9050610fcc8184613278565b9392505050565b6000546001600160a01b03163314610ffd5760405162461bcd60e51b8152600401610b0e906131ea565b60155447906001600160a01b03166108fc61101d6064610f408587611c30565b6040518115909202916000818181858888f19350505050158015611045573d6000803e3d6000fd5b505050565b336000818152601a602090815260408083206001600160a01b03871684529091528120549091610cb0918590610d2390869061329a565b60006001548311156110d55760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b0e565b816110f65760006110ec8460016000806000611c6b565b519150610cb49050565b60006111088460016000806000611c6b565b602001519150610cb49050565b610cc633826000611ce9565b6000546001600160a01b0316331461114b5760405162461bcd60e51b8152600401610b0e906131ea565b60285461115990429061191c565b60245560295461116a90429061191c565b602655565b6001600160a01b0381166000908152601b602052604081205460ff16156111ac57506001600160a01b031660009081526019602052604090205490565b6001600160a01b038216600090815260186020526040902054610cb490610f4f565b6000546001600160a01b031633146111f85760405162461bcd60e51b8152600401610b0e906131ea565b6001600160a01b03166000908152601c60205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461124a5760405162461bcd60e51b8152600401610b0e906131ea565b60088690556009859055600a849055600583905560068290556007819055600b54861180159061127e5750600b5460095411155b801561128e5750600b54600a5411155b61129757600080fd5b505050505050565b6000546001600160a01b031633146112c95760405162461bcd60e51b8152600401610b0e906131ea565b60006112e6600b54610f4085600154611c3090919063ffffffff16565b90506000611305600b54610f4085600154611c3090919063ffffffff16565b90506000611325620186a0610f4060018054611c3090919063ffffffff16565b90508083101580156113375750808210155b6113a15760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b6064820152608401610b0e565b506003919091556004555050565b6001600160a01b0381166000908152601960209081526040808320546018909252822054610cb49190610eef90610f4f565b6000546001600160a01b0316331461140b5760405162461bcd60e51b8152600401610b0e906131ea565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114605760405162461bcd60e51b8152600401610b0e906131ea565b601480546001600160a01b039485166001600160a01b0319918216811790925560138054948616948216851790556015805493909516921682179093556000928352601c6020526040808420805460ff199081166001908117909255938552818520805485168217905591845290922080549091169091179055565b6000546001600160a01b031633146115065760405162461bcd60e51b8152600401610b0e906131ea565b611522620186a0610f4084600154611c3090919063ffffffff16565b60205560225550565b6000546001600160a01b031633146115555760405162461bcd60e51b8152600401610b0e906131ea565b601f80546001600160a01b039092166001600160a01b0319909216821790556000908152601b60205260409020805460ff19166001179055565b6000610cb03384610d23856040518060600160405280602581526020016133df60259139336000908152601a602090815260408083206001600160a01b038d1684529091529020549190611bf8565b6000610cb0338484611b23565b6000546001600160a01b031633146116155760405162461bcd60e51b8152600401610b0e906131ea565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa15801561165c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168091906132ad565b90506001600160a01b03841663a9059cbb846116a16064610f408688611c30565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156116ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171091906132c6565b5050505050565b6000546001600160a01b031633146117415760405162461bcd60e51b8152600401610b0e906131ea565b601f8054921515600160a81b0260ff60a81b1990931692909217909155602855565b6000546001600160a01b0316331461178d5760405162461bcd60e51b8152600401610b0e906131ea565b601f8054921515600160b01b0260ff60b01b1990931692909217909155602955565b6000546001600160a01b031633146117d95760405162461bcd60e51b8152600401610b0e906131ea565b60118390556001546117f490620186a090610f409085611c30565b600d5560015461180d90620186a090610f409084611c30565b600e55505050565b6000546001600160a01b0316331461183f5760405162461bcd60e51b8152600401610b0e906131ea565b601680546001600160a01b039384166001600160a01b031991821681179092556017805493909416921682179092556000918252601c6020526040808320805460ff199081166001908117909255928452922080549091169091179055565b6000546001600160a01b031633146118c85760405162461bcd60e51b8152600401610b0e906131ea565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000610fcc828461329a565b6001600160a01b03831661198a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b0e565b6001600160a01b0382166119eb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b0e565b6001600160a01b038381166000818152601a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601f805460ff60a01b1916600160a01b1790558015611ace576000611a97600b54610f40602254611a91601660009054906101000a90046001600160a01b031661116f565b90611c30565b905082811015611aa5578092505b601654600090611abd906001600160a01b031661116f565b905083811015611acb578093505b50505b602b54611adb908361191c565b602b5542602555602d54611af090600161191c565b602d55611afe833084611928565b611b118360008460008060006001611dad565b5050601f805460ff60a01b1916905550565b611b2e838383611fe2565b611b38838361211a565b611b438383836121b3565b611b4e8284836122c2565b611b58838361234e565b611b638383836123c3565b611b6d83836123e8565b6001600160a01b0383166000908152601c60205260409020546110459084908490849060ff1680611bb657506001600160a01b0386166000908152601c602052604090205460ff165b80611bc35750600c5460ff165b80611bd75750601f54600160a01b900460ff165b601f549015906001600160a01b039081168882168114918a16146000611dad565b60008184841115611c1c5760405162461bcd60e51b8152600401610b0e9190612f64565b505050900390565b6000610fcc8284613236565b6000610fcc82846132e3565b6000610fcc8284613278565b6000806000611c5561258d565b9092509050611c648183613278565b9250505090565b611cab6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b611cb88686868686612710565b9050611cce818787611cc8611c48565b86612938565b60608501526040840152602083015281525b95945050505050565b601f805460ff60a01b1916600160a01b1790558015611d64576000611d2e600b54610f40602354611a91601760009054906101000a90046001600160a01b031661116f565b905082811015611d3c578092505b601754600090611d54906001600160a01b031661116f565b9050838111611d61578093505b50505b602a54611d71908361191c565b602a5542602755602c54611d8690600161191c565b602c55611d94833084611928565b601254611b119084906001600160a01b03168460008080805b6000611dbc8686868686611c6b565b6001600160a01b0389166000908152601b602052604090205490915060ff1615611e1e576001600160a01b038816600090815260196020526040902054611e04908790613236565b6001600160a01b0389166000908152601960205260409020555b6001600160a01b0387166000908152601b602052604090205460ff1615611e815760808101516001600160a01b038816600090815260196020526040902054611e67919061329a565b6001600160a01b0388166000908152601960205260409020555b80516001600160a01b038916600090815260186020526040902054611ea69190613236565b6001600160a01b03808a16600090815260186020908152604080832094909455840151918a1681529190912054611edd919061329a565b6001600160a01b038816600090815260186020526040908190209190915581015160a0820151611f0e9190846129dd565b611f2081606001518260c00151612a19565b608081015115611f7c57866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360800151604051611f7391815260200190565b60405180910390a35b60c081015115611fd857306001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051611fcf91815260200190565b60405180910390a35b5050505050505050565b6001600160a01b0383166120465760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b0e565b6001600160a01b0382166120a85760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b0e565b6120b18361116f565b8111156110455760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610b0e565b6001600160a01b0382166000908152601c602052604090205460ff1615801561215c57506001600160a01b0381166000908152601c602052604090205460ff16155b15610c9f57600f5460ff16610c9f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f7420616c6c6f7765640000006044820152606401610b0e565b6001600160a01b0382166000908152601c602052604090205460ff161580156121f557506001600160a01b0383166000908152601c602052604090205460ff16155b801561220a57506001600160a01b0382163014155b801561222457506012546001600160a01b03838116911614155b801561223e5750601f546001600160a01b03838116911614155b801561225857506013546001600160a01b03838116911614155b15611045576004548161226a8461116f565b612274919061329a565b11156110455760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610b0e565b600354811115806122eb57506001600160a01b0382166000908152601c602052604090205460ff165b8061230e57506001600160a01b0383166000908152601c602052604090205460ff165b6110455760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610b0e565b601f546001600160a01b03828116911614801561238457506001600160a01b0382166000908152601c602052604090205460ff16155b80156123935750600c5460ff16155b80156123a95750601f54600160a01b900460ff16155b15610c9f576010546123bc90600161191c565b6010555050565b6123ce838383612a98565b15611045576123de600d54612b5e565b6000601055505050565b42602454111580156123fd5750600c5460ff16155b80156124165750601f546001600160a01b038281169116145b801561243b57506001600160a01b0382166000908152601c602052604090205460ff16155b80156124505750601f54600160a81b900460ff165b8015612471575060165460009061246f906001600160a01b031661116f565b115b80156124875750601f54600160a01b900460ff16155b156124b9576016546020546124a7916001600160a01b0316906001611a4c565b6028546124b590429061191c565b6024555b42602654111580156124ce5750600c5460ff16155b80156124e75750601f546001600160a01b038281169116145b801561250c57506001600160a01b0382166000908152601c602052604090205460ff16155b80156125215750601f54600160b01b900460ff165b80156125425750601754600090612540906001600160a01b031661116f565b115b80156125585750601f54600160a01b900460ff16155b15610c9f57601754602154612578916001600160a01b0316906001611ce9565b60295461258690429061191c565b6026555050565b6002546001546000918291825b601d548110156126df578260186000601d84815481106125bc576125bc61320a565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061262757508160196000601d84815481106126005761260061320a565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561263d57600254600154945094505050509091565b60186000601d83815481106126545761265461320a565b60009182526020808320909101546001600160a01b031683528201929092526040019020546126839084613236565b925060196000601d838154811061269c5761269c61320a565b60009182526020808320909101546001600160a01b031683528201929092526040019020546126cb9083613236565b9150806126d78161325f565b91505061259a565b506001546002546126f09190613278565b821015612707576002546001549350935050509091565b90939092509050565b6127506040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8415801561275c575081155b80612776575061276c8484612ced565b8015612776575081155b156127875760808101869052611ce0565b83158015612793575082155b801561279d575081155b156128155760006127bf600b54610f40600a548a611c3090919063ffffffff16565b9050600a54600560000154116127ef57600b546005546127df90896132e3565b6127e99190613278565b60a08301525b60a08201516127ff908290611c24565b60c083015261280e8188613236565b6080830152505b838015612820575081155b15612898576000612842600b54610f406009548a611c3090919063ffffffff16565b90506009546005600001541161287257600b5460055461286290896132e3565b61286c9190613278565b60a08301525b60a0820151612882908290611c24565b60c08301526128918188613236565b6080830152505b8280156128a3575081155b1561291b5760006128c5600b54610f406008548a611c3090919063ffffffff16565b9050600854600560000154116128f557600b546005546128e590896132e3565b6128ef9190613278565b60a08301525b60a0820151612905908290611c24565b60c08301526129148188613236565b6080830152505b8115611ce05760a081018690526080810186905295945050505050565b600080808061294786896132e3565b935086158015612955575084155b15612968575082915060009050806129d1565b841561299557858960a0015161297e91906132e3565b915061298a8285613236565b9250600090506129d1565b858960a001516129a591906132e3565b9150858960c001516129b791906132e3565b9050806129c48386613236565b6129ce9190613236565b92505b95509550955095915050565b82600260008282546129ef9190613236565b909155508190506110455781602e6000016000828254612a0f919061329a565b9091555050505050565b80602e6001016000828254612a2e919061329a565b9091555050306000908152601b602052604090205460ff1615612a70573060009081526019602052604081208054839290612a6a90849061329a565b90915550505b3060009081526018602052604081208054849290612a8f90849061329a565b90915550505050565b600080600e5483101590506000600d54612ab13061116f565b600c54911115915060ff16158015612ad05750600c54610100900460ff165b8015612ad95750815b8015612afe57506001600160a01b0386166000908152601c602052604090205460ff16155b8015612b0c5750600f5460ff165b8015612b255750601f546001600160a01b038681169116145b8015612b35575060115460105410155b8015612b3e5750805b8015612b545750601f54600160a01b900460ff16155b9695505050505050565b600c805460ff19166001908117909155600854600091612b8591600291611a91919061191c565b9050600854600003612bb757600654600754612bb491600291611a9191600191612bae9161191c565b9061191c565b90505b6007546000908290612bc990856132e3565b612bd39190613278565b90506000612be18285613236565b905047612bed82612d33565b6000612bf98247613236565b600754909150600090612c0c9087613236565b612c169083613278565b600754909150600090612c2990836132e3565b90508015612c3b57612c3b8682612e85565b600654600090612c5090611a91856002611c30565b90508015612c94576014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612c92573d6000803e3d6000fd5b505b478015612cd7576015546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612cd5573d6000803e3d6000fd5b505b5050600c805460ff191690555050505050505050565b6000828015612cfc5750600954155b80612d0f5750818015612d0f5750600854155b80610fcc575082158015612d21575081155b8015610fcc575050600a541592915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612d6857612d6861320a565b6001600160a01b03928316602091820292909201810191909152601e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de591906132fa565b81600181518110612df857612df861320a565b6001600160a01b039283166020918202929092010152601e54612e1e9130911684611928565b601e5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612e57908590600090869030904290600401613317565b600060405180830381600087803b158015612e7157600080fd5b505af1158015611297573d6000803e3d6000fd5b601e54612e9d9030906001600160a01b031684611928565b601e5460135460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612f0d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117109190613388565b6001600160a01b0381168114610cc657600080fd5b600060208284031215612f5957600080fd5b8135610fcc81612f32565b600060208083528351808285015260005b81811015612f9157858101830151858201604001528201612f75565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215612fc557600080fd5b8235612fd081612f32565b946020939093013593505050565b600060208284031215612ff057600080fd5b5035919050565b60008060006060848603121561300c57600080fd5b833561301781612f32565b9250602084013561302781612f32565b929592945050506040919091013590565b6000806040838503121561304b57600080fd5b50508035926020909101359150565b8015158114610cc657600080fd5b6000806040838503121561307b57600080fd5b82359150602083013561308d8161305a565b809150509250929050565b600080604083850312156130ab57600080fd5b82356130b68161305a565b9150602083013561308d81612f32565b60008060008060008060c087890312156130df57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000806040838503121561311c57600080fd5b823561312781612f32565b9150602083013561308d8161305a565b60008060006060848603121561314c57600080fd5b833561315781612f32565b9250602084013561316781612f32565b9150604084013561317781612f32565b809150509250925092565b6000806040838503121561319557600080fd5b82356130b681612f32565b600080604083850312156131b357600080fd5b8235612fd08161305a565b6000806000606084860312156131d357600080fd5b505081359360208301359350604090920135919050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610cb457610cb4613220565b634e487b7160e01b600052603160045260246000fd5b60006001820161327157613271613220565b5060010190565b60008261329557634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610cb457610cb4613220565b6000602082840312156132bf57600080fd5b5051919050565b6000602082840312156132d857600080fd5b8151610fcc8161305a565b8082028115828204841417610cb457610cb4613220565b60006020828403121561330c57600080fd5b8151610fcc81612f32565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156133675784516001600160a01b031683529383019391830191600101613342565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561339d57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204e93d712a7ab2c1616b82191dec4b19c86570ee0285f131067269220dfdb80c164736f6c63430008120033

Deployed Bytecode Sourcemap

7514:23969:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9802:32;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;9802:32:0;;;;;;;;27091:464;;;;;;;;;;-1:-1:-1;27091:464:0;;;;;:::i;:::-;;:::i;:::-;;11749:67;;;;;;;;;;-1:-1:-1;11809:5:0;;;;;;;;;;;-1:-1:-1;;;11809:5:0;;;;11749:67;;;;11809:5;11749:67;:::i;12515:134::-;;;;;;;;;;-1:-1:-1;12515:134:0;;;;;:::i;:::-;;:::i;:::-;;;1622:14:1;;1615:22;1597:41;;1585:2;1570:18;12515:134:0;1457:187:1;9756:39:0;;;;;;;;;;;;;;;;19424:117;;;;;;;;;;-1:-1:-1;19424:117:0;;;;;:::i;:::-;;:::i;11972:79::-;;;;;;;;;;-1:-1:-1;12042:7:0;;11972:79;;10115:30;;;;;;;;;;;;;;;;12929:309;;;;;;;;;;-1:-1:-1;12929:309:0;;;;;:::i;:::-;;:::i;26748:335::-;;;;;;;;;;-1:-1:-1;26748:335:0;;;;;:::i;:::-;;:::i;22209:83::-;;;;;;;;;;;;;:::i;25844:143::-;;;;;;;;;;;;;:::i;24091:182::-;;;;;;;;;;-1:-1:-1;24091:182:0;;;;;:::i;:::-;;:::i;26492:248::-;;;;;;;;;;-1:-1:-1;26492:248:0;;;;;:::i;:::-;;:::i;6219:87::-;;;;;;;;;;-1:-1:-1;6219:87:0;;;;;:::i;:::-;6274:4;6299:5;-1:-1:-1;;;;;6288:16:0;;;6299:5;;6288:16;;6219:87;24520:182;;;;;;;;;;-1:-1:-1;24520:182:0;;;;;:::i;:::-;;:::i;11899:67::-;;;;;;;;;;-1:-1:-1;11899:67:0;;7778:1;2690:36:1;;2678:2;2663:18;11899:67:0;2548:184:1;10189:36:0;;;;;;;;;;;;;;;;13246:209;;;;;;;;;;-1:-1:-1;13246:209:0;;;;;:::i;:::-;;:::i;10084:24::-;;;;;;;;;;;;;;;;9403:44;;;;;;;;;;-1:-1:-1;9403:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9635:57;;;;;;;;;;;;;;;;9605:23;;;;;;;;;;-1:-1:-1;9605:23:0;;;;-1:-1:-1;;;9605:23:0;;;;;;25995:489;;;;;;;;;;-1:-1:-1;25995:489:0;;;;;:::i;:::-;;:::i;9699:50::-;;;;;;;;;;;;;;;;19549:103;;;;;;;;;;-1:-1:-1;19549:103:0;;;;;:::i;:::-;;:::i;22300:175::-;;;;;;;;;;;;;:::i;12057:173::-;;;;;;;;;;-1:-1:-1;12057:173:0;;;;;:::i;:::-;;:::i;8016:54::-;;;;;;;;;;;;;;;;22634:124;;;;;;;;;;-1:-1:-1;22634:124:0;;;;;:::i;:::-;;:::i;9878:34::-;;;;;;;;;;;;;;;;7958:51;;;;;;;;;;;;;;;;12747:108;;;;;;;;;;-1:-1:-1;12747:108:0;;;;;:::i;:::-;-1:-1:-1;;;;;12833:20:0;12819:4;12833:20;;;:11;:20;;;;;;;;;12747:108;22766:442;;;;;;;;;;-1:-1:-1;22766:442:0;;;;;:::i;:::-;;:::i;9983:47::-;;;;;;;;;;;;;;;;25137:445;;;;;;;;;;-1:-1:-1;25137:445:0;;;;;:::i;:::-;;:::i;13736:157::-;;;;;;;;;;-1:-1:-1;13736:157:0;;;;;:::i;:::-;;:::i;24710:117::-;;;;;;;;;;-1:-1:-1;24710:117:0;;;;;:::i;:::-;;:::i;23216:322::-;;;;;;;;;;-1:-1:-1;23216:322:0;;;;;:::i;:::-;;:::i;24281:231::-;;;;;;;;;;-1:-1:-1;24281:231:0;;;;;:::i;:::-;;:::i;10152:30::-;;;;;;;;;;;;;;;;22483:143;;;;;;;;;;-1:-1:-1;22483:143:0;;;;;:::i;:::-;;:::i;13463:265::-;;;;;;;;;;-1:-1:-1;13463:265:0;;;;;:::i;:::-;;:::i;9516:19::-;;;;;;;;;;-1:-1:-1;9516:19:0;;;;-1:-1:-1;;;;;9516:19:0;;;;;;-1:-1:-1;;;;;5174:32:1;;;5156:51;;5144:2;5129:18;9516:19:0;5010:203:1;12236:140:0;;;;;;;;;;-1:-1:-1;12236:140:0;;;;;:::i;:::-;;:::i;25590:246::-;;;;;;;;;;-1:-1:-1;25590:246:0;;;;;:::i;:::-;;:::i;9841:30::-;;;;;;;;;;;;;;;;9568;;;;;;;;;;-1:-1:-1;9568:30:0;;;;-1:-1:-1;;;9568:30:0;;;;;;12382:127;;;;;;;;;;-1:-1:-1;12382:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;12480:18:0;;;12463:7;12480:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12382:127;23926:157;;;;;;;;;;-1:-1:-1;23926:157:0;;;;;:::i;:::-;;:::i;9949:27::-;;;;;;;;;;;;;;;;23782:136;;;;;;;;;;-1:-1:-1;23782:136:0;;;;;:::i;:::-;;:::i;10037:40::-;;;;;;;;;;;;;;;;24835:294;;;;;;;;;;-1:-1:-1;24835:294:0;;;;;:::i;:::-;;:::i;12655:86::-;;;;;;;;;;-1:-1:-1;12724:11:0;:15;12655:86;;9919:23;;;;;;;;;;;;;;;;23546:228;;;;;;;;;;-1:-1:-1;23546:228:0;;;;;:::i;:::-;;:::i;6312:111::-;;;;;;;;;;-1:-1:-1;6312:111:0;;;;;:::i;:::-;;:::i;9488:21::-;;;;;;;;;;-1:-1:-1;9488:21:0;;;;-1:-1:-1;;;;;9488:21:0;;;27091:464;6274:4;6299:5;-1:-1:-1;;;;;6299:5:0;6186:10;6288:16;6170:38;;;;-1:-1:-1;;;6170:38:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;27175:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;27167:56;;;::::0;-1:-1:-1;;;27167:56:0;;7265:2:1;27167:56:0::1;::::0;::::1;7247:21:1::0;7304:2;7284:18;;;7277:30;7343:25;7323:18;;;7316:53;7386:18;;27167:56:0::1;7063:347:1::0;27167:56:0::1;27239:9;27234:314;27258:9;:16:::0;27254:20;::::1;27234:314;;;27316:7;-1:-1:-1::0;;;;;27300:23:0::1;:9;27310:1;27300:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;27300:12:0::1;:23:::0;27296:241:::1;;27359:9;27369:16:::0;;:20:::1;::::0;27388:1:::1;::::0;27369:20:::1;:::i;:::-;27359:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;27344:9:::1;:12:::0;;-1:-1:-1;;;;;27359:31:0;;::::1;::::0;27354:1;;27344:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;27344:46:0::1;-1:-1:-1::0;;;;;27344:46:0;;::::1;;::::0;;27409:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;27448:11:::1;:20:::0;;;;:28;;-1:-1:-1;;27448:28:0::1;::::0;;27495:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;27495:15:0;;;;;-1:-1:-1;;;;;;27495:15:0::1;::::0;;;;;27234:314:::1;27091:464:::0;:::o;27296:241::-:1;27276:3:::0;::::1;::::0;::::1;:::i;:::-;;;;27234:314;;;;27091:464:::0;:::o;12515:134::-;12590:4;12597:37;12606:10;12618:7;12627:6;12597:8;:37::i;:::-;-1:-1:-1;12643:4:0;12515:134;;;;;:::o;19424:117::-;19488:45;19507:10;19519:6;19527:5;19488:18;:45::i;:::-;19424:117;:::o;12929:309::-;13027:4;13044:36;13054:6;13062:9;13073:6;13044:9;:36::i;:::-;13091:117;13100:6;13108:10;13120:87;13156:6;13120:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13120:19:0;;;;;;:11;:19;;;;;;;;13140:10;13120:31;;;;;;;;;:87;:35;:87::i;:::-;13091:8;:117::i;:::-;-1:-1:-1;13226:4:0;12929:309;;;;;:::o;26748:335::-;6274:4;6299:5;-1:-1:-1;;;;;6299:5:0;6186:10;6288:16;6170:38;;;;-1:-1:-1;;;6170:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26833:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;26832:21;26824:61;;;::::0;-1:-1:-1;;;26824:61:0;;8286:2:1;26824:61:0::1;::::0;::::1;8268:21:1::0;8325:2;8305:18;;;8298:30;8364:29;8344:18;;;8337:57;8411:18;;26824:61:0::1;8084:351:1::0;26824:61:0::1;-1:-1:-1::0;;;;;26899:16:0;::::1;26918:1;26899:16:::0;;;:7:::1;:16;::::0;;;;;:20;26896:108:::1;;-1:-1:-1::0;;;;;26975:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;26955:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;26936:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;26896:108:::1;-1:-1:-1::0;;;;;27014:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;27014:27:0::1;27037:4;27014:27:::0;;::::1;::::0;;;27052:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;27052:23:0::1;::::0;;::::1;::::0;;26748:335::o;22209:83::-;6274:4;6299:5;-1:-1:-1;;;;;6299:5:0;6186:10;6288:16;6170:38;;;;-1:-1:-1;;;6170:38:0;;;;;;;:::i;:::-;22263:14:::1;:21:::0;;-1:-1:-1;;22263:21:0::1;22280:4;22263:21;::::0;;22209:83::o;25844:143::-;25897:7;25924:55;25957:21;25975:1;25957:9;:21::i;:::-;25946:4;;25924:28;;25936:15;;-1:-1:-1;;;;;25946:4:0;25936:9;:15::i;:::-;25924:7;;;:11;:28::i;:::-;:32;;:55::i;:::-;25917:62;;25844:143;:::o;24091:182::-;6274:4;6299:5;-1:-1:-1;;;;;6299:5:0;6186:10;6288:16;6170:38;;;;-1:-1:-1;;;6170:38:0;;;;;;;:::i;:::-;24201:36:::1;24230:6;24201:24;24213:11;24201:7;;:11;;:24;;;;:::i;:::-;:28:::0;::::1;:36::i;:::-;24188:10;:49:::0;24239:11:::1;:26:::0;-1:-1:-1;24091:182:0:o;26492:248::-;26558:7;26597;;26586;:18;;26578:73;;;;-1:-1:-1;;;26578:73:0;;8642:2:1;26578:73:0;;;8624:21:1;8681:2;8661:18;;;8654:30;8720:34;8700:18;;;8693:62;-1:-1:-1;;;8771:18:1;;;8764:40;8821:19;;26578:73:0;8440:406:1;26578:73:0;26662:19;26685:10;:8;:10::i;:::-;26662:33;-1:-1:-1;26713:19:0;26662:33;26713:7;:19;:::i;:::-;26706:26;26492:248;-1:-1:-1;;;26492:248:0:o;24520:182::-;6274:4;6299:5;-1:-1:-1;;;;;6299:5:0;6186:10;6288:16;6170:38;;;;-1:-1:-1;;;6170:38:0;;;;;;;:::i;:::-;24640:16:::1;::::0;24600:21:::1;::::0;-1:-1:-1;;;;;24640:16:0::1;24632:62;24667:26;24689:3;24667:17;24600:21:::0;24681:2;24667:13:::1;:17::i;:26::-;24632:62;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;24569:133;24520:182:::0;:::o;13246:209::-;13360:10;13334:4;13381:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;13381:32:0;;;;;;;;;;13334:4;;13351:74;;13372:7;;13381:43;;13414:10;;13381:43;:::i;25995:489::-;26085:7;26124;;26113;:18;;26105:62;;;;-1:-1:-1;;;26105:62:0;;9405:2:1;26105:62:0;;;9387:21:1;9444:2;9424:18;;;9417:30;9483:33;9463:18;;;9456:61;9534:18;;26105:62:0;9203:355:1;26105:62:0;26183:17;26178:299;;26217:28;26248:46;26259:7;26268:4;26274:5;26281;26288;26248:10;:46::i;:::-;26316:9;;-1:-1:-1;26309:16:0;;-1:-1:-1;26309:16:0;26178:299;26358:28;26389:46;26400:7;26409:4;26415:5;26422;26429;26389:10;:46::i;:::-;26457:17;;;;-1:-1:-1;26450:24:0;;-1:-1:-1;26450:24:0;19549:103;19606:38;19618:10;19630:6;19638:5;19606:11;:38::i;22300:175::-;6274:4;6299:5;-1:-1:-1;;;;;6299:5:0;6186:10;6288:16;6170:38;;;;-1:-1:-1;;;6170:38:0;;;;;;;:::i;:::-;22392:19:::1;::::0;22372:40:::1;::::0;:15:::1;::::0;:19:::1;:40::i;:::-;22354:15;:58:::0;22454:12:::1;::::0;22434:33:::1;::::0;:15:::1;::::0;:19:::1;:33::i;:::-;22423:8;:44:::0;22300:175::o;12057:173::-;-1:-1:-1;;;;;12137:20:0;;12123:7;12137:20;;;:11;:20;;;;;;;;12133:49;;;-1:-1:-1;;;;;;12166:16:0;;;;;:7;:16;;;;;;;12057:173::o;12133:49::-;-1:-1:-1;;;;;12211:16:0;;;;;;:7;:16;;;;;;12191:37;;:19;:37::i;22634:124::-;6274:4;6299:5;-1:-1:-1;;;;;6299:5:0;6186:10;6288:16;6170:38;;;;-1:-1:-1;;;6170:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22718:21:0::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;22718:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22634:124::o;22766:442::-;6274:4;6299:5;-1:-1:-1;;;;;6299:5:0;6186:10;6288:16;6170:38;;;;-1:-1:-1;;;6170:38:0;;;;;;;:::i;:::-;22925:8:::1;:15:::0;;;22942:7:::1;:15:::0;;;22959:11:::1;:20:::0;;;22990:8:::1;:27:::0;;;23028:18;:31;;;23070:18;:31;;;23132:11:::1;::::0;23120:23;::::1;::::0;::::1;::::0;:49:::1;;;23158:11;;23147:7;;:22;;23120:49;:79;;;;;23188:11;;23173;;:26;;23120:79;23112:88;;;::::0;::::1;;22766:442:::0;;;;;;:::o;25137:445::-;6274:4;6299:5;-1:-1:-1;;;;;6299:5:0;6186:10;6288:16;6170:38;;;;-1:-1:-1;;;6170:38:0;;;;;;;:::i;:::-;25221:13:::1;25237:43;25267:11;;25237:17;25249:4;25237:7;;:11;;:17;;;;:::i;:43::-;25221:59;;25291:17;25311:46;25344:11;;25311:20;25323:7;25311;;:11;;:20;;;;:::i;:46::-;25291:66;;25359:13;25375:26;25394:6;25375:14;25387:1;25375:7:::0;::::1;:11;;:14;;;;:::i;:26::-;25359:42;;25429:5;25420;:14;;:36;;;;;25451:5;25438:9;:18;;25420:36;25412:102;;;::::0;-1:-1:-1;;;25412:102:0;;9765:2:1;25412:102:0::1;::::0;::::1;9747:21:1::0;9804:2;9784:18;;;9777:30;9843:34;9823:18;;;9816:62;-1:-1:-1;;;9894:18:1;;;9887:51;9955:19;;25412:102:0::1;9563:417:1::0;25412:102:0::1;-1:-1:-1::0;25525:12:0::1;:20:::0;;;;25547:15:::1;:27:::0;-1:-1:-1;;25137:445:0:o;13736:157::-;-1:-1:-1;;;;;13869:15:0;;13801:7;13869:15;;;:7;:15;;;;;;;;;13848:7;:15;;;;;;13828:57;;13869:15;13828:36;;:19;:36::i;24710:117::-;6274:4;6299:5;-1:-1:-1;;;;;6299:5:0;6186:10;6288:16;6170:38;;;;-1:-1:-1;;;6170:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24791:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;24791:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24710:117::o;23216:322::-;6274:4;6299:5;-1:-1:-1;;;;;6299:5:0;6186:10;6288:16;6170:38;;;;-1:-1:-1;;;6170:38:0;;;;;;;:::i;:::-;23334:18:::1;:31:::0;;-1:-1:-1;;;;;23334:31:0;;::::1;-1:-1:-1::0;;;;;;23334:31:0;;::::1;::::0;::::1;::::0;;;23367:18:::1;:31:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;23400:16:::1;:27:::0;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;23334:18:::1;23438:23:::0;;;:11:::1;:23;::::0;;;;;:30;;-1:-1:-1;;23438:30:0;;::::1;23334:31:::0;23438:30;;::::1;::::0;;;23470:23;;;;;;:30;;;::::1;::::0;::::1;::::0;;23502:21;;;;;;:28;;;;::::1;::::0;;::::1;::::0;;23216:322::o;24281:231::-;6274:4;6299:5;-1:-1:-1;;;;;6299:5:0;6186:10;6288:16;6170:38;;;;-1:-1:-1;;;6170:38:0;;;;;;;:::i;:::-;24419:43:::1;24455:6;24419:31;24431:18;24419:7;;:11;;:31;;;;:::i;:43::-;24399:17;:63:::0;24464:18:::1;:40:::0;-1:-1:-1;24281:231:0:o;22483:143::-;6274:4;6299:5;-1:-1:-1;;;;;6299:5:0;6186:10;6288:16;6170:38;;;;-1:-1:-1;;;6170:38:0;;;;;;;:::i;:::-;22558:4:::1;:18:::0;;-1:-1:-1;;;;;22558:18:0;;::::1;-1:-1:-1::0;;;;;;22558:18:0;;::::1;::::0;::::1;::::0;;:4:::1;22578:33:::0;;;:11:::1;:33;::::0;;;;:40;;-1:-1:-1;;22578:40:0::1;22558:18:::0;22578:40:::1;::::0;;22483:143::o;13463:265::-;13556:4;13573:125;13582:10;13594:7;13603:94;13640:15;13603:94;;;;;;;;;;;;;;;;;13615:10;13603:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;13603:32:0;;;;;;;;;;;:94;:36;:94::i;12236:140::-;12314:4;12321:40;12331:10;12343:9;12354:6;12321:9;:40::i;25590:246::-;6274:4;6299:5;-1:-1:-1;;;;;6299:5:0;6186:10;6288:16;6170:38;;;;-1:-1:-1;;;6170:38:0;;;;;;;:::i;:::-;25712:39:::1;::::0;-1:-1:-1;;;25712:39:0;;25745:4:::1;25712:39;::::0;::::1;5156:51:1::0;25697:12:0::1;::::0;-1:-1:-1;;;;;25712:24:0;::::1;::::0;::::1;::::0;5129:18:1;;25712:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25697:54:::0;-1:-1:-1;;;;;;25762:23:0;::::1;;25786:9:::0;25797:30:::1;25823:3;25797:21;25697:54:::0;25806:11;25797:8:::1;:21::i;:30::-;25762:66;::::0;-1:-1:-1;;;;;;25762:66:0::1;::::0;;;;;;-1:-1:-1;;;;;10366:32:1;;;25762:66:0::1;::::0;::::1;10348:51:1::0;10415:18;;;10408:34;10321:18;;25762:66:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25686:150;25590:246:::0;;;:::o;23926:157::-;6274:4;6299:5;-1:-1:-1;;;;;6299:5:0;6186:10;6288:16;6170:38;;;;-1:-1:-1;;;6170:38:0;;;;;;;:::i;:::-;24022:11:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;24022:21:0::1;-1:-1:-1::0;;;;24022:21:0;;::::1;::::0;;;::::1;::::0;;;24045:19:::1;:30:::0;23926:157::o;23782:136::-;6274:4;6299:5;-1:-1:-1;;;;;6299:5:0;6186:10;6288:16;6170:38;;;;-1:-1:-1;;;6170:38:0;;;;;;;:::i;:::-;23871:4:::1;:14:::0;;;::::1;;-1:-1:-1::0;;;23871:14:0::1;-1:-1:-1::0;;;;23871:14:0;;::::1;::::0;;;::::1;::::0;;;23887:12:::1;:23:::0;23782:136::o;24835:294::-;6274:4;6299:5;-1:-1:-1;;;;;6299:5:0;6186:10;6288:16;6170:38;;;;-1:-1:-1;;;6170:38:0;;;;;;;:::i;:::-;24963:10:::1;:24:::0;;;25005:7:::1;::::0;:48:::1;::::0;25045:6:::1;::::0;25005:27:::1;::::0;25017:14;25005:11:::1;:27::i;:48::-;24989:13;:64:::0;25073:7:::1;::::0;:48:::1;::::0;25113:6:::1;::::0;25073:27:::1;::::0;25085:14;25073:11:::1;:27::i;:48::-;25055:15;:66:::0;-1:-1:-1;;;24835:294:0:o;23546:228::-;6274:4;6299:5;-1:-1:-1;;;;;6299:5:0;6186:10;6288:16;6170:38;;;;-1:-1:-1;;;6170:38:0;;;;;;;:::i;:::-;23644:17:::1;:32:::0;;-1:-1:-1;;;;;23644:32:0;;::::1;-1:-1:-1::0;;;;;;23644:32:0;;::::1;::::0;::::1;::::0;;;23678:10:::1;:18:::0;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;23644:17:::1;23707:25:::0;;;:11:::1;:25;::::0;;;;;:32;;-1:-1:-1;;23707:32:0;;::::1;23644::::0;23707;;::::1;::::0;;;23741:18;;;;;:25;;;;::::1;::::0;;::::1;::::0;;23546:228::o;6312:111::-;6274:4;6299:5;-1:-1:-1;;;;;6299:5:0;6186:10;6288:16;6170:38;;;;-1:-1:-1;;;6170:38:0;;;;;;;:::i;:::-;6378:5:::1;:11:::0;;-1:-1:-1;;;;;;6378:11:0::1;-1:-1:-1::0;;;;;6378:11:0;::::1;::::0;;::::1;::::0;;;6396:25:::1;::::0;5156:51:1;;;6396:25:0::1;::::0;5144:2:1;5129:18;6396:25:0::1;;;;;;;6312:111:::0;:::o;262:82::-;320:7;337:5;341:1;337;:5;:::i;13901:335::-;-1:-1:-1;;;;;13994:19:0;;13986:68;;;;-1:-1:-1;;;13986:68:0;;11121:2:1;13986:68:0;;;11103:21:1;11160:2;11140:18;;;11133:30;11199:34;11179:18;;;11172:62;-1:-1:-1;;;11250:18:1;;;11243:34;11294:19;;13986:68:0;10919:400:1;13986:68:0;-1:-1:-1;;;;;14073:21:0;;14065:68;;;;-1:-1:-1;;;14065:68:0;;11526:2:1;14065:68:0;;;11508:21:1;11565:2;11545:18;;;11538:30;11604:34;11584:18;;;11577:62;-1:-1:-1;;;11655:18:1;;;11648:32;11697:19;;14065:68:0;11324:398:1;14065:68:0;-1:-1:-1;;;;;14144:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14196:32;;160:25:1;;;14196:32:0;;133:18:1;14196:32:0;;;;;;;13901:335;;;:::o;17936:780::-;18036:12;:19;;-1:-1:-1;;;;18036:19:0;-1:-1:-1;;;18036:19:0;;;18066:304;;;;18084:22;18109:69;18166:11;;18109:52;18142:18;;18109:28;18119:17;;;;;;;;;-1:-1:-1;;;;;18119:17:0;18109:9;:28::i;:::-;:32;;:52::i;:69::-;18084:94;;18209:6;18192:14;:23;18189:53;;;18226:14;18217:23;;18189:53;18287:17;;18252:22;;18277:28;;-1:-1:-1;;;;;18287:17:0;18277:9;:28::i;:::-;18252:53;;18336:6;18319:14;:23;18316:53;;;18353:14;18344:23;;18316:53;18083:287;;18066:304;18398:15;;:27;;18418:6;18398:19;:27::i;:::-;18380:15;:45;18458:15;18436:19;:37;18508:21;;:37;;18542:1;18508:25;:37::i;:::-;18484:21;:61;18556:39;18565:6;18581:4;18588:6;18556:8;:39::i;:::-;18606:71;18621:6;18637:3;18643:6;18651:5;18658;18665;18672:4;18606:14;:71::i;:::-;-1:-1:-1;;18688:12:0;:20;;-1:-1:-1;;;;18688:20:0;;;-1:-1:-1;17936:780:0:o;14244:594::-;14333:37;14344:6;14352:9;14363:6;14333:10;:37::i;:::-;14381:38;14401:6;14409:9;14381:19;:38::i;:::-;14430:41;14445:6;14453:9;14464:6;14430:14;:41::i;:::-;14483:39;14496:9;14507:6;14515;14483:12;:39::i;:::-;14533:35;14550:6;14558:9;14533:16;:35::i;:::-;14579;14588:6;14596:9;14607:6;14579:8;:35::i;:::-;14625:33;14640:6;14648:9;14625:14;:33::i;:::-;-1:-1:-1;;;;;14713:19:0;;;;;;:11;:19;;;;;;14669:161;;14684:6;;14692:9;;14703:6;;14713:19;;;:45;;-1:-1:-1;;;;;;14736:22:0;;;;;;:11;:22;;;;;;;;14713:45;:57;;;-1:-1:-1;14762:8:0;;;;14713:57;:73;;;-1:-1:-1;14774:12:0;;-1:-1:-1;;;14774:12:0;;;;14713:73;14802:4;;14711:76;;;-1:-1:-1;;;;;14802:4:0;;;14789:17;;;;;;14808:14;;;14802:4;14669:14;:161::i;1563:162::-;1649:7;1695:12;1687:6;;;;1679:29;;;;-1:-1:-1;;;1679:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1717:5:0;;;1563:162::o;350:82::-;408:7;425:5;429:1;425;:5;:::i;438:82::-;496:7;513:5;517:1;513;:5;:::i;526:82::-;584:7;601:5;605:1;601;:5;:::i;30783:158::-;30824:7;30845:15;30862;30881:19;:17;:19::i;:::-;30844:56;;-1:-1:-1;30844:56:0;-1:-1:-1;30918:15:0;30844:56;;30918:15;:::i;:::-;30911:22;;;;30783:158;:::o;27827:444::-;27950:36;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27950:36:0;28011:64;28023:7;28032;28041:6;28049:10;28061:13;28011:11;:64::i;:::-;27999:76;;28169:67;28181:9;28192:7;28201;28210:10;:8;:10::i;:::-;28222:13;28169:11;:67::i;:::-;28149:16;;;28086:150;28133:14;;;28086:150;28106:25;;;28086:150;;;27827:444;;;;;;;;:::o;18724:692::-;18810:12;:19;;-1:-1:-1;;;;18810:19:0;-1:-1:-1;;;18810:19:0;;;18840:259;;;;18851:19;18873:55;18916:11;;18873:38;18899:11;;18873:21;18883:10;;;;;;;;;-1:-1:-1;;;;;18883:10:0;18873:9;:21::i;:55::-;18851:77;;18956:6;18942:11;:20;18939:47;;;18973:11;18964:20;;18939:47;19028:10;;18996:19;;19018:21;;-1:-1:-1;;;;;19028:10:0;19018:9;:21::i;:::-;18996:43;;19068:6;19053:11;:21;19050:48;;19085:11;19076:20;;19050:48;18850:249;;18840:259;19121:9;;:21;;19135:6;19121:13;:21::i;:::-;19109:9;:33;19168:15;19153:12;:30;19212:15;;:31;;19240:1;19212:19;:31::i;:::-;19194:15;:49;19254:39;19263:6;19279:4;19286:6;19254:8;:39::i;:::-;19335:4;;19304:73;;19319:6;;-1:-1:-1;;;;;19335:4:0;19342:6;19335:4;;;;16393:863;16552:28;16583:63;16594:7;16603;16612:6;16620:10;16632:13;16583:10;:63::i;:::-;-1:-1:-1;;;;;16660:19:0;;;;;;:11;:19;;;;;;16552:94;;-1:-1:-1;16660:19:0;;16657:83;;;-1:-1:-1;;;;;16715:15:0;;;;;;:7;:15;;;;;;:23;;16731:7;;16715:23;:::i;:::-;-1:-1:-1;;;;;16697:15:0;;;;;;:7;:15;;;;;:41;16657:83;-1:-1:-1;;;;;16753:22:0;;;;;;:11;:22;;;;;;;;16750:101;;;16832:17;;;;-1:-1:-1;;;;;16813:18:0;;;;;;:7;:18;;;;;;:36;;16832:17;16813:36;:::i;:::-;-1:-1:-1;;;;;16792:18:0;;;;;;:7;:18;;;;;:57;16750:101;16895:9;;-1:-1:-1;;;;;16879:15:0;;16895:9;16879:15;;;:7;:15;;;;;;:25;;16895:9;16879:25;:::i;:::-;-1:-1:-1;;;;;16861:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;16955:17;;;16936:18;;;;;;;;;;:36;;16955:17;16936:36;:::i;:::-;-1:-1:-1;;;;;16915:18:0;;;;;;:7;:18;;;;;;;:57;;;;16995:6;;;17003;;;;16983:42;;16995:6;17011:13;16983:11;:42::i;:::-;17036:30;17047:1;:8;;;17057:1;:8;;;17036:10;:30::i;:::-;17080:17;;;;:30;17077:88;;17134:9;-1:-1:-1;;;;;17117:46:0;17126:6;-1:-1:-1;;;;;17117:46:0;;17145:1;:17;;;17117:46;;;;160:25:1;;148:2;133:18;;14:177;17117:46:0;;;;;;;;17077:88;17178:8;;;;:21;17175:74;;17231:4;-1:-1:-1;;;;;17206:41:0;17215:6;-1:-1:-1;;;;;17206:41:0;;17238:1;:8;;;17206:41;;;;160:25:1;;148:2;133:18;;14:177;17206:41:0;;;;;;;;17175:74;16541:715;16393:863;;;;;;;:::o;14846:355::-;-1:-1:-1;;;;;14950:20:0;;14942:70;;;;-1:-1:-1;;;14942:70:0;;12102:2:1;14942:70:0;;;12084:21:1;12141:2;12121:18;;;12114:30;12180:34;12160:18;;;12153:62;-1:-1:-1;;;12231:18:1;;;12224:35;12276:19;;14942:70:0;11900:401:1;14942:70:0;-1:-1:-1;;;;;15031:23:0;;15023:71;;;;-1:-1:-1;;;15023:71:0;;12508:2:1;15023:71:0;;;12490:21:1;12547:2;12527:18;;;12520:30;12586:34;12566:18;;;12559:62;-1:-1:-1;;;12637:18:1;;;12630:33;12680:19;;15023:71:0;12306:399:1;15023:71:0;15123:17;15133:6;15123:9;:17::i;:::-;15113:6;:27;;15105:88;;;;-1:-1:-1;;;15105:88:0;;12912:2:1;15105:88:0;;;12894:21:1;12951:2;12931:18;;;12924:30;12990:34;12970:18;;;12963:62;-1:-1:-1;;;13041:18:1;;;13034:47;13098:19;;15105:88:0;12710:413:1;15209:206:0;-1:-1:-1;;;;;15302:19:0;;;;;;:11;:19;;;;;;;;15301:20;:47;;;;-1:-1:-1;;;;;;15326:22:0;;;;;;:11;:22;;;;;;;;15325:23;15301:47;15298:110;;;15358:14;;;;15350:56;;;;-1:-1:-1;;;15350:56:0;;13330:2:1;15350:56:0;;;13312:21:1;13369:2;13349:18;;;13342:30;13408:31;13388:18;;;13381:59;13457:18;;15350:56:0;13128:353:1;15427:384:0;-1:-1:-1;;;;;15531:22:0;;;;;;:11;:22;;;;;;;;15530:23;:47;;;;-1:-1:-1;;;;;;15558:19:0;;;;;;:11;:19;;;;;;;;15557:20;15530:47;:77;;;;-1:-1:-1;;;;;;15581:26:0;;15602:4;15581:26;;15530:77;:107;;;;-1:-1:-1;15632:4:0;;-1:-1:-1;;;;;15611:26:0;;;15632:4;;15611:26;;15530:107;:128;;;;-1:-1:-1;15654:4:0;;-1:-1:-1;;;;;15641:17:0;;;15654:4;;15641:17;;15530:128;:163;;;;-1:-1:-1;15675:18:0;;-1:-1:-1;;;;;15662:31:0;;;15675:18;;15662:31;;15530:163;15527:277;;;15752:15;;15741:6;15718:20;15728:9;15718;:20::i;:::-;:29;;;;:::i;:::-;15717:50;;15709:93;;;;-1:-1:-1;;;15709:93:0;;13688:2:1;15709:93:0;;;13670:21:1;13727:2;13707:18;;;13700:30;13766:32;13746:18;;;13739:60;13816:18;;15709:93:0;13486:354:1;16021:193:0;16130:12;;16120:6;:22;;:45;;;-1:-1:-1;;;;;;16146:19:0;;;;;;:11;:19;;;;;;;;16120:45;:64;;;-1:-1:-1;;;;;;16169:15:0;;;;;;:11;:15;;;;;;;;16120:64;16112:94;;;;-1:-1:-1;;;16112:94:0;;14047:2:1;16112:94:0;;;14029:21:1;14086:2;14066:18;;;14059:30;-1:-1:-1;;;14105:18:1;;;14098:47;14162:18;;16112:94:0;13845:341:1;15819:194:0;15916:4;;-1:-1:-1;;;;;15903:17:0;;;15916:4;;15903:17;:41;;;;-1:-1:-1;;;;;;15925:19:0;;;;;;:11;:19;;;;;;;;15924:20;15903:41;:54;;;;-1:-1:-1;15949:8:0;;;;15948:9;15903:54;:71;;;;-1:-1:-1;15962:12:0;;-1:-1:-1;;;15962:12:0;;;;15961:13;15903:71;15900:106;;;15988:9;;:16;;16002:1;15988:13;:16::i;:::-;15976:9;:28;15819:194;;:::o;20099:188::-;20191:41;20206:6;20214:9;20225:6;20191:14;:41::i;:::-;20188:92;;;20234:29;20249:13;;20234:14;:29::i;:::-;20277:1;20265:9;:13;20099:188;;;:::o;17264:664::-;17365:15;17346;;:34;;:47;;;;-1:-1:-1;17385:8:0;;;;17384:9;17346:47;:68;;;;-1:-1:-1;17410:4:0;;-1:-1:-1;;;;;17397:17:0;;;17410:4;;17397:17;17346:68;:92;;;;-1:-1:-1;;;;;;17419:19:0;;;;;;:11;:19;;;;;;;;17418:20;17346:92;:107;;;;-1:-1:-1;17442:11:0;;-1:-1:-1;;;17442:11:0;;;;17346:107;:152;;;;-1:-1:-1;17467:17:0;;17496:1;;17457:28;;-1:-1:-1;;;;;17467:17:0;17457:9;:28::i;:::-;:41;17346:152;:169;;;;-1:-1:-1;17503:12:0;;-1:-1:-1;;;17503:12:0;;;;17502:13;17346:169;17343:312;;;17550:17;;17569;;17531:62;;-1:-1:-1;;;;;17550:17:0;;;17531:18;:62::i;:::-;17633:19;;17613:40;;:15;;:19;:40::i;:::-;17595:15;:58;17343:312;17680:15;17668:8;;:27;;:40;;;;-1:-1:-1;17700:8:0;;;;17699:9;17668:40;:61;;;;-1:-1:-1;17725:4:0;;-1:-1:-1;;;;;17712:17:0;;;17725:4;;17712:17;17668:61;:85;;;;-1:-1:-1;;;;;;17734:19:0;;;;;;:11;:19;;;;;;;;17733:20;17668:85;:93;;;;-1:-1:-1;17757:4:0;;-1:-1:-1;;;17757:4:0;;;;17668:93;:131;;;;-1:-1:-1;17775:10:0;;17797:1;;17765:21;;-1:-1:-1;;;;;17775:10:0;17765:9;:21::i;:::-;:34;17668:131;:148;;;;-1:-1:-1;17804:12:0;;-1:-1:-1;;;17804:12:0;;;;17803:13;17668:148;17665:256;;;17844:10;;17856;;17832:41;;-1:-1:-1;;;;;17844:10:0;;;17832:11;:41::i;:::-;17906:12;;17886:33;;:15;;:19;:33::i;:::-;17875:8;:44;17264:664;;:::o;30949:531::-;31046:7;;31082;;30999;;;;;31100:270;31124:9;:16;31120:20;;31100:270;;;31190:7;31166;:21;31174:9;31184:1;31174:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;31174:12:0;31166:21;;;;;;;;;;;;;:31;;:66;;;31225:7;31201;:21;31209:9;31219:1;31209:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;31209:12:0;31201:21;;;;;;;;;;;;;:31;31166:66;31162:97;;;31242:7;;31251;;31234:25;;;;;;;30949:531;;:::o;31162:97::-;31292:7;:21;31300:9;31310:1;31300:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;31300:12:0;31292:21;;;;;;;;;;;;;31284:29;;:7;:29;:::i;:::-;31274:39;;31346:7;:21;31354:9;31364:1;31354:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;31354:12:0;31346:21;;;;;;;;;;;;;31338:29;;:7;:29;:::i;:::-;31328:39;-1:-1:-1;31142:3:0;;;;:::i;:::-;;;;31100:270;;;;31402:7;;31394;;:15;;;;:::i;:::-;31384:7;:25;31380:56;;;31419:7;;31428;;31411:25;;;;;;30949:531;;:::o;31380:56::-;31455:7;;31464;;-1:-1:-1;30949:531:0;-1:-1:-1;30949:531:0:o;28497:1361::-;28621:28;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28621:28:0;28666:7;28665:8;:26;;;;;28678:13;28677:14;28665:26;:77;;;;28695:29;28705:6;28713:10;28695:9;:29::i;:::-;:47;;;;;28729:13;28728:14;28695:47;28662:146;;;28757:17;;;:27;;;28797:8;;28662:146;28822:6;28821:7;:22;;;;;28833:10;28832:11;28821:22;:40;;;;;28848:13;28847:14;28821:40;28818:311;;;28877:17;28897:41;28926:11;;28897:24;28909:11;;28897:7;:11;;:24;;;;:::i;:41::-;28877:61;;28972:11;;28956:8;:12;;;:27;28953:75;;29015:11;;29002:8;:12;28994:20;;:7;:20;:::i;:::-;:32;;;;:::i;:::-;28985:6;;;:41;28953:75;29067:6;;;;29053:21;;:9;;:13;:21::i;:::-;29042:8;;;:32;29109:17;29117:9;29109:7;:17;:::i;:::-;29089;;;:37;-1:-1:-1;28818:311:0;29142:6;:24;;;;;29153:13;29152:14;29142:24;29139:287;;;29182:17;29202:37;29227:11;;29202:20;29214:7;;29202;:11;;:20;;;;:::i;:37::-;29182:57;;29273:7;;29257:8;:12;;;:23;29254:71;;29312:11;;29299:8;:12;29291:20;;:7;:20;:::i;:::-;:32;;;;:::i;:::-;29282:6;;;:41;29254:71;29364:6;;;;29350:21;;:9;;:13;:21::i;:::-;29339:8;;;:32;29406:17;29414:9;29406:7;:17;:::i;:::-;29386;;;:37;-1:-1:-1;29139:287:0;29439:10;:28;;;;;29454:13;29453:14;29439:28;29436:293;;;29483:17;29503:38;29529:11;;29503:21;29515:8;;29503:7;:11;;:21;;;;:::i;:38::-;29483:58;;29575:8;;29559;:12;;;:24;29556:72;;29615:11;;29602:8;:12;29594:20;;:7;:20;:::i;:::-;:32;;;;:::i;:::-;29585:6;;;:41;29556:72;29667:6;;;;29653:21;;:9;;:13;:21::i;:::-;29642:8;;;:32;29709:17;29717:9;29709:7;:17;:::i;:::-;29689;;;:37;-1:-1:-1;29436:293:0;29742:13;29739:93;;;29771:6;;;:16;;;29802:17;;;:27;;;28497:1361;;;;;;;:::o;29866:705::-;30011:15;;;;30104:19;30112:11;30104:7;:19;:::i;:::-;30094:29;;30138:7;30137:8;:26;;;;;30150:13;30149:14;30137:26;30134:76;;;-1:-1:-1;30186:7:0;;-1:-1:-1;30204:1:0;;-1:-1:-1;30204:1:0;30179:29;;30134:76;30223:13;30220:161;;;30266:11;30259:1;:6;;;:18;;;;:::i;:::-;30252:25;-1:-1:-1;30311:12:0;30252:25;30311:7;:12;:::i;:::-;30292:31;-1:-1:-1;30377:1:0;;-1:-1:-1;30338:41:0;;30220:161;30405:11;30398:1;:6;;;:18;;;;:::i;:::-;30391:25;;30445:11;30436:1;:8;;;:20;;;;:::i;:::-;30427:29;-1:-1:-1;30427:29:0;30486:12;30494:4;30486:7;:12;:::i;:::-;:19;;;;:::i;:::-;30467:38;;29866:705;;;;;;;;;;;:::o;16222:163::-;16320:4;16310:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;16339:13:0;;-1:-1:-1;16335:43:0;;16372:4;16354:11;:15;;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;16222:163:0;;;:::o;27563:256::-;27654:6;27634:11;:17;;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;27696:4:0;27676:26;;;;:11;:26;;;;;;;;27673:97;;;27744:4;27728:22;;;;:7;:22;;;;;:30;;27752:6;;27728:22;:30;;27752:6;;27728:30;:::i;:::-;;;;-1:-1:-1;;27673:97:0;27796:4;27780:22;;;;:7;:22;;;;;:31;;27805:6;;27780:22;:31;;27805:6;;27780:31;:::i;:::-;;;;-1:-1:-1;;;;27563:256:0:o;19661:430::-;19759:4;19776:13;19802:15;;19792:6;:25;;19776:41;;19828:19;19878:13;;19850:24;19868:4;19850:9;:24::i;:::-;19910:8;;19850:41;-1:-1:-1;19850:41:0;;-1:-1:-1;19910:8:0;;19909:9;:24;;;;-1:-1:-1;19922:11:0;;;;;;;19909:24;:36;;;;;19937:8;19909:36;:60;;;;-1:-1:-1;;;;;;19950:19:0;;;;;;:11;:19;;;;;;;;19949:20;19909:60;:78;;;;-1:-1:-1;19973:14:0;;;;19909:78;:112;;;;-1:-1:-1;20017:4:0;;-1:-1:-1;;;;;20004:17:0;;;20017:4;;20004:17;19909:112;:139;;;;;20038:10;;20025:9;;:23;;19909:139;:157;;;;;20052:14;19909:157;:174;;;;-1:-1:-1;20071:12:0;;-1:-1:-1;;;20071:12:0;;;;20070:13;19909:174;19902:181;19661:430;-1:-1:-1;;;;;;19661:430:0:o;20295:1113::-;12883:8;:15;;-1:-1:-1;;12883:15:0;12894:4;12883:15;;;;;;20389:8:::1;::::0;12883;;20388:24:::1;::::0;20410:1:::1;::::0;20388:17:::1;::::0;20389:8;20388:14:::1;:17::i;:24::-;20365:47;;20426:8;;20438:1;20426:13:::0;20423:91:::1;;20479:18:::0;;20456;;:56:::1;::::0;20510:1:::1;::::0;20456:49:::1;::::0;20503:1:::1;::::0;20456:42:::1;::::0;:22:::1;:42::i;:::-;:46:::0;::::1;:49::i;:56::-;20441:71;;20423:91;20568:18:::0;;20524:32:::1;::::0;20589:12;;20559:27:::1;::::0;:6;:27:::1;:::i;:::-;:42;;;;:::i;:::-;20524:77:::0;-1:-1:-1;20612:14:0::1;20629:33;20524:77:::0;20629:6;:33:::1;:::i;:::-;20612:50:::0;-1:-1:-1;20698:21:0::1;20730:24;20612:50:::0;20730:16:::1;:24::i;:::-;20765:20;20788:38;20812:14:::0;20788:21:::1;:38;:::i;:::-;20889:18:::0;;20765:61;;-1:-1:-1;20837:19:0::1;::::0;20874:33:::1;::::0;:12;:33:::1;:::i;:::-;20858:50;::::0;:12;:50:::1;:::i;:::-;20965:18:::0;;20837:71;;-1:-1:-1;20919:29:0::1;::::0;20951:32:::1;::::0;20837:71;20951:32:::1;:::i;:::-;20919:64:::0;-1:-1:-1;20997:25:0;;20994:108:::1;;21038:61;21051:24;21077:21;21038:12;:61::i;:::-;21161:18:::0;;21112:23:::1;::::0;21138:42:::1;::::0;:18:::1;:11:::0;21154:1:::1;21138:15;:18::i;:42::-;21112:68:::0;-1:-1:-1;21194:19:0;;21191:80:::1;;21223:18;::::0;21215:53:::1;::::0;-1:-1:-1;;;;;21223:18:0;;::::1;::::0;21215:53;::::1;;;::::0;21252:15;;21223:18:::1;21215:53:::0;21223:18;21215:53;21252:15;21223:18;21215:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21191:80;21299:21;21334:20:::0;;21331:70:::1;;21364:16;::::0;21356:43:::1;::::0;-1:-1:-1;;;;;21364:16:0;;::::1;::::0;21356:43;::::1;;;::::0;21391:7;;21364:16:::1;21356:43:::0;21364:16;21356:43;21391:7;21364:16;21356:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21331:70;-1:-1:-1::0;;12903:8:0;:16;;-1:-1:-1;;12903:16:0;;;-1:-1:-1;;;;;;;;20295:1113:0:o;28279:210::-;28351:4;28376:6;:22;;;;-1:-1:-1;28386:7:0;;:12;28376:22;28375:57;;;;28404:10;:27;;;;-1:-1:-1;28418:8:0;;:13;28404:27;28375:105;;;;28438:6;28437:7;:22;;;;;28449:10;28448:11;28437:22;:42;;;;-1:-1:-1;;28463:11:0;;:16;;28279:210;-1:-1:-1;;28279:210:0:o;21767:434::-;21857:16;;;21871:1;21857:16;;;;;;;;21833:21;;21857:16;;;;;;;;;;-1:-1:-1;21857:16:0;21833:40;;21902:4;21884;21889:1;21884:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21884:23:0;;;:7;;;;;;;;;;:23;;;;21928:6;;:13;;;-1:-1:-1;;;21928:13:0;;;;:6;;;;;:11;;:13;;;;;21884:7;;21928:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21918:4;21923:1;21918:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21918:23:0;;;:7;;;;;;;;;:23;21984:6;;21952:53;;21969:4;;21984:6;21993:11;21952:8;:53::i;:::-;22016:6;;:177;;-1:-1:-1;;;22016:177:0;;-1:-1:-1;;;;;22016:6:0;;;;:57;;:177;;22088:11;;22016:6;;22130:4;;22157;;22177:15;;22016:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21416:343;21529:6;;21497:53;;21514:4;;-1:-1:-1;;;;;21529:6:0;21538:11;21497:8;:53::i;:::-;21561:6;;21702:18;;21561:190;;-1:-1:-1;;;21561:190:0;;21624:4;21561:190;;;15905:34:1;15955:18;;;15948:34;;;21561:6:0;15998:18:1;;;15991:34;;;16041:18;;;16034:34;-1:-1:-1;;;;;21702:18:0;;;16084:19:1;;;16077:44;21735:15:0;16137:19:1;;;16130:35;21561:6:0;;;:22;;21591:9;;15839:19:1;;21561:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;196:131:1:-;-1:-1:-1;;;;;271:31:1;;261:42;;251:70;;317:1;314;307:12;332:247;391:6;444:2;432:9;423:7;419:23;415:32;412:52;;;460:1;457;450:12;412:52;499:9;486:23;518:31;543:5;518:31;:::i;584:548::-;696:4;725:2;754;743:9;736:21;786:6;780:13;829:6;824:2;813:9;809:18;802:34;854:1;864:140;878:6;875:1;872:13;864:140;;;973:14;;;969:23;;963:30;939:17;;;958:2;935:26;928:66;893:10;;864:140;;;868:3;1053:1;1048:2;1039:6;1028:9;1024:22;1020:31;1013:42;1123:2;1116;1112:7;1107:2;1099:6;1095:15;1091:29;1080:9;1076:45;1072:54;1064:62;;;;584:548;;;;:::o;1137:315::-;1205:6;1213;1266:2;1254:9;1245:7;1241:23;1237:32;1234:52;;;1282:1;1279;1272:12;1234:52;1321:9;1308:23;1340:31;1365:5;1340:31;:::i;:::-;1390:5;1442:2;1427:18;;;;1414:32;;-1:-1:-1;;;1137:315:1:o;1649:180::-;1708:6;1761:2;1749:9;1740:7;1736:23;1732:32;1729:52;;;1777:1;1774;1767:12;1729:52;-1:-1:-1;1800:23:1;;1649:180;-1:-1:-1;1649:180:1:o;1834:456::-;1911:6;1919;1927;1980:2;1968:9;1959:7;1955:23;1951:32;1948:52;;;1996:1;1993;1986:12;1948:52;2035:9;2022:23;2054:31;2079:5;2054:31;:::i;:::-;2104:5;-1:-1:-1;2161:2:1;2146:18;;2133:32;2174:33;2133:32;2174:33;:::i;:::-;1834:456;;2226:7;;-1:-1:-1;;;2280:2:1;2265:18;;;;2252:32;;1834:456::o;2295:248::-;2363:6;2371;2424:2;2412:9;2403:7;2399:23;2395:32;2392:52;;;2440:1;2437;2430:12;2392:52;-1:-1:-1;;2463:23:1;;;2533:2;2518:18;;;2505:32;;-1:-1:-1;2295:248:1:o;2737:118::-;2823:5;2816:13;2809:21;2802:5;2799:32;2789:60;;2845:1;2842;2835:12;2860:309;2925:6;2933;2986:2;2974:9;2965:7;2961:23;2957:32;2954:52;;;3002:1;2999;2992:12;2954:52;3038:9;3025:23;3015:33;;3098:2;3087:9;3083:18;3070:32;3111:28;3133:5;3111:28;:::i;:::-;3158:5;3148:15;;;2860:309;;;;;:::o;3174:382::-;3239:6;3247;3300:2;3288:9;3279:7;3275:23;3271:32;3268:52;;;3316:1;3313;3306:12;3268:52;3355:9;3342:23;3374:28;3396:5;3374:28;:::i;:::-;3421:5;-1:-1:-1;3478:2:1;3463:18;;3450:32;3491:33;3450:32;3491:33;:::i;3561:523::-;3665:6;3673;3681;3689;3697;3705;3758:3;3746:9;3737:7;3733:23;3729:33;3726:53;;;3775:1;3772;3765:12;3726:53;-1:-1:-1;;3798:23:1;;;3868:2;3853:18;;3840:32;;-1:-1:-1;3919:2:1;3904:18;;3891:32;;3970:2;3955:18;;3942:32;;-1:-1:-1;4021:3:1;4006:19;;3993:33;;-1:-1:-1;4073:3:1;4058:19;4045:33;;-1:-1:-1;3561:523:1;-1:-1:-1;3561:523:1:o;4089:382::-;4154:6;4162;4215:2;4203:9;4194:7;4190:23;4186:32;4183:52;;;4231:1;4228;4221:12;4183:52;4270:9;4257:23;4289:31;4314:5;4289:31;:::i;:::-;4339:5;-1:-1:-1;4396:2:1;4381:18;;4368:32;4409:30;4368:32;4409:30;:::i;4476:529::-;4553:6;4561;4569;4622:2;4610:9;4601:7;4597:23;4593:32;4590:52;;;4638:1;4635;4628:12;4590:52;4677:9;4664:23;4696:31;4721:5;4696:31;:::i;:::-;4746:5;-1:-1:-1;4803:2:1;4788:18;;4775:32;4816:33;4775:32;4816:33;:::i;:::-;4868:7;-1:-1:-1;4927:2:1;4912:18;;4899:32;4940:33;4899:32;4940:33;:::i;:::-;4992:7;4982:17;;;4476:529;;;;;:::o;5218:388::-;5286:6;5294;5347:2;5335:9;5326:7;5322:23;5318:32;5315:52;;;5363:1;5360;5353:12;5315:52;5402:9;5389:23;5421:31;5446:5;5421:31;:::i;5611:309::-;5676:6;5684;5737:2;5725:9;5716:7;5712:23;5708:32;5705:52;;;5753:1;5750;5743:12;5705:52;5792:9;5779:23;5811:28;5833:5;5811:28;:::i;5925:316::-;6002:6;6010;6018;6071:2;6059:9;6050:7;6046:23;6042:32;6039:52;;;6087:1;6084;6077:12;6039:52;-1:-1:-1;;6110:23:1;;;6180:2;6165:18;;6152:32;;-1:-1:-1;6231:2:1;6216:18;;;6203:32;;5925:316;-1:-1:-1;5925:316:1:o;6729:329::-;6931:2;6913:21;;;6970:1;6950:18;;;6943:29;-1:-1:-1;;;7003:2:1;6988:18;;6981:36;7049:2;7034:18;;6729:329::o;7415:127::-;7476:10;7471:3;7467:20;7464:1;7457:31;7507:4;7504:1;7497:15;7531:4;7528:1;7521:15;7547:127;7608:10;7603:3;7599:20;7596:1;7589:31;7639:4;7636:1;7629:15;7663:4;7660:1;7653:15;7679:128;7746:9;;;7767:11;;;7764:37;;;7781:18;;:::i;7812:127::-;7873:10;7868:3;7864:20;7861:1;7854:31;7904:4;7901:1;7894:15;7928:4;7925:1;7918:15;7944:135;7983:3;8004:17;;;8001:43;;8024:18;;:::i;:::-;-1:-1:-1;8071:1:1;8060:13;;7944:135::o;8851:217::-;8891:1;8917;8907:132;;8961:10;8956:3;8952:20;8949:1;8942:31;8996:4;8993:1;8986:15;9024:4;9021:1;9014:15;8907:132;-1:-1:-1;9053:9:1;;8851:217::o;9073:125::-;9138:9;;;9159:10;;;9156:36;;;9172:18;;:::i;9985:184::-;10055:6;10108:2;10096:9;10087:7;10083:23;10079:32;10076:52;;;10124:1;10121;10114:12;10076:52;-1:-1:-1;10147:16:1;;9985:184;-1:-1:-1;9985:184:1:o;10453:245::-;10520:6;10573:2;10561:9;10552:7;10548:23;10544:32;10541:52;;;10589:1;10586;10579:12;10541:52;10621:9;10615:16;10640:28;10662:5;10640:28;:::i;11727:168::-;11800:9;;;11831;;11848:15;;;11842:22;;11828:37;11818:71;;11869:18;;:::i;14323:251::-;14393:6;14446:2;14434:9;14425:7;14421:23;14417:32;14414:52;;;14462:1;14459;14452:12;14414:52;14494:9;14488:16;14513:31;14538:5;14513:31;:::i;14579:980::-;14841:4;14889:3;14878:9;14874:19;14920:6;14909:9;14902:25;14946:2;14984:6;14979:2;14968:9;14964:18;14957:34;15027:3;15022:2;15011:9;15007:18;15000:31;15051:6;15086;15080:13;15117:6;15109;15102:22;15155:3;15144:9;15140:19;15133:26;;15194:2;15186:6;15182:15;15168:29;;15215:1;15225:195;15239:6;15236:1;15233:13;15225:195;;;15304:13;;-1:-1:-1;;;;;15300:39:1;15288:52;;15395:15;;;;15360:12;;;;15336:1;15254:9;15225:195;;;-1:-1:-1;;;;;;;15476:32:1;;;;15471:2;15456:18;;15449:60;-1:-1:-1;;;15540:3:1;15525:19;15518:35;15437:3;14579:980;-1:-1:-1;;;14579:980:1:o;16176:306::-;16264:6;16272;16280;16333:2;16321:9;16312:7;16308:23;16304:32;16301:52;;;16349:1;16346;16339:12;16301:52;16378:9;16372:16;16362:26;;16428:2;16417:9;16413:18;16407:25;16397:35;;16472:2;16461:9;16457:18;16451:25;16441:35;;16176:306;;;;;:::o

Swarm Source

ipfs://4e93d712a7ab2c1616b82191dec4b19c86570ee0285f131067269220dfdb80c1

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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