Contract 0x862597a92b98CDb4fa2247e911ac205B5C35CCdd

 

Contract Overview

KlandestinoSwap: KL Token
Balance:
0 BNB

BNB Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xad97159049c9311a52bf503bc63d38cc25fd91f93c0e32e13d0a39b7be204ae9Approve118571972021-10-17 17:39:0211 hrs 52 mins ago0xf79b419cd9de7a732c00aaeb4d9bf8cb5436b188 IN  KlandestinoSwap: KL Token0 BNB0.000226145
0x68d4268e0b806b5a55596f6037ccdf65059d38bdb309ea477480728de12db22aTransfer117928152021-10-15 11:42:372 days 17 hrs ago0x8d266e2fc8421638389a1b01c3d299569751289c IN  KlandestinoSwap: KL Token0 BNB0.000126035
0x3c20b6f3e4e973f141a0555be00242d637e5c1afd1b62afcc4090afd394e8619Approve116001062021-10-08 17:29:379 days 12 hrs ago0xf79b419cd9de7a732c00aaeb4d9bf8cb5436b188 IN  KlandestinoSwap: KL Token0 BNB0.000226145
0x2972af9222040bbc88b95be99c8d339d2e04c916ca188026455392695c9fc28dTransfer115732932021-10-07 19:07:4810 days 10 hrs ago0x8d266e2fc8421638389a1b01c3d299569751289c IN  KlandestinoSwap: KL Token0 BNB0.000126035
0x224af297ed2f3b20ea3ddf528eaa74aeb0ac7ad4b1cbbceadfefac7e9030918dApprove115353702021-10-06 11:28:5811 days 18 hrs ago0xe3f70cbf1ed477a54522987ce5459b2da6a73bd9 IN  KlandestinoSwap: KL Token0 BNB0.000226145
0xf28607ce8ce9fe318a0dedfbb59c48757ab20371b3b188bf9db8e18ef652d5b8Transfer115353362021-10-06 11:27:1611 days 18 hrs ago0x48716ad3f92b7c98eaf63caa539cd8f6943579af IN  KlandestinoSwap: KL Token0 BNB0.000201035
0x26a8ddc9b7f0c928f6cd40c41bc44f2c225f9c24dc6ac39f096fee75080c2eb8Transfer115353202021-10-06 11:26:2811 days 18 hrs ago0x8d266e2fc8421638389a1b01c3d299569751289c IN  KlandestinoSwap: KL Token0 BNB0.000126035
0x7b503909a1e1608675d0311cd420751368f65861928756add08b4701ed370420Transfer115302742021-10-06 7:13:5611 days 22 hrs ago0x48716ad3f92b7c98eaf63caa539cd8f6943579af IN  KlandestinoSwap: KL Token0 BNB0.000275915
0xa23eb568e3f0995ff5dd9d6bbcf44dfdde7d0b9917c0e4e31a4bac7b7e1090a0Transfer115302042021-10-06 7:10:2611 days 22 hrs ago0x48716ad3f92b7c98eaf63caa539cd8f6943579af IN  KlandestinoSwap: KL Token0 BNB0.000275915
0x0b37cc8146c08050e2bd15f636cdf679afc646f4241b3edd8a28926ae21e392eTransfer115301212021-10-06 7:06:1711 days 22 hrs ago0x48716ad3f92b7c98eaf63caa539cd8f6943579af IN  KlandestinoSwap: KL Token0 BNB0.000275915
0xe360b9d71b7f62976e7d57d9375795ab15fda4d1eb1f5ca0a4acb0587b458fc2Transfer115300522021-10-06 7:02:5011 days 22 hrs ago0x48716ad3f92b7c98eaf63caa539cd8f6943579af IN  KlandestinoSwap: KL Token0 BNB0.000275855
0x033eb9fc7e34a21ae34db62df114b00f3d93ccdfdba7ce3c472078255c7e0bfcTransfer115300262021-10-06 7:01:3211 days 22 hrs ago0x48716ad3f92b7c98eaf63caa539cd8f6943579af IN  KlandestinoSwap: KL Token0 BNB0.000275915
0x0c8ca8698d97299dbf1a7e44074953f284fed89bf42f18d1f1d78dffb0cf651aTransfer115300042021-10-06 7:00:2611 days 22 hrs ago0x48716ad3f92b7c98eaf63caa539cd8f6943579af IN  KlandestinoSwap: KL Token0 BNB0.000275855
0xd8cd2357e304dc9b5a84a5ea9da4eaed20e36df286631ddd4705aa18ddd3fe34Transfer115299722021-10-06 6:58:5011 days 22 hrs ago0x48716ad3f92b7c98eaf63caa539cd8f6943579af IN  KlandestinoSwap: KL Token0 BNB0.000275915
0x2731065e511f79ec1fe36d053476dcf8563e87ee9064d266ef555c3c50c7bd43Transfer115299492021-10-06 6:57:4111 days 22 hrs ago0x48716ad3f92b7c98eaf63caa539cd8f6943579af IN  KlandestinoSwap: KL Token0 BNB0.000275855
0x73a814e02b06d1f2e336622804a690f1190ff39284611d0a0a35c491e86b0797Transfer115299242021-10-06 6:56:2611 days 22 hrs ago0x48716ad3f92b7c98eaf63caa539cd8f6943579af IN  KlandestinoSwap: KL Token0 BNB0.000275855
0x19a8e093a4a2da29a35068d94026bacdbf18abbaa93ebc8ccb4d06709cac06bfTransfer115299012021-10-06 6:55:1711 days 22 hrs ago0x48716ad3f92b7c98eaf63caa539cd8f6943579af IN  KlandestinoSwap: KL Token0 BNB0.000275855
0xf7da529541397082f929df9a3de162b20e0374a2ff628cd0f1aa3574c698baf9Transfer115298812021-10-06 6:54:1711 days 22 hrs ago0x48716ad3f92b7c98eaf63caa539cd8f6943579af IN  KlandestinoSwap: KL Token0 BNB0.000275795
0x03b38d71e09e7229dd6edb7164d8e6940364db482a167c902b24955208b20ab6Transfer115298522021-10-06 6:52:5011 days 22 hrs ago0x48716ad3f92b7c98eaf63caa539cd8f6943579af IN  KlandestinoSwap: KL Token0 BNB0.000275855
0x315cd8daf3630da76136d15d4858823093c7f228a64f3a9a00c1c2de1974f455Transfer115298212021-10-06 6:51:1711 days 22 hrs ago0x48716ad3f92b7c98eaf63caa539cd8f6943579af IN  KlandestinoSwap: KL Token0 BNB0.000275915
0x07d1c7e18f2d421efc2f31c558151b03e759500a680fa6779a08bf213e75d542Approve114233502021-10-02 13:49:5415 days 15 hrs ago0xbf725a271eb64b502063bd9ff72b53abe15edca8 IN  KlandestinoSwap: KL Token0 BNB0.00090458
0x040602d504a0329c933888bbaba90b3f5e884b9a04239ecb1842b05b08ff5d0eTransfer113887822021-10-01 8:38:1516 days 20 hrs agoKlandestinoSwap: Deployer IN  KlandestinoSwap: KL Token0 BNB0.000275915
0xbf67e786ec121d1ae95dfc45a495a1915a836308c001af4b523e8ee3c24a2016Approve112843932021-09-27 16:45:5820 days 12 hrs ago0x2488b595db0e6f31aab3186f21dcbb27cf451d8c IN  KlandestinoSwap: KL Token0 BNB0.000226145
0xe56fff4556e44c92ab7c1b3cb30b6c1864d6c17f1067c27122b4f2e993397d4aTransfer112803662021-09-27 13:24:2520 days 16 hrs ago0x1e3138bde8d6971d32bf51ee15739c014e485f82 IN  KlandestinoSwap: KL Token0 BNB0.000200915
0x3f599747360991d567d9d5410ecf5a119f0d88e2c0a0d7f027aed8c07f2856f7Approve112345142021-09-25 22:49:0922 days 6 hrs ago0x63bb872b4878324d5767767ede3f74717d9256c8 IN  KlandestinoSwap: KL Token0 BNB0.000226145
[ Download CSV Export 

OVERVIEW

Klandestino Swap is a decentralized exchange that runs by the BSC, this protocol creates a Token exchange, Klan token farming, stake, bonus, loans, votes, NFT.

Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Klandestino

Compiler Version
v0.6.2+commit.bacdbe57

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-05-26
*/

pragma solidity 0.6.2;

// From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol
// Subject to the MIT license.

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting with custom message on overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, errorMessage);

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on underflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot underflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction underflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot underflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, errorMessage);

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers.
     * Reverts on division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers.
     * Reverts with custom message on division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract Klandestino  {
    
    using SafeMath for uint;
    
    /// @notice EIP-20 token name for this token
    string public constant name = "KLAN";

    /// @notice EIP-20 token symbol for this token
    string public constant symbol = "KL";

    /// @notice EIP-20 token decimals for this token
    uint8 public constant decimals = 18;

    /// @notice Total number of tokens in circulation
    uint public totalSupply = 30000000e18; // 300 million KLAN
    
    uint public circulation = totalSupply.mul(90).div(100);
    
    uint public bonus = totalSupply.mul(5).div(100);
    
    uint public reserve = totalSupply.mul(5).div(100);
    
    uint public BNB_KLAN = 1e18;

    /// @notice Address which may mint new tokens
    address public minter;
    
    address public owner;

    /// @notice The timestamp after which minting may occur
    uint public mintingAllowedAfter;

    /// @notice Minimum time between mints
    uint32 public constant minimumTimeBetweenMints = 1 days * 365;

    /// @notice Cap on the percentage of totalSupply that can be minted at each mint
    uint8 public constant mintCap = 2;

    /// @notice Allowance amounts on behalf of others
    mapping (address => mapping (address => uint96)) internal allowances;

    /// @notice Official record of token balances for each account
    mapping (address => uint96) internal balances;

    /// @notice A record of each accounts delegate
    mapping (address => address) public delegates;
    
    mapping (address => bool) public authentication;

    /// @notice A checkpoint for marking number of votes from a given block
    struct Checkpoint {
        uint32 fromBlock;
        uint96 votes;
    }

    /// @notice A record of votes checkpoints for each account, by index
    mapping (address => mapping (uint32 => Checkpoint)) public checkpoints;

    /// @notice The number of checkpoints for each account
    mapping (address => uint32) public numCheckpoints;

    /// @notice The EIP-712 typehash for the contract's domain
    bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");

    /// @notice The EIP-712 typehash for the delegation struct used by the contract
    bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");

    /// @notice The EIP-712 typehash for the permit struct used by the contract
    bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");

    /// @notice A record of states for signing / validating signatures
    mapping (address => uint) public nonces;

    /// @notice An event thats emitted when the minter address is changed
    event MinterChanged(address minter, address newMinter);

    /// @notice An event thats emitted when an account changes its delegate
    event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);

    /// @notice An event thats emitted when a delegate account's vote balance changes
    event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);

    /// @notice The standard EIP-20 transfer event
    event Transfer(address indexed from, address indexed to, uint256 amount);

    /// @notice The standard EIP-20 approval event
    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /**
     * @notice Construct a new KLAN token
     * @param _owner The initial account to grant all the tokens
     * @param minter_ The account with minting ability
     * @param mintingAllowedAfter_ The timestamp after which minting may occur
     */
    constructor(address _owner, address minter_, uint mintingAllowedAfter_) public {
        require(mintingAllowedAfter_ >= block.timestamp, "KLAN::constructor: minting can only begin after deployment");
        
        owner = _owner;
        
        balances[_owner] = uint96(circulation);
        balances[address(this)] += uint96(bonus);
        balances[address(this)] += uint96(reserve);
        
        emit Transfer(address(0), _owner, circulation);
        emit Transfer(address(0), address(this), bonus);
        emit Transfer(address(0), address(this), reserve);
        
        minter = minter_;
        emit MinterChanged(address(0), minter);
        mintingAllowedAfter = mintingAllowedAfter_;
        authenticate( owner, true);
    }
    
    modifier onlyMinters(){
        require((msg.sender == minter) || (authentication[msg.sender]), "onlyMinters:: authenticated users can only mint.");
        _;
    }
    
    
    /**
     * @notice Claim bonus rewards
     * @param _receiveAddress The address of the airDrop contract
     * @return boolean 
     */
    function claimBonusRewards( address _receiveAddress, uint96 _amount) public returns (bool){
        require(_receiveAddress != address(0), "claimBonusRewards :: must not be a zero address");
        require(bonus >= _amount, "claimBonusRewards :: must not be zero");
        require(msg.sender == owner, "claimBonusRewards :: owner can only claim rewards for air drop address.");
        
        _transferTokens(address(this), _receiveAddress, _amount);
        bonus = bonus.sub(_amount);
        emit Transfer(address(this), _receiveAddress, _amount);
        return true;
    }
    
    /**
     * @notice Claim reserve rewards
     * @param _reserve The address of the airDrop contract
     * @return boolean 
     */
    function claimReserve( address _reserve, uint96 _amount) public returns (bool){
        require(_reserve != address(0), "claimReserve :: must not be a zero address");
        require(reserve >= _amount, "claimReserve :: must not be zero");
        require(msg.sender == owner, "claimReserve :: owner can only claim rewards for reserve address.");
        
        _transferTokens(address(this), _reserve, uint96(_amount));
        reserve = reserve.sub(_amount);
        emit Transfer(address(this), _reserve, _amount);
        return true;
    }
    
    /**
     * @notice authenticate wallet to mint tokens
     * @param _authenticate The address of the stake contract
     * @param _status boolean to activate and deactivate wallet authentication
     * @return boolean 
     */
    function authenticate( address _authenticate, bool _status) public returns (bool){
        require(authentication[_authenticate] != _status, "authentication :: is already authenticated ");
        require(msg.sender == owner, "setAuthentication :: owner should authenticate");
        
        authentication[_authenticate] = _status;
        return true;
    }
    

    /**
     * @notice Change the minter address
     * @param minter_ The address of the new minter
     */
    function setMinter(address minter_) external {
        require(msg.sender == owner, "KLAN::setMinter: only the minter can change the minter address");
        emit MinterChanged(minter, minter_);
        minter = minter_;
    }

    /**
     * @notice Mint new tokens
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to be minted
     */
    function mint(address dst, uint rawAmount) external onlyMinters {
        require(block.timestamp >= mintingAllowedAfter, "KLAN::mint: minting not allowed yet");
        require(dst != address(0), "KLAN::mint: cannot transfer to the zero address");

        // record the mint
        mintingAllowedAfter = SafeMath.add(block.timestamp, minimumTimeBetweenMints);

        // mint the amount
        uint96 amount = safe96(rawAmount, "KLAN::mint: amount exceeds 96 bits");
        require(amount <= SafeMath.div(SafeMath.mul(totalSupply, mintCap), 100), "KLAN::mint: exceeded mint cap");
        totalSupply = safe96(SafeMath.add(totalSupply, amount), "KLAN::mint: totalSupply exceeds 96 bits");

        // transfer the amount to the recipient
        balances[dst] = add96(balances[dst], amount, "KLAN::mint: transfer amount overflows");
        emit Transfer(address(0), dst, amount);

        // move delegates
        _moveDelegates(address(0), delegates[dst], amount);
    }

    /**
     * @notice Get the number of tokens `spender` is approved to spend on behalf of `account`
     * @param account The address of the account holding the funds
     * @param spender The address of the account spending the funds
     * @return The number of tokens approved
     */
    function allowance(address account, address spender) external view returns (uint) {
        return allowances[account][spender];
    }

    /**
     * @notice Approve `spender` to transfer up to `amount` from `src`
     * @dev This will overwrite the approval amount for `spender`
     *  and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)
     * @param spender The address of the account which may transfer tokens
     * @param rawAmount The number of tokens that are approved (2^256-1 means infinite)
     * @return Whether or not the approval succeeded
     */
    function approve(address spender, uint rawAmount) external returns (bool) {
        uint96 amount;
        if (rawAmount == uint(-1)) {
            amount = uint96(-1);
        } else {
            amount = safe96(rawAmount, "KLAN::approve: amount exceeds 96 bits");
        }

        allowances[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);
        return true;
    }

    /**
     * @notice Triggers an approval from owner to spends
     * @param _owner The address to approve from
     * @param spender The address to be approved
     * @param rawAmount The number of tokens that are approved (2^256-1 means infinite)
     * @param deadline The time at which to expire the signature
     * @param v The recovery byte of the signature
     * @param r Half of the ECDSA signature pair
     * @param s Half of the ECDSA signature pair
     */
    function permit(address _owner, address spender, uint rawAmount, uint deadline, uint8 v, bytes32 r, bytes32 s) external {
        uint96 amount;
        if (rawAmount == uint(-1)) {
            amount = uint96(-1);
        } else {
            amount = safe96(rawAmount, "KLAN::permit: amount exceeds 96 bits");
        }

        bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
        bytes32 structHash = keccak256(abi.encode(PERMIT_TYPEHASH, _owner, spender, rawAmount, nonces[_owner]++, deadline));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "KLAN::permit: invalid signature");
        require(signatory == _owner, "KLAN::permit: unauthorized");
        require(now <= deadline, "KLAN::permit: signature expired");

        allowances[_owner][spender] = amount;

        emit Approval(_owner, spender, amount);
    }

    /**
     * @notice Get the number of tokens held by the `account`
     * @param account The address of the account to get the balance of
     * @return The number of tokens held
     */
    function balanceOf(address account) external view returns (uint) {
        return balances[account];
    }

    /**
     * @notice Transfer `amount` tokens from `msg.sender` to `dst`
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transfer(address dst, uint rawAmount) external returns (bool) {
        uint96 amount = safe96(rawAmount, "KLAN::transfer: amount exceeds 96 bits");
        _transferTokens(msg.sender, dst, amount);
        return true;
    }

    /**
     * @notice Transfer `amount` tokens from `src` to `dst`
     * @param src The address of the source account
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transferFrom(address src, address dst, uint rawAmount) external returns (bool) {
        address spender = msg.sender;
        uint96 spenderAllowance = allowances[src][spender];
        uint96 amount = safe96(rawAmount, "KLAN::approve: amount exceeds 96 bits");

        if (spender != src && spenderAllowance != uint96(-1)) {
            uint96 newAllowance = sub96(spenderAllowance, amount, "KLAN::transferFrom: transfer amount exceeds spender allowance");
            allowances[src][spender] = newAllowance;

            emit Approval(src, spender, newAllowance);
        }

        _transferTokens(src, dst, amount);
        return true;
    }

    /**
     * @notice Delegate votes from `msg.sender` to `delegatee`
     * @param delegatee The address to delegate votes to
     */
    function delegate(address delegatee) public {
        return _delegate(msg.sender, delegatee);
    }

    /**
     * @notice Delegates votes from signatory to `delegatee`
     * @param delegatee The address to delegate votes to
     * @param nonce The contract state required to match the signature
     * @param expiry The time at which to expire the signature
     * @param v The recovery byte of the signature
     * @param r Half of the ECDSA signature pair
     * @param s Half of the ECDSA signature pair
     */
    function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public {
        bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
        bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "KLAN::delegateBySig: invalid signature");
        require(nonce == nonces[signatory]++, "KLAN::delegateBySig: invalid nonce");
        require(now <= expiry, "KLAN::delegateBySig: signature expired");
        return _delegate(signatory, delegatee);
    }

    /**
     * @notice Gets the current votes balance for `account`
     * @param account The address to get votes balance
     * @return The number of current votes for `account`
     */
    function getCurrentVotes(address account) external view returns (uint96) {
        uint32 nCheckpoints = numCheckpoints[account];
        return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;
    }

    /**
     * @notice Determine the prior number of votes for an account as of a block number
     * @dev Block number must be a finalized block or else this function will revert to prevent misinformation.
     * @param account The address of the account to check
     * @param blockNumber The block number to get the vote balance at
     * @return The number of votes the account had as of the given block
     */
    function getPriorVotes(address account, uint blockNumber) public view returns (uint96) {
        require(blockNumber < block.number, "KLAN::getPriorVotes: not yet determined");

        uint32 nCheckpoints = numCheckpoints[account];
        if (nCheckpoints == 0) {
            return 0;
        }

        // First check most recent balance
        if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {
            return checkpoints[account][nCheckpoints - 1].votes;
        }

        // Next check implicit zero balance
        if (checkpoints[account][0].fromBlock > blockNumber) {
            return 0;
        }

        uint32 lower = 0;
        uint32 upper = nCheckpoints - 1;
        while (upper > lower) {
            uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow
            Checkpoint memory cp = checkpoints[account][center];
            if (cp.fromBlock == blockNumber) {
                return cp.votes;
            } else if (cp.fromBlock < blockNumber) {
                lower = center;
            } else {
                upper = center - 1;
            }
        }
        return checkpoints[account][lower].votes;
    }

    function _delegate(address delegator, address delegatee) internal {
        address currentDelegate = delegates[delegator];
        uint96 delegatorBalance = balances[delegator];
        delegates[delegator] = delegatee;

        emit DelegateChanged(delegator, currentDelegate, delegatee);

        _moveDelegates(currentDelegate, delegatee, delegatorBalance);
    }

    function _transferTokens(address src, address dst, uint96 amount) internal {
        require(src != address(0), "KLAN::_transferTokens: cannot transfer from the zero address");
        require(dst != address(0), "KLAN::_transferTokens: cannot transfer to the zero address");

        balances[src] = sub96(balances[src], amount, "KLAN::_transferTokens: transfer amount exceeds balance");
        balances[dst] = add96(balances[dst], amount, "KLAN::_transferTokens: transfer amount overflows");
        emit Transfer(src, dst, amount);

        _moveDelegates(delegates[src], delegates[dst], amount);
    }

    function _moveDelegates(address srcRep, address dstRep, uint96 amount) internal {
        if (srcRep != dstRep && amount > 0) {
            if (srcRep != address(0)) {
                uint32 srcRepNum = numCheckpoints[srcRep];
                uint96 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;
                uint96 srcRepNew = sub96(srcRepOld, amount, "KLAN::_moveVotes: vote amount underflows");
                _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
            }

            if (dstRep != address(0)) {
                uint32 dstRepNum = numCheckpoints[dstRep];
                uint96 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;
                uint96 dstRepNew = add96(dstRepOld, amount, "KLAN::_moveVotes: vote amount overflows");
                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
            }
        }
    }

    function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint96 oldVotes, uint96 newVotes) internal {
      uint32 blockNumber = safe32(block.number, "KLAN::_writeCheckpoint: block number exceeds 32 bits");

      if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) {
          checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;
      } else {
          checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes);
          numCheckpoints[delegatee] = nCheckpoints + 1;
      }

      emit DelegateVotesChanged(delegatee, oldVotes, newVotes);
    }

    function safe32(uint n, string memory errorMessage) internal pure returns (uint32) {
        require(n < 2**32, errorMessage);
        return uint32(n);
    }

    function safe96(uint n, string memory errorMessage) internal pure returns (uint96) {
        require(n < 2**96, errorMessage);
        return uint96(n);
    }

    function add96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {
        uint96 c = a + b;
        require(c >= a, errorMessage);
        return c;
    }

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

    function getChainId() internal pure returns (uint) {
        uint256 chainId;
        assembly { chainId := chainid() }
        return chainId;
    }
    
    function isContract(address account) internal view returns (bool) {
        uint32 size;
        assembly {
                size := extcodesize(account)
            }
        if(size != 0)
            return true;
            
        return false;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"minter_","type":"address"},{"internalType":"uint256","name":"mintingAllowedAfter_","type":"uint256"}],"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":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"address","name":"newMinter","type":"address"}],"name":"MinterChanged","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BNB_KLAN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_authenticate","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"authenticate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authentication","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint96","name":"votes","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiveAddress","type":"address"},{"internalType":"uint96","name":"_amount","type":"uint96"}],"name":"claimBonusRewards","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_reserve","type":"address"},{"internalType":"uint96","name":"_amount","type":"uint96"}],"name":"claimReserve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTimeBetweenMints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintCap","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintingAllowedAfter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter_","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040526a18d0bf423c03d8de0000006000556200004a606462000036605a600054620002ad60201b62001f051790919060201c565b6200031460201b62001f5e1790919060201c565b600155620000706064620000366005600054620002ad60201b62001f051790919060201c565b600255620000966064620000366005600054620002ad60201b62001f051790919060201c565b600355670de0b6b3a7640000600455348015620000b257600080fd5b50604051620031843803806200318483398181016040526060811015620000d857600080fd5b5080516020820151604090920151909190428110156200012a5760405162461bcd60e51b815260040180806020018281038252603a8152602001806200312a603a913960400191505060405180910390fd5b600680546001600160a01b0319166001600160a01b03851690811790915560018054600083815260096020908152604080832080546001600160601b03199081166001600160601b0396871617909155600254308552828520805480841690881690920187169190911780825560035492811690871690920190951617909355925482519081529151909260008051602062003164833981519152928290030190a360025460408051918252513091600091600080516020620031648339815191529181900360200190a360035460408051918252513091600091600080516020620031648339815191529181900360200190a3600580546001600160a01b0319166001600160a01b038481169190911791829055604080516000815292909116602083015280517f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f69281900390910190a16007819055600654620002a3906001600160a01b031660016001600160e01b036200035e16565b50505050620004df565b600082620002be575060006200030e565b82820282848281620002cc57fe5b04146200030b5760405162461bcd60e51b8152600401808060200182810382526021815260200180620031096021913960400191505060405180910390fd5b90505b92915050565b60006200030b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200043860201b60201c565b6001600160a01b0382166000908152600b602052604081205460ff1615158215151415620003be5760405162461bcd60e51b815260040180806020018281038252602b815260200180620030b0602b913960400191505060405180910390fd5b6006546001600160a01b03163314620004095760405162461bcd60e51b815260040180806020018281038252602e815260200180620030db602e913960400191505060405180910390fd5b506001600160a01b0382166000908152600b60205260409020805482151560ff19909116179055600192915050565b60008183620004c85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200048c57818101518382015260200162000472565b50505050905090810190601f168015620004ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581620004d557fe5b0495945050505050565b612bc180620004ef6000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c806376c71ca111610125578063c3cda520116100ad578063e7a324dc1161007c578063e7a324dc14610690578063ef8929bd14610698578063f1127ed8146106be578063f646fb7a14610718578063fca3b5aa1461074d5761021c565b8063c3cda520146105c2578063cd3293de14610609578063d505accf14610611578063dd62ed3e146106625761021c565b80638da5cb5b116100f45780638da5cb5b146105325780638fbd94461461053a57806395d89b4114610568578063a9059cbb14610570578063b4b5ea571461059c5761021c565b806376c71ca11461048757806376fab7351461048f578063782d6fe1146104c45780637ecebe001461050c5761021c565b806340c10f19116101a85780635c19a95c116101775780635c19a95c146104055780635fdf60fb1461042b5780636fcfff451461043357806370a082311461045957806375b4d78c1461047f5761021c565b806340c10f19146103885780635049a64f146103b6578063587cde1e146103be5780635c11d62f146103e45761021c565b806320606b70116101ef57806320606b701461031c57806323b872dd1461032457806330adf81f1461035a57806330b36cef14610362578063313ce5671461036a5761021c565b806306fdde0314610221578063075461721461029e578063095ea7b3146102c257806318160ddd14610302575b600080fd5b610229610773565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026357818101518382015260200161024b565b50505050905090810190601f1680156102905780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102a6610793565b604080516001600160a01b039092168252519081900360200190f35b6102ee600480360360408110156102d857600080fd5b506001600160a01b0381351690602001356107a2565b604080519115158252519081900360200190f35b61030a610860565b60408051918252519081900360200190f35b61030a610866565b6102ee6004803603606081101561033a57600080fd5b506001600160a01b03813581169160208101359091169060400135610881565b61030a6109c6565b61030a6109e1565b6103726109e7565b6040805160ff9092168252519081900360200190f35b6103b46004803603604081101561039e57600080fd5b506001600160a01b0381351690602001356109ec565b005b61030a610c91565b6102a6600480360360208110156103d457600080fd5b50356001600160a01b0316610c97565b6103ec610cb2565b6040805163ffffffff9092168252519081900360200190f35b6103b46004803603602081101561041b57600080fd5b50356001600160a01b0316610cba565b61030a610cc7565b6103ec6004803603602081101561044957600080fd5b50356001600160a01b0316610ccd565b61030a6004803603602081101561046f57600080fd5b50356001600160a01b0316610ce5565b61030a610d09565b610372610d0f565b6102ee600480360360408110156104a557600080fd5b5080356001600160a01b031690602001356001600160601b0316610d14565b6104f0600480360360408110156104da57600080fd5b506001600160a01b038135169060200135610e58565b604080516001600160601b039092168252519081900360200190f35b61030a6004803603602081101561052257600080fd5b50356001600160a01b0316611085565b6102a6611097565b6102ee6004803603604081101561055057600080fd5b506001600160a01b03813516906020013515156110a6565b61022961117c565b6102ee6004803603604081101561058657600080fd5b506001600160a01b03813516906020013561119a565b6104f0600480360360208110156105b257600080fd5b50356001600160a01b03166111d6565b6103b4600480360360c08110156105d857600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a00135611247565b61030a6114ec565b6103b4600480360360e081101561062757600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356114f2565b61030a6004803603604081101561067857600080fd5b506001600160a01b0381358116916020013516611930565b61030a611964565b6102ee600480360360208110156106ae57600080fd5b50356001600160a01b031661197f565b6106f0600480360360408110156106d457600080fd5b5080356001600160a01b0316906020013563ffffffff16611994565b6040805163ffffffff90931683526001600160601b0390911660208301528051918290030190f35b6102ee6004803603604081101561072e57600080fd5b5080356001600160a01b031690602001356001600160601b03166119c9565b6103b46004803603602081101561076357600080fd5b50356001600160a01b0316611b23565b6040518060400160405280600481526020016325a620a760e11b81525081565b6005546001600160a01b031681565b6000806000198314156107b857506000196107dd565b6107da8360405180606001604052806025815260200161299f60259139611bd6565b90505b3360008181526008602090815260408083206001600160a01b0389168085529083529281902080546001600160601b0319166001600160601b038716908117909155815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a360019150505b92915050565b60005481565b60405180604361280282396043019050604051809103902081565b6001600160a01b03831660009081526008602090815260408083203380855290835281842054825160608101909352602580845291936001600160601b039091169285926108d9928892919061299f90830139611bd6565b9050866001600160a01b0316836001600160a01b03161415801561090657506001600160601b0382811614155b156109ae57600061093083836040518060600160405280603d815260200161254f603d9139611c70565b6001600160a01b038981166000818152600860209081526040808320948a168084529482529182902080546001600160601b0319166001600160601b03871690811790915582519081529151949550929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92592918290030190a3505b6109b9878783611cdd565b5060019695505050505050565b6040518060526127b082396052019050604051809103902081565b60075481565b601281565b6005546001600160a01b0316331480610a145750336000908152600b602052604090205460ff165b610a4f5760405162461bcd60e51b815260040180806020018281038252603081526020018061275b6030913960400191505060405180910390fd5b600754421015610a905760405162461bcd60e51b81526004018080602001828103825260238152602001806126cb6023913960400191505060405180910390fd5b6001600160a01b038216610ad55760405162461bcd60e51b815260040180806020018281038252602f815260200180612970602f913960400191505060405180910390fd5b610ae3426301e13380611eab565b6007819055506000610b0d826040518060600160405280602281526020016126ee60229139611bd6565b9050610b29610b22600054600260ff16611f05565b6064611f5e565b816001600160601b03161115610b86576040805162461bcd60e51b815260206004820152601d60248201527f4b4c414e3a3a6d696e743a206578636565646564206d696e7420636170000000604482015290519081900360640190fd5b610bbc610b9e600054836001600160601b0316611eab565b60405180606001604052806027815260200161273460279139611bd6565b6001600160601b0390811660009081556001600160a01b038516815260096020908152604091829020548251606081019093526025808452610c0e949190911692859290919061278b90830139611fa0565b6001600160a01b038416600081815260096020908152604080832080546001600160601b0319166001600160601b039687161790558051948616855251929391926000805160206129508339815191529281900390910190a36001600160a01b038084166000908152600a6020526040812054610c8c92168361200a565b505050565b60045481565b600a602052600090815260409020546001600160a01b031681565b6301e1338081565b610cc4338261219c565b50565b60015481565b600d6020526000908152604090205463ffffffff1681565b6001600160a01b03166000908152600960205260409020546001600160601b031690565b60025481565b600281565b60006001600160a01b038316610d5b5760405162461bcd60e51b815260040180806020018281038252602f8152602001806128fa602f913960400191505060405180910390fd5b816001600160601b03166002541015610da55760405162461bcd60e51b81526004018080602001828103825260258152602001806126a66025913960400191505060405180910390fd5b6006546001600160a01b03163314610dee5760405162461bcd60e51b8152600401808060200182810382526047815260200180612a006047913960600191505060405180910390fd5b610df9308484611cdd565b600254610e15906001600160601b03841663ffffffff61222616565b600255604080516001600160601b038416815290516001600160a01b0385169130916000805160206129508339815191529181900360200190a350600192915050565b6000438210610e985760405162461bcd60e51b81526004018080602001828103825260278152602001806129296027913960400191505060405180910390fd5b6001600160a01b0383166000908152600d602052604090205463ffffffff1680610ec657600091505061085a565b6001600160a01b0384166000908152600c6020908152604080832063ffffffff600019860181168552925290912054168310610f42576001600160a01b0384166000908152600c602090815260408083206000199490940163ffffffff1683529290522054600160201b90046001600160601b0316905061085a565b6001600160a01b0384166000908152600c6020908152604080832083805290915290205463ffffffff16831015610f7d57600091505061085a565b600060001982015b8163ffffffff168163ffffffff16111561104057600282820363ffffffff16048103610faf612537565b506001600160a01b0387166000908152600c6020908152604080832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b0316918101919091529087141561101b5760200151945061085a9350505050565b805163ffffffff1687111561103257819350611039565b6001820392505b5050610f85565b506001600160a01b0385166000908152600c6020908152604080832063ffffffff909416835292905220546001600160601b03600160201b9091041691505092915050565b600e6020526000908152604090205481565b6006546001600160a01b031681565b6001600160a01b0382166000908152600b602052604081205460ff16151582151514156111045760405162461bcd60e51b815260040180806020018281038252602b81526020018061258c602b913960400191505060405180910390fd5b6006546001600160a01b0316331461114d5760405162461bcd60e51b815260040180806020018281038252602e8152602001806125ed602e913960400191505060405180910390fd5b506001600160a01b0382166000908152600b60205260409020805482151560ff19909116179055600192915050565b6040518060400160405280600281526020016112d360f21b81525081565b6000806111bf836040518060600160405280602681526020016128d460269139611bd6565b90506111cc338583611cdd565b5060019392505050565b6001600160a01b0381166000908152600d602052604081205463ffffffff1680611201576000611240565b6001600160a01b0383166000908152600c60209081526040808320600019850163ffffffff168452909152902054600160201b90046001600160601b03165b9392505050565b600060405180806128026043913960408051918290036043018220828201909152600482526325a620a760e11b60209092019190915290507f5ddb320cce2444b9108ea7eeb56fa901f827188c38ac21724a38a7d75d9e24b46112a8612268565b3060405160200180858152602001848152602001838152602001826001600160a01b03166001600160a01b0316815260200194505050505060405160208183030381529060405280519060200120905060006040518080612a9e603a91396040805191829003603a0182206020808401919091526001600160a01b038c1683830152606083018b905260808084018b90528251808503909101815260a08401835280519082012061190160f01b60c085015260c2840187905260e2808501829052835180860390910181526101028501808552815191840191909120600091829052610122860180865281905260ff8c1661014287015261016286018b905261018286018a9052935191965092945091926001926101a28083019392601f198301929081900390910190855afa1580156113e6573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166114385760405162461bcd60e51b8152600401808060200182810382526026815260200180612b166026913960400191505060405180910390fd5b6001600160a01b0381166000908152600e6020526040902080546001810190915589146114965760405162461bcd60e51b815260040180806020018281038252602281526020018061261b6022913960400191505060405180910390fd5b874211156114d55760405162461bcd60e51b8152600401808060200182810382526026815260200180612b666026913960400191505060405180910390fd5b6114df818b61219c565b505050505b505050505050565b60035481565b6000600019861415611507575060001961152c565b6115298660405180606001604052806024815260200161271060249139611bd6565b90505b600060405180806128026043913960408051918290036043018220828201909152600482526325a620a760e11b60209092019190915290507f5ddb320cce2444b9108ea7eeb56fa901f827188c38ac21724a38a7d75d9e24b461158d612268565b3060405160200180858152602001848152602001838152602001826001600160a01b03166001600160a01b03168152602001945050505050604051602081830303815290604052805190602001209050600060405180806127b060529139605201905060405180910390208a8a8a600e60008f6001600160a01b03166001600160a01b031681526020019081526020016000206000815480929190600101919050558b60405160200180878152602001866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001848152602001838152602001828152602001965050505050505060405160208183030381529060405280519060200120905060008282604051602001808061190160f01b81525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018289898960405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561173e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166117a6576040805162461bcd60e51b815260206004820152601f60248201527f4b4c414e3a3a7065726d69743a20696e76616c6964207369676e617475726500604482015290519081900360640190fd5b8b6001600160a01b0316816001600160a01b03161461180c576040805162461bcd60e51b815260206004820152601a60248201527f4b4c414e3a3a7065726d69743a20756e617574686f72697a6564000000000000604482015290519081900360640190fd5b88421115611861576040805162461bcd60e51b815260206004820152601f60248201527f4b4c414e3a3a7065726d69743a207369676e6174757265206578706972656400604482015290519081900360640190fd5b84600860008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160601b0302191690836001600160601b031602179055508a6001600160a01b03168c6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258760405180826001600160601b0316815260200191505060405180910390a3505050505050505050505050565b6001600160a01b0391821660009081526008602090815260408083209390941682529190915220546001600160601b031690565b60405180603a612a9e8239603a019050604051809103902081565b600b6020526000908152604090205460ff1681565b600c60209081526000928352604080842090915290825290205463ffffffff811690600160201b90046001600160601b031682565b60006001600160a01b038316611a105760405162461bcd60e51b815260040180806020018281038252602a815260200180612b3c602a913960400191505060405180910390fd5b816001600160601b03166003541015611a70576040805162461bcd60e51b815260206004820181905260248201527f636c61696d52657365727665203a3a206d757374206e6f74206265207a65726f604482015290519081900360640190fd5b6006546001600160a01b03163314611ab95760405162461bcd60e51b815260040180806020018281038252604181526020018061263d6041913960600191505060405180910390fd5b611ac4308484611cdd565b600354611ae0906001600160601b03841663ffffffff61222616565b600355604080516001600160601b038416815290516001600160a01b0385169130916000805160206129508339815191529181900360200190a350600192915050565b6006546001600160a01b03163314611b6c5760405162461bcd60e51b815260040180806020018281038252603e815260200180612ad8603e913960400191505060405180910390fd5b600554604080516001600160a01b039283168152918316602083015280517f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f69281900390910190a1600580546001600160a01b0319166001600160a01b0392909216919091179055565b600081600160601b8410611c685760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611c2d578181015183820152602001611c15565b50505050905090810190601f168015611c5a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b509192915050565b6000836001600160601b0316836001600160601b031611158290611cd55760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611c2d578181015183820152602001611c15565b505050900390565b6001600160a01b038316611d225760405162461bcd60e51b815260040180806020018281038252603c8152602001806129c4603c913960400191505060405180910390fd5b6001600160a01b038216611d675760405162461bcd60e51b815260040180806020018281038252603a815260200180612866603a913960400191505060405180910390fd5b6001600160a01b038316600090815260096020908152604091829020548251606081019093526036808452611db2936001600160601b0390921692859291906125b790830139611c70565b6001600160a01b03848116600090815260096020908152604080832080546001600160601b0319166001600160601b03968716179055928616825290829020548251606081019093526030808452611e1a9491909116928592909190612a4790830139611fa0565b6001600160a01b0383811660008181526009602090815260409182902080546001600160601b0319166001600160601b03968716179055815194861685529051919392871692600080516020612950833981519152929081900390910190a36001600160a01b038084166000908152600a6020526040808220548584168352912054610c8c9291821691168361200a565b600082820183811015611240576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600082611f145750600061085a565b82820282848281611f2157fe5b04146112405760405162461bcd60e51b81526004018080602001828103825260218152602001806128456021913960400191505060405180910390fd5b600061124083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061226c565b6000838301826001600160601b0380871690831610156120015760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611c2d578181015183820152602001611c15565b50949350505050565b816001600160a01b0316836001600160a01b03161415801561203557506000816001600160601b0316115b15610c8c576001600160a01b038316156120ed576001600160a01b0383166000908152600d602052604081205463ffffffff1690816120755760006120b4565b6001600160a01b0385166000908152600c60209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b905060006120db828560405180606001604052806028815260200161267e60289139611c70565b90506120e9868484846122d1565b5050505b6001600160a01b03821615610c8c576001600160a01b0382166000908152600d602052604081205463ffffffff169081612128576000612167565b6001600160a01b0384166000908152600c60209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b9050600061218e8285604051806060016040528060278152602001612a7760279139611fa0565b90506114e4858484846122d1565b6001600160a01b038083166000818152600a6020818152604080842080546009845282862054949093528787166001600160a01b031984168117909155905191909516946001600160601b039092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461222082848361200a565b50505050565b600061124083836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250612490565b4690565b600081836122bb5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611c2d578181015183820152602001611c15565b5060008385816122c757fe5b0495945050505050565b60006122f5436040518060600160405280603481526020016128a0603491396124e2565b905060008463ffffffff1611801561233e57506001600160a01b0385166000908152600c6020908152604080832063ffffffff6000198901811685529252909120548282169116145b1561239d576001600160a01b0385166000908152600c60209081526040808320600019880163ffffffff168452909152902080546fffffffffffffffffffffffff000000001916600160201b6001600160601b0385160217905561243c565b60408051808201825263ffffffff80841682526001600160601b0380861660208085019182526001600160a01b038b166000818152600c83528781208c871682528352878120965187549451909516600160201b026fffffffffffffffffffffffff000000001995871663ffffffff19958616179590951694909417909555938252600d90935292909220805460018801909316929091169190911790555b604080516001600160601b0380861682528416602082015281516001600160a01b038816927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724928290030190a25050505050565b60008184841115611cd55760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611c2d578181015183820152602001611c15565b600081600160201b8410611c685760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611c2d578181015183820152602001611c15565b60408051808201909152600080825260208201529056fe4b4c414e3a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e636561757468656e7469636174696f6e203a3a20697320616c72656164792061757468656e74696361746564204b4c414e3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e636573657441757468656e7469636174696f6e203a3a206f776e65722073686f756c642061757468656e7469636174654b4c414e3a3a64656c656761746542795369673a20696e76616c6964206e6f6e6365636c61696d52657365727665203a3a206f776e65722063616e206f6e6c7920636c61696d207265776172647320666f72207265736572766520616464726573732e4b4c414e3a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773636c61696d426f6e757352657761726473203a3a206d757374206e6f74206265207a65726f4b4c414e3a3a6d696e743a206d696e74696e67206e6f7420616c6c6f776564207965744b4c414e3a3a6d696e743a20616d6f756e74206578636565647320393620626974734b4c414e3a3a7065726d69743a20616d6f756e74206578636565647320393620626974734b4c414e3a3a6d696e743a20746f74616c537570706c79206578636565647320393620626974736f6e6c794d696e746572733a3a2061757468656e746963617465642075736572732063616e206f6e6c79206d696e742e4b4c414e3a3a6d696e743a207472616e7366657220616d6f756e74206f766572666c6f77735065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774b4c414e3a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f20616464726573734b4c414e3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974734b4c414e3a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473636c61696d426f6e757352657761726473203a3a206d757374206e6f742062652061207a65726f20616464726573734b4c414e3a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef4b4c414e3a3a6d696e743a2063616e6e6f74207472616e7366657220746f20746865207a65726f20616464726573734b4c414e3a3a617070726f76653a20616d6f756e74206578636565647320393620626974734b4c414e3a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e736665722066726f6d20746865207a65726f2061646472657373636c61696d426f6e757352657761726473203a3a206f776e65722063616e206f6e6c7920636c61696d207265776172647320666f72206169722064726f7020616464726573732e4b4c414e3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f77734b4c414e3a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f777344656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206e6f6e63652c75696e7432353620657870697279294b4c414e3a3a7365744d696e7465723a206f6e6c7920746865206d696e7465722063616e206368616e676520746865206d696e74657220616464726573734b4c414e3a3a64656c656761746542795369673a20696e76616c6964207369676e6174757265636c61696d52657365727665203a3a206d757374206e6f742062652061207a65726f20616464726573734b4c414e3a3a64656c656761746542795369673a207369676e61747572652065787069726564a264697066735822122055183a2c5f085e6a2b88a4514658db9abea9851ff2abb5b39a6d1595ca3835c064736f6c6343000602003361757468656e7469636174696f6e203a3a20697320616c72656164792061757468656e746963617465642073657441757468656e7469636174696f6e203a3a206f776e65722073686f756c642061757468656e746963617465536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774b4c414e3a3a636f6e7374727563746f723a206d696e74696e672063616e206f6e6c7920626567696e206166746572206465706c6f796d656e74ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000000000000000000000313917847b381aa97a22b0b2badeca81b71d23cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b7772c

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

000000000000000000000000313917847b381aa97a22b0b2badeca81b71d23cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b7772c

-----Decoded View---------------
Arg [0] : _owner (address): 0x313917847b381aa97a22b0b2badeca81b71d23cf
Arg [1] : minter_ (address): 0x0000000000000000000000000000000000000000
Arg [2] : mintingAllowedAfter_ (uint256): 1622636332

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000313917847b381aa97a22b0b2badeca81b71d23cf
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 0000000000000000000000000000000000000000000000000000000060b7772c


Deployed ByteCode Sourcemap

6598:20343:0:-:0;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6598:20343:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6719:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6719:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7360:21;;;:::i;:::-;;;;-1:-1:-1;;;;;7360:21:0;;;;;;;;;;;;;;15896:419;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15896:419:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;7014:37;;;:::i;:::-;;;;;;;;;;;;;;;;8682:122;;;:::i;18989:672::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18989:672:0;;;;;;;;;;;;;;;;;:::i;9105:137::-;;;:::i;7484:31::-;;;:::i;6915:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13981:997;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13981:997:0;;;;;;;;:::i;:::-;;7273:27;;;:::i;8072:45::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8072:45:0;-1:-1:-1;;;;;8072:45:0;;:::i;7568:61::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19809:102;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19809:102:0;-1:-1:-1;;;;;19809:102:0;;:::i;7084:54::-;;;:::i;8560:49::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8560:49:0;-1:-1:-1;;;;;8560:49:0;;:::i;18069:108::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18069:108:0;-1:-1:-1;;;;;18069:108:0;;:::i;7151:47::-;;;:::i;7724:33::-;;;:::i;11534:590::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11534:590:0;;-1:-1:-1;;;;;11534:590:0;;;;;-1:-1:-1;;;;;11534:590:0;;:::i;21988:1218::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;21988:1218:0;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;21988:1218:0;;;;;;;;;;;;;;9323:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9323:39:0;-1:-1:-1;;;;;9323:39:0;;:::i;7394:20::-;;;:::i;13081:367::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13081:367:0;;;;;;;;;;:::i;6816:36::-;;;:::i;18441:238::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18441:238:0;;;;;;;;:::i;21335:222::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21335:222:0;-1:-1:-1;;;;;21335:222:0;;:::i;20345:789::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;20345:789:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7211:49::-;;;:::i;16806:1060::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;16806:1060:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15282:136::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15282:136:0;;;;;;;;;;:::i;8898:117::-;;;:::i;8130:47::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8130:47:0;-1:-1:-1;;;;;8130:47:0;;:::i;8421:70::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8421:70:0;;-1:-1:-1;;;;;8421:70:0;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;8421:70:0;;;;;;;;;;;;;;;;12277:555;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12277:555:0;;-1:-1:-1;;;;;12277:555:0;;;;;-1:-1:-1;;;;;12277:555:0;;:::i;13575:231::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13575:231:0;-1:-1:-1;;;;;13575:231:0;;:::i;6719:36::-;;;;;;;;;;;;;;-1:-1:-1;;;6719:36:0;;;;:::o;7360:21::-;;;-1:-1:-1;;;;;7360:21:0;;:::o;15896:419::-;15964:4;15981:13;-1:-1:-1;;16009:9:0;:21;16005:173;;;-1:-1:-1;;;16005:173:0;;;16108:58;16115:9;16108:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;16099:67;;16005:173;16201:10;16190:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;16190:31:0;;;;;;;;;;;;:40;;-1:-1:-1;;;;;;16190:40:0;-1:-1:-1;;;;;16190:40:0;;;;;;;;16248:37;;;;;;;16190:31;;16201:10;16248:37;;;;;;;;;;;16303:4;16296:11;;;15896:419;;;;;:::o;7014:37::-;;;;:::o;8682:122::-;8724:80;;;;;;;;;;;;;;;;;;8682:122;:::o;18989:672::-;-1:-1:-1;;;;;19153:15:0;;19071:4;19153:15;;;:10;:15;;;;;;;;19106:10;19153:24;;;;;;;;;;19204:58;;;;;;;;;;;;19106:10;;-1:-1:-1;;;;;19153:24:0;;;;19071:4;;19204:58;;19211:9;;19204:58;;;;;;;:6;:58::i;:::-;19188:74;;19290:3;-1:-1:-1;;;;;19279:14:0;:7;-1:-1:-1;;;;;19279:14:0;;;:48;;;;-1:-1:-1;;;;;;19297:30:0;;;;;19279:48;19275:311;;;19344:19;19366:96;19372:16;19390:6;19366:96;;;;;;;;;;;;;;;;;:5;:96::i;:::-;-1:-1:-1;;;;;19477:15:0;;;;;;;:10;:15;;;;;;;;:24;;;;;;;;;;;;;:39;;-1:-1:-1;;;;;;19477:39:0;-1:-1:-1;;;;;19477:39:0;;;;;;;;19538:36;;;;;;;19477:39;;-1:-1:-1;19477:24:0;;:15;;19538:36;;;;;;;;;19275:311;;19598:33;19614:3;19619;19624:6;19598:15;:33::i;:::-;-1:-1:-1;19649:4:0;;18989:672;-1:-1:-1;;;;;;18989:672:0:o;9105:137::-;9147:95;;;;;;;;;;;;;;;;;;9105:137;:::o;7484:31::-;;;;:::o;6915:35::-;6948:2;6915:35;:::o;13981:997::-;11258:6;;-1:-1:-1;;;;;11258:6:0;11244:10;:20;;11243:54;;-1:-1:-1;11285:10:0;11270:26;;;;:14;:26;;;;;;;;11243:54;11235:115;;;;-1:-1:-1;;;11235:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14083:19:::1;;14064:15;:38;;14056:86;;;;-1:-1:-1::0;;;14056:86:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;14161:17:0;::::1;14153:77;;;;-1:-1:-1::0;;;14153:77:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14293:54;14306:15;7617:12;14293;:54::i;:::-;14271:19;:76;;;;14388:13;14404:55;14411:9;14404:55;;;;;;;;;;;;;;;;;:6;:55::i;:::-;14388:71;;14488:53;14501:34;14514:11;;7756:1;14501:34;;:12;:34::i;:::-;14537:3;14488:12;:53::i;:::-;14478:6;-1:-1:-1::0;;;;;14478:63:0::1;;;14470:105;;;::::0;;-1:-1:-1;;;14470:105:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;14600:84;14607:33;14620:11;;14633:6;-1:-1:-1::0;;;;;14607:33:0::1;:12;:33::i;:::-;14600:84;;;;;;;;;;;;;;;;;:6;:84::i;:::-;-1:-1:-1::0;;;;;14586:98:0;;::::1;:11;:98:::0;;;-1:-1:-1;;;;;14768:13:0;::::1;::::0;;:8:::1;:13;::::0;;;;;;;;;14762:69;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;14768:13;;;::::1;::::0;14783:6;;14762:69;;;::::1;::::0;;::::1;;:5;:69::i;:::-;-1:-1:-1::0;;;;;14746:13:0;::::1;;::::0;;;:8:::1;:13;::::0;;;;;;;:85;;-1:-1:-1;;;;;;14746:85:0::1;-1:-1:-1::0;;;;;14746:85:0;;::::1;;::::0;;14847:33;;;;::::1;::::0;;;14746:13;;;;-1:-1:-1;;;;;;;;;;;14847:33:0;;;;;;;;::::1;-1:-1:-1::0;;;;;14947:14:0;;::::1;14943:1;14947:14:::0;;;:9:::1;:14;::::0;;;;;14920:50:::1;::::0;14947:14:::1;14963:6:::0;14920:14:::1;:50::i;:::-;11361:1;13981:997:::0;;:::o;7273:27::-;;;;:::o;8072:45::-;;;;;;;;;;;;-1:-1:-1;;;;;8072:45:0;;:::o;7568:61::-;7617:12;7568:61;:::o;19809:102::-;19871:32;19881:10;19893:9;19871;:32::i;:::-;19809:102;:::o;7084:54::-;;;;:::o;8560:49::-;;;;;;;;;;;;;;;:::o;18069:108::-;-1:-1:-1;;;;;18152:17:0;18128:4;18152:17;;;:8;:17;;;;;;-1:-1:-1;;;;;18152:17:0;;18069:108::o;7151:47::-;;;;:::o;7724:33::-;7756:1;7724:33;:::o;11534:590::-;11619:4;-1:-1:-1;;;;;11643:29:0;;11635:89;;;;-1:-1:-1;;;11635:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11752:7;-1:-1:-1;;;;;11743:16:0;:5;;:16;;11735:66;;;;-1:-1:-1;;;11735:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11834:5;;-1:-1:-1;;;;;11834:5:0;11820:10;:19;11812:103;;;;-1:-1:-1;;;11812:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11936:56;11960:4;11967:15;11984:7;11936:15;:56::i;:::-;12011:5;;:18;;-1:-1:-1;;;;;12011:18:0;;;:9;:18;:::i;:::-;12003:5;:26;12045:49;;;-1:-1:-1;;;;;12045:49:0;;;;;;-1:-1:-1;;;;;12045:49:0;;;12062:4;;-1:-1:-1;;;;;;;;;;;12045:49:0;;;;;;;;-1:-1:-1;12112:4:0;11534:590;;;;:::o;21988:1218::-;22067:6;22108:12;22094:11;:26;22086:78;;;;-1:-1:-1;;;22086:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22199:23:0;;22177:19;22199:23;;;:14;:23;;;;;;;;22237:17;22233:58;;22278:1;22271:8;;;;;22233:58;-1:-1:-1;;;;;22351:20:0;;;;;;:11;:20;;;;;;;;:38;-1:-1:-1;;22372:16:0;;22351:38;;;;;;;;;:48;;:63;-1:-1:-1;22347:147:0;;-1:-1:-1;;;;;22438:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;22459:16:0;;;;22438:38;;;;;;;;:44;-1:-1:-1;;;22438:44:0;;-1:-1:-1;;;;;22438:44:0;;-1:-1:-1;22431:51:0;;22347:147;-1:-1:-1;;;;;22555:20:0;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;22551:88:0;;;22626:1;22619:8;;;;;22551:88;22651:12;-1:-1:-1;;22693:16:0;;22720:428;22735:5;22727:13;;:5;:13;;;22720:428;;;22799:1;22782:13;;;22781:19;;;22773:27;;22842:20;;:::i;:::-;-1:-1:-1;;;;;;22865:20:0;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;22842:51;;;;;;;;;;;;;;;-1:-1:-1;;;22842:51:0;;;-1:-1:-1;;;;;22842:51:0;;;;;;;;;22912:27;;22908:229;;;22967:8;;;;-1:-1:-1;22960:15:0;;-1:-1:-1;;;;22960:15:0;22908:229;23001:12;;:26;;;-1:-1:-1;22997:140:0;;;23056:6;23048:14;;22997:140;;;23120:1;23111:6;:10;23103:18;;22997:140;22720:428;;;;;-1:-1:-1;;;;;;23165:20:0;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;-1:-1:-1;;;;;;;;23165:33:0;;;;;-1:-1:-1;;21988:1218:0;;;;:::o;9323:39::-;;;;;;;;;;;;;:::o;7394:20::-;;;-1:-1:-1;;;;;7394:20:0;;:::o;13081:367::-;-1:-1:-1;;;;;13181:29:0;;13157:4;13181:29;;;:14;:29;;;;;;;;:40;;;;;;;13173:96;;;;-1:-1:-1;;;13173:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13302:5;;-1:-1:-1;;;;;13302:5:0;13288:10;:19;13280:78;;;;-1:-1:-1;;;13280:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13379:29:0;;;;;;:14;:29;;;;;:39;;;;;-1:-1:-1;;13379:39:0;;;;;;;13081:367;;;;:::o;6816:36::-;;;;;;;;;;;;;;-1:-1:-1;;;6816:36:0;;;;:::o;18441:238::-;18506:4;18523:13;18539:59;18546:9;18539:59;;;;;;;;;;;;;;;;;:6;:59::i;:::-;18523:75;;18609:40;18625:10;18637:3;18642:6;18609:15;:40::i;:::-;-1:-1:-1;18667:4:0;;18441:238;-1:-1:-1;;;18441:238:0:o;21335:222::-;-1:-1:-1;;;;;21441:23:0;;21400:6;21441:23;;;:14;:23;;;;;;;;21482:16;:67;;21548:1;21482:67;;;-1:-1:-1;;;;;21501:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;21522:16:0;;21501:38;;;;;;;;;:44;-1:-1:-1;;;21501:44:0;;-1:-1:-1;;;;;21501:44:0;21482:67;21475:74;21335:222;-1:-1:-1;;;21335:222:0:o;20345:789::-;20461:23;8724:80;;;;;;;;;;;;;;;;;;;20541:4;;;;;;;;;-1:-1:-1;;;20541:4:0;;;;;;;;8724:80;-1:-1:-1;20525:22:0;20549:12;:10;:12::i;:::-;20571:4;20497:80;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20497:80:0;-1:-1:-1;;;;;20497:80:0;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;20497:80:0;;;20487:91;;;;;;20461:117;;20589:18;8944:71;;;;;;;;;;;;;;;;;;;20620:57;;;;;;;;-1:-1:-1;;;;;20620:57:0;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;20620:57:0;;;;;20610:68;;;;;;-1:-1:-1;;;20716:57:0;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;20716:57:0;;;;;;20706:68;;;;;;;;;-1:-1:-1;20805:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20610:68;;-1:-1:-1;20706:68:0;;-1:-1:-1;;;20805:26:0;;;;;;;20620:57;-1:-1:-1;;20805:26:0;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;20805:26:0;;-1:-1:-1;;20805:26:0;;;-1:-1:-1;;;;;;;20850:23:0;;20842:74;;;;-1:-1:-1;;;20842:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20944:17:0;;;;;;:6;:17;;;;;:19;;;;;;;;20935:28;;20927:75;;;;-1:-1:-1;;;20927:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21028:6;21021:3;:13;;21013:64;;;;-1:-1:-1;;;21013:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21095:31;21105:9;21116;21095;:31::i;:::-;21088:38;;;;20345:789;;;;;;;:::o;7211:49::-;;;;:::o;16806:1060::-;16937:13;-1:-1:-1;;16965:9:0;:21;16961:172;;;-1:-1:-1;;;16961:172:0;;;17064:57;17071:9;17064:57;;;;;;;;;;;;;;;;;:6;:57::i;:::-;17055:66;;16961:172;17145:23;8724:80;;;;;;;;;;;;;;;;;;;17225:4;;;;;;;;;-1:-1:-1;;;17225:4:0;;;;;;;;8724:80;-1:-1:-1;17209:22:0;17233:12;:10;:12::i;:::-;17255:4;17181:80;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17181:80:0;-1:-1:-1;;;;;17181:80:0;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;17181:80:0;;;17171:91;;;;;;17145:117;;17273:18;9147:95;;;;;;;;;;;;;;;;;;;17332:6;17340:7;17349:9;17360:6;:14;17367:6;-1:-1:-1;;;;;17360:14:0;-1:-1:-1;;;;;17360:14:0;;;;;;;;;;;;;:16;;;;;;;;;;;;17378:8;17304:83;;;;;;;;;;;-1:-1:-1;;;;;17304:83:0;-1:-1:-1;;;;;17304:83:0;;;;;;-1:-1:-1;;;;;17304:83:0;-1:-1:-1;;;;;17304:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;17304:83:0;;;17294:94;;;;;;17273:115;;17399:14;17455:15;17472:10;17426:57;;;;;;-1:-1:-1;;;17426:57:0;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;17426:57:0;;;17416:68;;;;;;17399:85;;17495:17;17515:26;17525:6;17533:1;17536;17539;17515:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;17515:26:0;;-1:-1:-1;;17515:26:0;;;-1:-1:-1;;;;;;;17560:23:0;;17552:67;;;;;-1:-1:-1;;;17552:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17651:6;-1:-1:-1;;;;;17638:19:0;:9;-1:-1:-1;;;;;17638:19:0;;17630:58;;;;;-1:-1:-1;;;17630:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17714:8;17707:3;:15;;17699:59;;;;;-1:-1:-1;;;17699:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17801:6;17771:10;:18;17782:6;-1:-1:-1;;;;;17771:18:0;-1:-1:-1;;;;;17771:18:0;;;;;;;;;;;;:27;17790:7;-1:-1:-1;;;;;17771:27:0;-1:-1:-1;;;;;17771:27:0;;;;;;;;;;;;;:36;;;;;-1:-1:-1;;;;;17771:36:0;;;;;-1:-1:-1;;;;;17771:36:0;;;;;;17842:7;-1:-1:-1;;;;;17825:33:0;17834:6;-1:-1:-1;;;;;17825:33:0;;17851:6;17825:33;;;;-1:-1:-1;;;;;17825:33:0;;;;;;;;;;;;;;;16806:1060;;;;;;;;;;;;:::o;15282:136::-;-1:-1:-1;;;;;15382:19:0;;;15358:4;15382:19;;;:10;:19;;;;;;;;:28;;;;;;;;;;;;-1:-1:-1;;;;;15382:28:0;;15282:136::o;8898:117::-;8944:71;;;;;;;;;;;;;;;;;;8898:117;:::o;8130:47::-;;;;;;;;;;;;;;;:::o;8421:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8421:70:0;;-1:-1:-1;;;;;8421:70:0;;:::o;12277:555::-;12350:4;-1:-1:-1;;;;;12374:22:0;;12366:77;;;;-1:-1:-1;;;12366:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12473:7;-1:-1:-1;;;;;12462:18:0;:7;;:18;;12454:63;;;;;-1:-1:-1;;;12454:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12550:5;;-1:-1:-1;;;;;12550:5:0;12536:10;:19;12528:97;;;;-1:-1:-1;;;12528:97:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12646:57;12670:4;12677:8;12694:7;12646:15;:57::i;:::-;12724:7;;:20;;-1:-1:-1;;;;;12724:20:0;;;:11;:20;:::i;:::-;12714:7;:30;12760:42;;;-1:-1:-1;;;;;12760:42:0;;;;;;-1:-1:-1;;;;;12760:42:0;;;12777:4;;-1:-1:-1;;;;;;;;;;;12760:42:0;;;;;;;;-1:-1:-1;12820:4:0;12277:555;;;;:::o;13575:231::-;13653:5;;-1:-1:-1;;;;;13653:5:0;13639:10;:19;13631:94;;;;-1:-1:-1;;;13631:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13755:6;;13741:30;;;-1:-1:-1;;;;;13755:6:0;;;13741:30;;;;;;;;;;;;;;;;;;;;;13782:6;:16;;-1:-1:-1;;;;;;13782:16:0;-1:-1:-1;;;;;13782:16:0;;;;;;;;;;13575:231::o;25972:161::-;26047:6;26085:12;-1:-1:-1;;;26074:9:0;;26066:32;;;;-1:-1:-1;;;26066:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;26066:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26123:1:0;;25972:161;-1:-1:-1;;25972:161:0:o;26337:165::-;26423:6;26455:1;-1:-1:-1;;;;;26450:6:0;:1;-1:-1:-1;;;;;26450:6:0;;;26458:12;26442:29;;;;;-1:-1:-1;;;26442:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;26442:29:0;-1:-1:-1;;;26489:5:0;;;26337:165::o;23597:614::-;-1:-1:-1;;;;;23691:17:0;;23683:90;;;;-1:-1:-1;;;23683:90:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23792:17:0;;23784:88;;;;-1:-1:-1;;;23784:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23907:13:0;;;;;;:8;:13;;;;;;;;;;23901:86;;;;;;;;;;;;;;-1:-1:-1;;;;;23907:13:0;;;;23922:6;;23901:86;;;;;;;:5;:86::i;:::-;-1:-1:-1;;;;;23885:13:0;;;;;;;:8;:13;;;;;;;;:102;;-1:-1:-1;;;;;;23885:102:0;-1:-1:-1;;;;;23885:102:0;;;;;;24020:13;;;;;;;;;;24014:80;;;;;;;;;;;;;;24020:13;;;;;24035:6;;24014:80;;;;;;;;:5;:80::i;:::-;-1:-1:-1;;;;;23998:13:0;;;;;;;:8;:13;;;;;;;;;:96;;-1:-1:-1;;;;;;23998:96:0;-1:-1:-1;;;;;23998:96:0;;;;;;24110:26;;;;;;;;;23998:13;;24110:26;;;;-1:-1:-1;;;;;;;;;;;24110:26:0;;;;;;;;;;-1:-1:-1;;;;;24164:14:0;;;;;;;:9;:14;;;;;;;24180;;;;;;;;24149:54;;24164:14;;;;24180;24196:6;24149:14;:54::i;984:181::-;1042:7;1074:5;;;1098:6;;;;1090:46;;;;;-1:-1:-1;;;1090:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;2738:471;2796:7;3041:6;3037:47;;-1:-1:-1;3071:1:0;3064:8;;3037:47;3108:5;;;3112:1;3108;:5;:1;3132:5;;;;;:10;3124:56;;;;-1:-1:-1;;;3124:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4396:132;4454:7;4481:39;4485:1;4488;4481:39;;;;;;;;;;;;;;;;;:3;:39::i;26141:188::-;26227:6;26257:5;;;26289:12;-1:-1:-1;;;;;26281:6:0;;;;;;;;26273:29;;;;-1:-1:-1;;;26273:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;26273:29:0;-1:-1:-1;26320:1:0;26141:188;-1:-1:-1;;;;26141:188:0:o;24219:939::-;24324:6;-1:-1:-1;;;;;24314:16:0;:6;-1:-1:-1;;;;;24314:16:0;;;:30;;;;;24343:1;24334:6;-1:-1:-1;;;;;24334:10:0;;24314:30;24310:841;;;-1:-1:-1;;;;;24365:20:0;;;24361:382;;-1:-1:-1;;;;;24425:22:0;;24406:16;24425:22;;;:14;:22;;;;;;;;;24485:13;:60;;24544:1;24485:60;;;-1:-1:-1;;;;;24501:19:0;;;;;;:11;:19;;;;;;;;-1:-1:-1;;24521:13:0;;24501:34;;;;;;;;;:40;-1:-1:-1;;;24501:40:0;;-1:-1:-1;;;;;24501:40:0;24485:60;24466:79;;24564:16;24583:68;24589:9;24600:6;24583:68;;;;;;;;;;;;;;;;;:5;:68::i;:::-;24564:87;;24670:57;24687:6;24695:9;24706;24717;24670:16;:57::i;:::-;24361:382;;;;-1:-1:-1;;;;;24763:20:0;;;24759:381;;-1:-1:-1;;;;;24823:22:0;;24804:16;24823:22;;;:14;:22;;;;;;;;;24883:13;:60;;24942:1;24883:60;;;-1:-1:-1;;;;;24899:19:0;;;;;;:11;:19;;;;;;;;-1:-1:-1;;24919:13:0;;24899:34;;;;;;;;;:40;-1:-1:-1;;;24899:40:0;;-1:-1:-1;;;;;24899:40:0;24883:60;24864:79;;24962:16;24981:67;24987:9;24998:6;24981:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;24962:86;;25067:57;25084:6;25092:9;25103;25114;25067:16;:57::i;23214:375::-;-1:-1:-1;;;;;23317:20:0;;;23291:23;23317:20;;;:9;:20;;;;;;;;;;23374:8;:19;;;;;;23404:20;;;;:32;;;-1:-1:-1;;;;;;23404:32:0;;;;;;;23454:54;;23317:20;;;;;-1:-1:-1;;;;;23374:19:0;;;;23404:32;;23317:20;;;23454:54;;23291:23;23454:54;23521:60;23536:15;23553:9;23564:16;23521:14;:60::i;:::-;23214:375;;;;:::o;1877:137::-;1935:7;1962:44;1966:1;1969;1962:44;;;;;;;;;;;;;;;;;:3;:44::i;26510:153::-;26620:9;26510:153;:::o;5016:345::-;5102:7;5204:12;5197:5;5189:28;;;;-1:-1:-1;;;5189:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;5189:28:0;;5228:9;5244:1;5240;:5;;;;;;;5016:345;-1:-1:-1;;;;;5016:345:0:o;25166:629::-;25284:18;25305:76;25312:12;25305:76;;;;;;;;;;;;;;;;;:6;:76::i;:::-;25284:97;;25411:1;25396:12;:16;;;:85;;;;-1:-1:-1;;;;;;25416:22:0;;;;;;:11;:22;;;;;;;;:65;-1:-1:-1;;25439:16:0;;25416:40;;;;;;;;;:50;:65;;;:50;;:65;25396:85;25392:329;;;-1:-1:-1;;;;;25496:22:0;;;;;;:11;:22;;;;;;;;-1:-1:-1;;25519:16:0;;25496:40;;;;;;;;;:57;;-1:-1:-1;;25496:57:0;-1:-1:-1;;;;;;;;25496:57:0;;;;;;25392:329;;;25621:33;;;;;;;;;;;;;;-1:-1:-1;;;;;25621:33:0;;;;;;;;;;-1:-1:-1;;;;;25582:22:0;;-1:-1:-1;25582:22:0;;;:11;:22;;;;;:36;;;;;;;;;;:72;;;;;;;;;-1:-1:-1;;;25582:72:0;-1:-1:-1;;25582:72:0;;;-1:-1:-1;;25582:72:0;;;;;;;;;;;;;;;25667:25;;;:14;:25;;;;;;;:44;;25582:72;25695:16;;25667:44;;;;;;;;;;;;;25392:329;25736:51;;;-1:-1:-1;;;;;25736:51:0;;;;;;;;;;;;;-1:-1:-1;;;;;25736:51:0;;;;;;;;;;;25166:629;;;;;:::o;2303:192::-;2389:7;2425:12;2417:6;;;;2409:29;;;;-1:-1:-1;;;2409:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;25803:161:0;25878:6;25916:12;-1:-1:-1;;;25905:9:0;;25897:32;;;;-1:-1:-1;;;25897:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;6598:20343:0;;;;;;;;;;-1:-1:-1;6598:20343:0;;;;;;;;:::o

Swarm Source

ipfs://55183a2c5f085e6a2b88a4514658db9abea9851ff2abb5b39a6d1595ca3835c0
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.