Token BENQI

Overview ERC20

Price
$0.01 @ 0.000673 AVAX (+2.53%)
Fully Diluted Market Cap
Total Supply:
7,200,000,000 QI

Holders:
19,627 addresses

Transfers:
-

Contract:
0x8729438eb15e2c8b576fcc6aecda6a148776c0f50x8729438EB15e2C8B576fCc6AeCdA6A148776C0F5

Decimals:
18

Official Site:

Social Profiles:

Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

Supply, borrow, and earn. All on Avalanche's non-custodial lending and borrowing protocol.

Market

Volume (24H):$3,317,466.20
Market Capitalization:$26,454,085.85
Circulating Supply:3,189,642,363.00 QI
Market Data Source: Coinmarketcap


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

Contract Source Code Verified (Exact Match)

Contract Name:
Qi

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2021-11-02
*/

pragma solidity ^0.5.16;
pragma experimental ABIEncoderV2;

contract Qi {
    /// @notice EIP-20 token name for this token
    string public constant name = "BENQI";

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

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

    /// @notice Total number of tokens in circulation
    uint public constant totalSupply = 7_200_000_000e18; // 7 billion 200 million QI

    /// @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;

    /// @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 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 QI token
     * @param account The initial account to grant all the tokens
     */
    constructor(address account) public {
        balances[account] = uint96(totalSupply);
        emit Transfer(address(0), account, totalSupply);
    }

    /**
     * @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, "Qi::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, "Qi::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), "Qi::permit: invalid signature");
        require(signatory == owner, "Qi::permit: unauthorized");
        require(now <= deadline, "Qi::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, "Qi::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, "Qi::approve: amount exceeds 96 bits");

        if (spender != src && spenderAllowance != uint96(-1)) {
            uint96 newAllowance = sub96(spenderAllowance, amount, "Qi::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), "Qi::delegateBySig: invalid signature");
        require(nonce == nonces[signatory]++, "Qi::delegateBySig: invalid nonce");
        require(now <= expiry, "Qi::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, "Qi::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), "Qi::_transferTokens: cannot transfer from the zero address");
        require(dst != address(0), "Qi::_transferTokens: cannot transfer to the zero address");

        balances[src] = sub96(balances[src], amount, "Qi::_transferTokens: transfer amount exceeds balance");
        balances[dst] = add96(balances[dst], amount, "Qi::_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, "Qi::_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, "Qi::_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, "Qi::_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;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"account","type":"address"}],"payable":false,"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":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"},{"constant":true,"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"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"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"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":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"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":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"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"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162002146380380620021468339810160408190526200003491620000bd565b6001600160a01b03811660008181526001602052604080822080546001600160601b0319166b1743b34e18439b502000000090811790915590517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200009b91620000f7565b60405180910390a35062000136565b8051620000b7816200011c565b92915050565b600060208284031215620000d057600080fd5b6000620000de8484620000aa565b949350505050565b620000f18162000119565b82525050565b60208101620000b78284620000e6565b60006001600160a01b038216620000b7565b90565b620001278162000107565b81146200013357600080fd5b50565b61200080620001466000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063b4b5ea571161007c578063b4b5ea571461027d578063c3cda52014610290578063d505accf146102a3578063dd62ed3e146102b6578063e7a324dc146102c9578063f1127ed8146102d157610137565b806370a082311461021c578063782d6fe11461022f5780637ecebe001461024f57806395d89b4114610262578063a9059cbb1461026a57610137565b806330adf81f116100ff57806330adf81f146101aa578063313ce567146101b2578063587cde1e146101c75780635c19a95c146101e75780636fcfff45146101fc57610137565b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017a57806320606b701461018f57806323b872dd14610197575b600080fd5b6101446102f2565b6040516101519190611c6f565b60405180910390f35b61016d6101683660046115bf565b610313565b6040516101519190611b6b565b6101826103d0565b6040516101519190611b79565b6101826103e0565b61016d6101a53660046114d6565b6103f7565b61018261053c565b6101ba610548565b6040516101519190611d39565b6101da6101d5366004611476565b61054d565b6040516101519190611b5d565b6101fa6101f5366004611476565b610568565b005b61020f61020a366004611476565b610575565b6040516101519190611d10565b61018261022a366004611476565b61058d565b61024261023d3660046115bf565b6105b1565b6040516101519190611d55565b61018261025d366004611476565b6107c8565b6101446107da565b61016d6102783660046115bf565b6107f8565b61024261028b366004611476565b610834565b6101fa61029e3660046115ef565b6108a4565b6101fa6102b1366004611523565b610a8b565b6101826102c436600461149c565b610d73565b610182610da5565b6102e46102df366004611676565b610db1565b604051610151929190611d1e565b6040518060400160405280600581526020016442454e514960d81b81525081565b600080600019831415610329575060001961034e565b61034b83604051806060016040528060238152602001611ec660239139610de6565b90505b336000818152602081815260408083206001600160a01b03891680855292529182902080546001600160601b0319166001600160601b03861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103bc908590611d47565b60405180910390a360019150505b92915050565b6b1743b34e18439b502000000081565b6040516103ec90611b47565b604051809103902081565b6001600160a01b0383166000908152602081815260408083203380855290835281842054825160608101909352602380845291936001600160601b0390911692859261044d9288929190611ec690830139610de6565b9050866001600160a01b0316836001600160a01b03161415801561047a57506001600160601b0382811614155b156105225760006104a483836040518060600160405280603b8152602001611f17603b9139610e15565b6001600160a01b03898116600081815260208181526040808320948a16808452949091529081902080546001600160601b0319166001600160601b0386161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610518908590611d47565b60405180910390a3505b61052d878783610e54565b600193505050505b9392505050565b6040516103ec90611b3c565b601281565b6002602052600090815260409020546001600160a01b031681565b6105723382610fff565b50565b60046020526000908152604090205463ffffffff1681565b6001600160a01b03166000908152600160205260409020546001600160601b031690565b60004382106105db5760405162461bcd60e51b81526004016105d290611cc0565b60405180910390fd5b6001600160a01b03831660009081526004602052604090205463ffffffff16806106095760009150506103ca565b6001600160a01b038416600090815260036020908152604080832063ffffffff600019860181168552925290912054168310610685576001600160a01b03841660009081526003602090815260408083206000199490940163ffffffff1683529290522054600160201b90046001600160601b031690506103ca565b6001600160a01b038416600090815260036020908152604080832083805290915290205463ffffffff168310156106c05760009150506103ca565b600060001982015b8163ffffffff168163ffffffff16111561078357600282820363ffffffff160481036106f2611433565b506001600160a01b038716600090815260036020908152604080832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b0316918101919091529087141561075e576020015194506103ca9350505050565b805163ffffffff168711156107755781935061077c565b6001820392505b50506106c8565b506001600160a01b038516600090815260036020908152604080832063ffffffff909416835292905220546001600160601b03600160201b9091041691505092915050565b60056020526000908152604090205481565b60405180604001604052806002815260200161514960f01b81525081565b60008061081d83604051806060016040528060248152602001611f5260249139610de6565b905061082a338583610e54565b5060019392505050565b6001600160a01b03811660009081526004602052604081205463ffffffff168061085f576000610535565b6001600160a01b0383166000908152600360209081526040808320600019850163ffffffff168452909152902054600160201b90046001600160601b03169392505050565b60006040516108b290611b47565b60408051918290038220828201909152600582526442454e514960d81b6020909201919091527f652ce36105b539f996844fd42c18f958909e22c765681cf9788137be385660ae610901611089565b306040516020016109159493929190611c1f565b604051602081830303815290604052805190602001209050600060405161093b90611b52565b604051908190038120610956918a908a908a90602001611be1565b60405160208183030381529060405280519060200120905060008282604051602001610983929190611b0b565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516109c09493929190611c54565b6020604051602081039080840390855afa1580156109e2573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610a155760405162461bcd60e51b81526004016105d290611cf0565b6001600160a01b03811660009081526005602052604090208054600181019091558914610a545760405162461bcd60e51b81526004016105d290611c80565b87421115610a745760405162461bcd60e51b81526004016105d290611d00565b610a7e818b610fff565b505050505b505050505050565b6000600019861415610aa05750600019610ac5565b610ac286604051806060016040528060228152602001611f9c60229139610de6565b90505b6000604051610ad390611b47565b60408051918290038220828201909152600582526442454e514960d81b6020909201919091527f652ce36105b539f996844fd42c18f958909e22c765681cf9788137be385660ae610b22611089565b30604051602001610b369493929190611c1f565b6040516020818303038152906040528051906020012090506000604051610b5c90611b3c565b604080519182900382206001600160a01b038d16600090815260056020908152929020805460018101909155610b9e9391928e928e928e9290918e9101611b87565b60405160208183030381529060405280519060200120905060008282604051602001610bcb929190611b0b565b604051602081830303815290604052805190602001209050600060018289898960405160008152602001604052604051610c089493929190611c54565b6020604051602081039080840390855afa158015610c2a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610c5d5760405162461bcd60e51b81526004016105d290611ce0565b8b6001600160a01b0316816001600160a01b031614610c8e5760405162461bcd60e51b81526004016105d290611ca0565b88421115610cae5760405162461bcd60e51b81526004016105d290611cd0565b846000808e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160601b0302191690836001600160601b031602179055508a6001600160a01b03168c6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051610d5d9190611d47565b60405180910390a3505050505050505050505050565b6001600160a01b039182166000908152602081815260408083209390941682529190915220546001600160601b031690565b6040516103ec90611b52565b600360209081526000928352604080842090915290825290205463ffffffff811690600160201b90046001600160601b031682565b600081600160601b8410610e0d5760405162461bcd60e51b81526004016105d29190611c6f565b509192915050565b6000836001600160601b0316836001600160601b031611158290610e4c5760405162461bcd60e51b81526004016105d29190611c6f565b505050900390565b6001600160a01b038316610e7a5760405162461bcd60e51b81526004016105d290611c90565b6001600160a01b038216610ea05760405162461bcd60e51b81526004016105d290611cb0565b6001600160a01b038316600090815260016020908152604091829020548251606081019093526034808452610eeb936001600160601b039092169285929190611e9290830139610e15565b6001600160a01b03848116600090815260016020908152604080832080546001600160601b0319166001600160601b0396871617905592861682529082902054825160608101909352602e808452610f539491909116928592909190611ee99083013961108d565b6001600160a01b038381166000818152600160205260409081902080546001600160601b0319166001600160601b0395909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fc0908590611d47565b60405180910390a36001600160a01b03808416600090815260026020526040808220548584168352912054610ffa929182169116836110c9565b505050565b6001600160a01b03808316600081815260026020818152604080842080546001845282862054949093528787166001600160a01b031984168117909155905191909516946001600160601b039092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46110838284836110c9565b50505050565b4690565b6000838301826001600160601b0380871690831610156110c05760405162461bcd60e51b81526004016105d29190611c6f565b50949350505050565b816001600160a01b0316836001600160a01b0316141580156110f457506000816001600160601b0316115b15610ffa576001600160a01b038316156111ac576001600160a01b03831660009081526004602052604081205463ffffffff169081611134576000611173565b6001600160a01b0385166000908152600360209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b9050600061119a8285604051806060016040528060268152602001611f7660269139610e15565b90506111a886848484611257565b5050505b6001600160a01b03821615610ffa576001600160a01b03821660009081526004602052604081205463ffffffff1690816111e7576000611226565b6001600160a01b0384166000908152600360209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b9050600061124d8285604051806060016040528060258152602001611e3b6025913961108d565b9050610a83858484845b600061127b43604051806060016040528060328152602001611e606032913961140c565b905060008463ffffffff161180156112c457506001600160a01b038516600090815260036020908152604080832063ffffffff6000198901811685529252909120548282169116145b15611323576001600160a01b0385166000908152600360209081526040808320600019880163ffffffff168452909152902080546fffffffffffffffffffffffff000000001916600160201b6001600160601b038516021790556113c2565b60408051808201825263ffffffff80841682526001600160601b0380861660208085019182526001600160a01b038b166000818152600383528781208c871682528352878120965187549451909516600160201b026fffffffffffffffffffffffff000000001995871663ffffffff19958616179590951694909417909555938252600490935292909220805460018801909316929091169190911790555b846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516113fd929190611d63565b60405180910390a25050505050565b600081600160201b8410610e0d5760405162461bcd60e51b81526004016105d29190611c6f565b604080518082019091526000808252602082015290565b80356103ca81611e0b565b80356103ca81611e1f565b80356103ca81611e28565b80356103ca81611e31565b60006020828403121561148857600080fd5b6000611494848461144a565b949350505050565b600080604083850312156114af57600080fd5b60006114bb858561144a565b92505060206114cc8582860161144a565b9150509250929050565b6000806000606084860312156114eb57600080fd5b60006114f7868661144a565b93505060206115088682870161144a565b925050604061151986828701611455565b9150509250925092565b600080600080600080600060e0888a03121561153e57600080fd5b600061154a8a8a61144a565b975050602061155b8a828b0161144a565b965050604061156c8a828b01611455565b955050606061157d8a828b01611455565b945050608061158e8a828b0161146b565b93505060a061159f8a828b01611455565b92505060c06115b08a828b01611455565b91505092959891949750929550565b600080604083850312156115d257600080fd5b60006115de858561144a565b92505060206114cc85828601611455565b60008060008060008060c0878903121561160857600080fd5b6000611614898961144a565b965050602061162589828a01611455565b955050604061163689828a01611455565b945050606061164789828a0161146b565b935050608061165889828a01611455565b92505060a061166989828a01611455565b9150509295509295509295565b6000806040838503121561168957600080fd5b6000611695858561144a565b92505060206114cc85828601611460565b6116af81611d90565b82525050565b6116af81611d9b565b6116af81611da0565b6116af6116d382611da0565b611da0565b60006116e382611d7e565b6116ed8185611d82565b93506116fd818560208601611dd5565b61170681611e01565b9093019392505050565b600061171d600283611d8b565b61190160f01b815260020192915050565b600061173b602083611d82565b7f51693a3a64656c656761746542795369673a20696e76616c6964206e6f6e6365815260200192915050565b6000611774605283611d8b565b7f5065726d69742861646472657373206f776e65722c616464726573732073706581527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63656020820152712c75696e7432353620646561646c696e652960701b604082015260520192915050565b60006117ee603a83611d82565b7f51693a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e81527f736665722066726f6d20746865207a65726f2061646472657373000000000000602082015260400192915050565b600061184d601883611d82565b7f51693a3a7065726d69743a20756e617574686f72697a65640000000000000000815260200192915050565b6000611886603883611d82565b7f51693a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e81527f7366657220746f20746865207a65726f20616464726573730000000000000000602082015260400192915050565b60006118e5604383611d8b565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b6000611950602583611d82565b7f51693a3a6765745072696f72566f7465733a206e6f74207965742064657465728152641b5a5b995960da1b602082015260400192915050565b6000611997603a83611d8b565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b60006119f6601d83611d82565b7f51693a3a7065726d69743a207369676e61747572652065787069726564000000815260200192915050565b6000611a2f601d83611d82565b7f51693a3a7065726d69743a20696e76616c6964207369676e6174757265000000815260200192915050565b6000611a68602483611d82565b7f51693a3a64656c656761746542795369673a20696e76616c6964207369676e618152637475726560e01b602082015260400192915050565b6000611aae602483611d82565b7f51693a3a64656c656761746542795369673a207369676e6174757265206578708152631a5c995960e21b602082015260400192915050565b6116af81611daf565b6116af81611db8565b6116af81611dca565b6116af81611dbe565b6000611b1682611710565b9150611b2282856116c7565b602082019150611b3282846116c7565b5060200192915050565b60006103ca82611767565b60006103ca826118d8565b60006103ca8261198a565b602081016103ca82846116a6565b602081016103ca82846116b5565b602081016103ca82846116be565b60c08101611b9582896116be565b611ba260208301886116a6565b611baf60408301876116a6565b611bbc60608301866116be565b611bc960808301856116be565b611bd660a08301846116be565b979650505050505050565b60808101611bef82876116be565b611bfc60208301866116a6565b611c0960408301856116be565b611c1660608301846116be565b95945050505050565b60808101611c2d82876116be565b611c3a60208301866116be565b611c4760408301856116be565b611c1660608301846116a6565b60808101611c6282876116be565b611bfc6020830186611af0565b6020808252810161053581846116d8565b602080825281016103ca8161172e565b602080825281016103ca816117e1565b602080825281016103ca81611840565b602080825281016103ca81611879565b602080825281016103ca81611943565b602080825281016103ca816119e9565b602080825281016103ca81611a22565b602080825281016103ca81611a5b565b602080825281016103ca81611aa1565b602081016103ca8284611ae7565b60408101611d2c8285611ae7565b6105356020830184611b02565b602081016103ca8284611af0565b602081016103ca8284611af9565b602081016103ca8284611b02565b60408101611d718285611af9565b6105356020830184611af9565b5190565b90815260200190565b919050565b60006103ca82611da3565b151590565b90565b6001600160a01b031690565b63ffffffff1690565b60ff1690565b6001600160601b031690565b60006103ca82611dbe565b60005b83811015611df0578181015183820152602001611dd8565b838111156110835750506000910152565b601f01601f191690565b611e1481611d90565b811461057257600080fd5b611e1481611da0565b611e1481611daf565b611e1481611db856fe51693a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f777351693a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747351693a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e636551693a3a617070726f76653a20616d6f756e742065786365656473203936206269747351693a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f777351693a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e636551693a3a7472616e736665723a20616d6f756e742065786365656473203936206269747351693a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f777351693a3a7065726d69743a20616d6f756e7420657863656564732039362062697473a365627a7a723158207dcb86189f95d2bc321fa82d0785d5ee7a7bfc4f3c5aec903156e16a52e892016c6578706572696d656e74616cf564736f6c634300051000400000000000000000000000005423819b3b5bb38b0e9e9e59f22f9034e2d8819b

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

0000000000000000000000005423819b3b5bb38b0e9e9e59f22f9034e2d8819b

-----Decoded View---------------
Arg [0] : account (address): 0x5423819b3b5bb38b0e9e9e59f22f9034e2d8819b

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000005423819b3b5bb38b0e9e9e59f22f9034e2d8819b


Deployed ByteCode Sourcemap

63:14570:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;63:14570:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;132:37;;;:::i;:::-;;;;;;;;;;;;;;;;3908:417;;;;;;;;;:::i;:::-;;;;;;;;428:51;;;:::i;:::-;;;;;;;;1372:122;;;:::i;6982:668::-;;;;;;;;;:::i;1795:137::-;;;:::i;329:35::-;;;:::i;:::-;;;;;;;;822:45;;;;;;;;;:::i;:::-;;;;;;;;7798:102;;;;;;;;;:::i;:::-;;1250:49;;;;;;;;;:::i;:::-;;;;;;;;6064:108;;;;;;;;;:::i;9971:1216::-;;;;;;;;;:::i;:::-;;;;;;;;2013:39;;;;;;;;;:::i;230:36::-;;;:::i;6436:236::-;;;;;;;;;:::i;9318:222::-;;;;;;;;;:::i;8334:783::-;;;;;;;;;:::i;4815:1046::-;;;;;;;;;:::i;3294:136::-;;;;;;;;;:::i;1588:117::-;;;:::i;1111:70::-;;;;;;;;;:::i;:::-;;;;;;;;;132:37;;;;;;;;;;;;;;-1:-1:-1;;;132:37:0;;;;:::o;3908:417::-;3976:4;3993:13;-1:-1:-1;;4021:9:0;:21;4017:171;;;-1:-1:-1;;;4017:171:0;;;4120:56;4127:9;4120:56;;;;;;;;;;;;;;;;;:6;:56::i;:::-;4111:65;;4017:171;4211:10;4200;:22;;;;;;;;;;;-1:-1:-1;;;;;4200:31:0;;;;;;;;;;;:40;;-1:-1:-1;;;;;;4200:40:0;-1:-1:-1;;;;;4200:40:0;;;;;4258:37;;4200:31;;4211:10;4258:37;;;;4200:40;;4258:37;;;;;;;;;;4313:4;4306:11;;;3908:417;;;;;:::o;428:51::-;463:16;428:51;:::o;1372:122::-;1414:80;;;;;;;;;;;;;;1372:122;:::o;6982:668::-;-1:-1:-1;;;;;7146:15:0;;7064:4;7146:15;;;;;;;;;;;7099:10;7146:24;;;;;;;;;;7197:56;;;;;;;;;;;;7099:10;;-1:-1:-1;;;;;7146:24:0;;;;7064:4;;7197:56;;7204:9;;7197:56;;;;;;;:6;:56::i;:::-;7181:72;;7281:3;-1:-1:-1;;;;;7270:14:0;:7;-1:-1:-1;;;;;7270:14:0;;;:48;;;;-1:-1:-1;;;;;;7288:30:0;;;;;7270:48;7266:309;;;7335:19;7357:94;7363:16;7381:6;7357:94;;;;;;;;;;;;;;;;;:5;:94::i;:::-;-1:-1:-1;;;;;7466:15:0;;;:10;:15;;;;;;;;;;;:24;;;;;;;;;;;;;;:39;;-1:-1:-1;;;;;;7466:39:0;-1:-1:-1;;;;;7466:39:0;;;;;7527:36;7466:39;;-1:-1:-1;7466:24:0;;7527:36;;;;7466:39;;7527:36;;;;;;;;;;7266:309;;7587:33;7603:3;7608;7613:6;7587:15;:33::i;:::-;7638:4;7631:11;;;;;6982:668;;;;;;:::o;1795:137::-;1837:95;;;;;;329:35;362:2;329:35;:::o;822:45::-;;;;;;;;;;;;-1:-1:-1;;;;;822:45:0;;:::o;7798:102::-;7860:32;7870:10;7882:9;7860;:32::i;:::-;7798:102;:::o;1250:49::-;;;;;;;;;;;;;;;:::o;6064:108::-;-1:-1:-1;;;;;6147:17:0;6123:4;6147:17;;;:8;:17;;;;;;-1:-1:-1;;;;;6147:17:0;;6064:108::o;9971:1216::-;10050:6;10091:12;10077:11;:26;10069:76;;;;-1:-1:-1;;;10069:76:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10180:23:0;;10158:19;10180:23;;;:14;:23;;;;;;;;10218:17;10214:58;;10259:1;10252:8;;;;;10214:58;-1:-1:-1;;;;;10332:20:0;;;;;;:11;:20;;;;;;;;:38;-1:-1:-1;;10353:16:0;;10332:38;;;;;;;;;:48;;:63;-1:-1:-1;10328:147:0;;-1:-1:-1;;;;;10419:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;10440:16:0;;;;10419:38;;;;;;;;:44;-1:-1:-1;;;10419:44:0;;-1:-1:-1;;;;;10419:44:0;;-1:-1:-1;10412:51:0;;10328:147;-1:-1:-1;;;;;10536:20:0;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;10532:88:0;;;10607:1;10600:8;;;;;10532:88;10632:12;-1:-1:-1;;10674:16:0;;10701:428;10716:5;10708:13;;:5;:13;;;10701:428;;;10780:1;10763:13;;;10762:19;;;10754:27;;10823:20;;:::i;:::-;-1:-1:-1;;;;;;10846:20:0;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;10823:51;;;;;;;;;;;;;;;-1:-1:-1;;;10823:51:0;;;-1:-1:-1;;;;;10823:51:0;;;;;;;;;10893:27;;10889:229;;;10948:8;;;;-1:-1:-1;10941:15:0;;-1:-1:-1;;;;10941:15:0;10889:229;10982:12;;:26;;;-1:-1:-1;10978:140:0;;;11037:6;11029:14;;10978:140;;;11101:1;11092:6;:10;11084:18;;10978:140;10701:428;;;;;-1:-1:-1;;;;;;11146:20:0;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;-1:-1:-1;;;;;;;;11146:33:0;;;;;-1:-1:-1;;9971:1216:0;;;;:::o;2013:39::-;;;;;;;;;;;;;:::o;230:36::-;;;;;;;;;;;;;;-1:-1:-1;;;230:36:0;;;;:::o;6436:236::-;6501:4;6518:13;6534:57;6541:9;6534:57;;;;;;;;;;;;;;;;;:6;:57::i;:::-;6518:73;;6602:40;6618:10;6630:3;6635:6;6602:15;:40::i;:::-;-1:-1:-1;6660:4:0;;6436:236;-1:-1:-1;;;6436:236:0:o;9318:222::-;-1:-1:-1;;;;;9424:23:0;;9383:6;9424:23;;;:14;:23;;;;;;;;9465:16;:67;;9531:1;9465:67;;;-1:-1:-1;;;;;9484:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;9505:16:0;;9484:38;;;;;;;;;:44;-1:-1:-1;;;9484:44:0;;-1:-1:-1;;;;;9484:44:0;9458:74;9318:222;-1:-1:-1;;;9318:222:0:o;8334:783::-;8450:23;1414:80;;;;;;;;;;;;;;;;8530:4;;;;;;;;;-1:-1:-1;;;8530:4:0;;;;;;;;8514:22;8538:12;:10;:12::i;:::-;8560:4;8486:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8486:80:0;;;8476:91;;;;;;8450:117;;8578:18;1634:71;;;;;;;;;;;;;;;8609:57;;8641:9;;8652:5;;8659:6;;8609:57;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8609:57:0;;;8599:68;;;;;;8578:89;;8678:14;8734:15;8751:10;8705:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8705:57:0;;;8695:68;;;;;;8678:85;;8774:17;8794:26;8804:6;8812:1;8815;8818;8794:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;8794:26:0;;-1:-1:-1;;8794:26:0;;;-1:-1:-1;;;;;;;8839:23:0;;8831:72;;;;-1:-1:-1;;;8831:72:0;;;;;;;;;-1:-1:-1;;;;;8931:17:0;;;;;;:6;:17;;;;;:19;;;;;;;;8922:28;;8914:73;;;;-1:-1:-1;;;8914:73:0;;;;;;;;;9013:6;9006:3;:13;;8998:62;;;;-1:-1:-1;;;8998:62:0;;;;;;;;;9078:31;9088:9;9099;9078;:31::i;:::-;9071:38;;;;8334:783;;;;;;;:::o;4815:1046::-;4945:13;-1:-1:-1;;4973:9:0;:21;4969:170;;;-1:-1:-1;;;4969:170:0;;;5072:55;5079:9;5072:55;;;;;;;;;;;;;;;;;:6;:55::i;:::-;5063:64;;4969:170;5151:23;1414:80;;;;;;;;;;;;;;;;5231:4;;;;;;;;;-1:-1:-1;;;5231:4:0;;;;;;;;5215:22;5239:12;:10;:12::i;:::-;5261:4;5187:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5187:80:0;;;5177:91;;;;;;5151:117;;5279:18;1837:95;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5365:13:0;;;;;;:6;:13;;;;;;;:15;;;;;;;;5310:81;;1837:95;;5338:5;;5345:7;;5354:9;;5365:15;;5382:8;;5310:81;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5310:81:0;;;5300:92;;;;;;5279:113;;5403:14;5459:15;5476:10;5430:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5430:57:0;;;5420:68;;;;;;5403:85;;5499:17;5519:26;5529:6;5537:1;5540;5543;5519:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;5519:26:0;;-1:-1:-1;;5519:26:0;;;-1:-1:-1;;;;;;;5564:23:0;;5556:65;;;;-1:-1:-1;;;5556:65:0;;;;;;;;;5653:5;-1:-1:-1;;;;;5640:18:0;:9;-1:-1:-1;;;;;5640:18:0;;5632:55;;;;-1:-1:-1;;;5632:55:0;;;;;;;;;5713:8;5706:3;:15;;5698:57;;;;-1:-1:-1;;;5698:57:0;;;;;;;;;5797:6;5768:10;:17;5779:5;-1:-1:-1;;;;;5768:17:0;-1:-1:-1;;;;;5768:17:0;;;;;;;;;;;;:26;5786:7;-1:-1:-1;;;;;5768:26:0;-1:-1:-1;;;;;5768:26:0;;;;;;;;;;;;;:35;;;;;-1:-1:-1;;;;;5768:35:0;;;;;-1:-1:-1;;;;;5768:35:0;;;;;;5837:7;-1:-1:-1;;;;;5821:32:0;5830:5;-1:-1:-1;;;;;5821:32:0;;5846:6;5821:32;;;;;;;;;;;;;;;4815:1046;;;;;;;;;;;;:::o;3294:136::-;-1:-1:-1;;;;;3394:19:0;;;3370:4;3394:19;;;;;;;;;;;:28;;;;;;;;;;;;-1:-1:-1;;;;;3394:28:0;;3294:136::o;1588:117::-;1634:71;;;;;;1111:70;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1111:70:0;;-1:-1:-1;;;;;1111:70:0;;:::o;13939:161::-;14014:6;14052:12;-1:-1:-1;;;14041:9:0;;14033:32;;;;-1:-1:-1;;;14033:32:0;;;;;;;;;;-1:-1:-1;14090:1:0;;13939:161;-1:-1:-1;;13939:161:0:o;14304:165::-;14390:6;14422:1;-1:-1:-1;;;;;14417:6:0;:1;-1:-1:-1;;;;;14417:6:0;;;14425:12;14409:29;;;;;-1:-1:-1;;;14409:29:0;;;;;;;;;;-1:-1:-1;;;14456:5:0;;;14304:165::o;11578:606::-;-1:-1:-1;;;;;11672:17:0;;11664:88;;;;-1:-1:-1;;;11664:88:0;;;;;;;;;-1:-1:-1;;;;;11771:17:0;;11763:86;;;;-1:-1:-1;;;11763:86:0;;;;;;;;;-1:-1:-1;;;;;11884:13:0;;;;;;:8;:13;;;;;;;;;;11878:84;;;;;;;;;;;;;;-1:-1:-1;;;;;11884:13:0;;;;11899:6;;11878:84;;;;;;;:5;:84::i;:::-;-1:-1:-1;;;;;11862:13:0;;;;;;;:8;:13;;;;;;;;:100;;-1:-1:-1;;;;;;11862:100:0;-1:-1:-1;;;;;11862:100:0;;;;;;11995:13;;;;;;;;;;11989:78;;;;;;;;;;;;;;11995:13;;;;;12010:6;;11989:78;;;;;;;;:5;:78::i;:::-;-1:-1:-1;;;;;11973:13:0;;;;;;;:8;:13;;;;;;;:94;;-1:-1:-1;;;;;;11973:94:0;-1:-1:-1;;;;;11973:94:0;;;;;;;;;;;12083:26;;;;;;;;;;12102:6;;12083:26;;;;;;;;;;-1:-1:-1;;;;;12137:14:0;;;;;;;:9;:14;;;;;;;12153;;;;;;;;12122:54;;12137:14;;;;12153;12169:6;12122:14;:54::i;:::-;11578:606;;;:::o;11195:375::-;-1:-1:-1;;;;;11298:20:0;;;11272:23;11298:20;;;:9;:20;;;;;;;;;;;11355:19;;;;;;11385:20;;;;:32;;;-1:-1:-1;;;;;;11385:32:0;;;;;;;11435:54;;11298:20;;;;;-1:-1:-1;;;;;11355:19:0;;;;11385:32;;11298:20;;;11435:54;;11272:23;11435:54;11502:60;11517:15;11534:9;11545:16;11502:14;:60::i;:::-;11195:375;;;;:::o;14477:153::-;14587:9;14477:153;:::o;14108:188::-;14194:6;14224:5;;;14256:12;-1:-1:-1;;;;;14248:6:0;;;;;;;;14240:29;;;;-1:-1:-1;;;14240:29:0;;;;;;;;;;-1:-1:-1;14287:1:0;14108:188;-1:-1:-1;;;;14108:188:0:o;12192:935::-;12297:6;-1:-1:-1;;;;;12287:16:0;:6;-1:-1:-1;;;;;12287:16:0;;;:30;;;;;12316:1;12307:6;-1:-1:-1;;;;;12307:10:0;;12287:30;12283:837;;;-1:-1:-1;;;;;12338:20:0;;;12334:380;;-1:-1:-1;;;;;12398:22:0;;12379:16;12398:22;;;:14;:22;;;;;;;;;12458:13;:60;;12517:1;12458:60;;;-1:-1:-1;;;;;12474:19:0;;;;;;:11;:19;;;;;;;;-1:-1:-1;;12494:13:0;;12474:34;;;;;;;;;:40;-1:-1:-1;;;12474:40:0;;-1:-1:-1;;;;;12474:40:0;12458:60;12439:79;;12537:16;12556:66;12562:9;12573:6;12556:66;;;;;;;;;;;;;;;;;:5;:66::i;:::-;12537:85;;12641:57;12658:6;12666:9;12677;12688;12641:16;:57::i;:::-;12334:380;;;;-1:-1:-1;;;;;12734:20:0;;;12730:379;;-1:-1:-1;;;;;12794:22:0;;12775:16;12794:22;;;:14;:22;;;;;;;;;12854:13;:60;;12913:1;12854:60;;;-1:-1:-1;;;;;12870:19:0;;;;;;:11;:19;;;;;;;;-1:-1:-1;;12890:13:0;;12870:34;;;;;;;;;:40;-1:-1:-1;;;12870:40:0;;-1:-1:-1;;;;;12870:40:0;12854:60;12835:79;;12933:16;12952:65;12958:9;12969:6;12952:65;;;;;;;;;;;;;;;;;:5;:65::i;:::-;12933:84;;13036:57;13053:6;13061:9;13072;13083;13135:627;13253:18;13274:74;13281:12;13274:74;;;;;;;;;;;;;;;;;:6;:74::i;:::-;13253:95;;13378:1;13363:12;:16;;;:85;;;;-1:-1:-1;;;;;;13383:22:0;;;;;;:11;:22;;;;;;;;:65;-1:-1:-1;;13406:16:0;;13383:40;;;;;;;;;:50;:65;;;:50;;:65;13363:85;13359:329;;;-1:-1:-1;;;;;13463:22:0;;;;;;:11;:22;;;;;;;;-1:-1:-1;;13486:16:0;;13463:40;;;;;;;;;:57;;-1:-1:-1;;13463:57:0;-1:-1:-1;;;;;;;;13463:57:0;;;;;;13359:329;;;13588:33;;;;;;;;;;;;;;-1:-1:-1;;;;;13588:33:0;;;;;;;;;;-1:-1:-1;;;;;13549:22:0;;-1:-1:-1;13549:22:0;;;:11;:22;;;;;:36;;;;;;;;;;:72;;;;;;;;;-1:-1:-1;;;13549:72:0;-1:-1:-1;;13549:72:0;;;-1:-1:-1;;13549:72:0;;;;;;;;;;;;;;;13634:25;;;13549:72;13634:25;;;;;;;:44;;13549:72;13662:16;;13634:44;;;;;;;;;;;;;13359:329;13724:9;-1:-1:-1;;;;;13703:51:0;;13735:8;13745;13703:51;;;;;;;;;;;;;;;;13135:627;;;;;:::o;13770:161::-;13845:6;13883:12;-1:-1:-1;;;13872:9:0;;13864:32;;;;-1:-1:-1;;;13864:32:0;;;;;;;;;63:14570;;;;;;;;;;-1:-1:-1;63:14570:0;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:130;209:20;;234:33;209:20;234:33;;416:128;482:20;;507:32;482:20;507:32;;551:126;616:20;;641:31;616:20;641:31;;684:241;;788:2;776:9;767:7;763:23;759:32;756:2;;;804:1;801;794:12;756:2;839:1;856:53;901:7;881:9;856:53;;;846:63;750:175;-1:-1;;;;750:175;932:366;;;1053:2;1041:9;1032:7;1028:23;1024:32;1021:2;;;1069:1;1066;1059:12;1021:2;1104:1;1121:53;1166:7;1146:9;1121:53;;;1111:63;;1083:97;1211:2;1229:53;1274:7;1265:6;1254:9;1250:22;1229:53;;;1219:63;;1190:98;1015:283;;;;;;1305:491;;;;1443:2;1431:9;1422:7;1418:23;1414:32;1411:2;;;1459:1;1456;1449:12;1411:2;1494:1;1511:53;1556:7;1536:9;1511:53;;;1501:63;;1473:97;1601:2;1619:53;1664:7;1655:6;1644:9;1640:22;1619:53;;;1609:63;;1580:98;1709:2;1727:53;1772:7;1763:6;1752:9;1748:22;1727:53;;;1717:63;;1688:98;1405:391;;;;;;1803:991;;;;;;;;2007:3;1995:9;1986:7;1982:23;1978:33;1975:2;;;2024:1;2021;2014:12;1975:2;2059:1;2076:53;2121:7;2101:9;2076:53;;;2066:63;;2038:97;2166:2;2184:53;2229:7;2220:6;2209:9;2205:22;2184:53;;;2174:63;;2145:98;2274:2;2292:53;2337:7;2328:6;2317:9;2313:22;2292:53;;;2282:63;;2253:98;2382:2;2400:53;2445:7;2436:6;2425:9;2421:22;2400:53;;;2390:63;;2361:98;2490:3;2509:51;2552:7;2543:6;2532:9;2528:22;2509:51;;;2499:61;;2469:97;2597:3;2616:53;2661:7;2652:6;2641:9;2637:22;2616:53;;;2606:63;;2576:99;2706:3;2725:53;2770:7;2761:6;2750:9;2746:22;2725:53;;;2715:63;;2685:99;1969:825;;;;;;;;;;;2801:366;;;2922:2;2910:9;2901:7;2897:23;2893:32;2890:2;;;2938:1;2935;2928:12;2890:2;2973:1;2990:53;3035:7;3015:9;2990:53;;;2980:63;;2952:97;3080:2;3098:53;3143:7;3134:6;3123:9;3119:22;3098:53;;3174:865;;;;;;;3361:3;3349:9;3340:7;3336:23;3332:33;3329:2;;;3378:1;3375;3368:12;3329:2;3413:1;3430:53;3475:7;3455:9;3430:53;;;3420:63;;3392:97;3520:2;3538:53;3583:7;3574:6;3563:9;3559:22;3538:53;;;3528:63;;3499:98;3628:2;3646:53;3691:7;3682:6;3671:9;3667:22;3646:53;;;3636:63;;3607:98;3736:2;3754:51;3797:7;3788:6;3777:9;3773:22;3754:51;;;3744:61;;3715:96;3842:3;3861:53;3906:7;3897:6;3886:9;3882:22;3861:53;;;3851:63;;3821:99;3951:3;3970:53;4015:7;4006:6;3995:9;3991:22;3970:53;;;3960:63;;3930:99;3323:716;;;;;;;;;4046:364;;;4166:2;4154:9;4145:7;4141:23;4137:32;4134:2;;;4182:1;4179;4172:12;4134:2;4217:1;4234:53;4279:7;4259:9;4234:53;;;4224:63;;4196:97;4324:2;4342:52;4386:7;4377:6;4366:9;4362:22;4342:52;;4417:113;4500:24;4518:5;4500:24;;;4495:3;4488:37;4482:48;;;4537:104;4614:21;4629:5;4614:21;;4648:113;4731:24;4749:5;4731:24;;4768:152;4869:45;4889:24;4907:5;4889:24;;;4869:45;;4927:347;;5039:39;5072:5;5039:39;;;5090:71;5154:6;5149:3;5090:71;;;5083:78;;5166:52;5211:6;5206:3;5199:4;5192:5;5188:16;5166:52;;;5239:29;5261:6;5239:29;;;5230:39;;;;5019:255;-1:-1;;;5019:255;5628:398;;5806:84;5888:1;5883:3;5806:84;;;-1:-1;;;5903:87;;6018:1;6009:11;;5792:234;-1:-1;;5792:234;6035:332;;6195:67;6259:2;6254:3;6195:67;;;6295:34;6275:55;;6358:2;6349:12;;6181:186;-1:-1;;6181:186;6376:492;;6554:85;6636:2;6631:3;6554:85;;;6672:34;6652:55;;6741:34;6736:2;6727:12;;6720:56;-1:-1;;;6805:2;6796:12;;6789:42;6859:2;6850:12;;6540:328;-1:-1;;6540:328;6877:395;;7037:67;7101:2;7096:3;7037:67;;;7137:34;7117:55;;7206:28;7201:2;7192:12;;7185:50;7263:2;7254:12;;7023:249;-1:-1;;7023:249;7281:324;;7441:67;7505:2;7500:3;7441:67;;;7541:26;7521:47;;7596:2;7587:12;;7427:178;-1:-1;;7427:178;7614:393;;7774:67;7838:2;7833:3;7774:67;;;7874:34;7854:55;;7943:26;7938:2;7929:12;;7922:48;7998:2;7989:12;;7760:247;-1:-1;;7760:247;8016:477;;8194:85;8276:2;8271:3;8194:85;;;8312:34;8292:55;;8381:34;8376:2;8367:12;;8360:56;-1:-1;;;8445:2;8436:12;;8429:27;8484:2;8475:12;;8180:313;-1:-1;;8180:313;8502:374;;8662:67;8726:2;8721:3;8662:67;;;8762:34;8742:55;;-1:-1;;;8826:2;8817:12;;8810:29;8867:2;8858:12;;8648:228;-1:-1;;8648:228;8885:431;;9063:85;9145:2;9140:3;9063:85;;;9181:34;9161:55;;9250:28;9245:2;9236:12;;9229:50;9307:2;9298:12;;9049:267;-1:-1;;9049:267;9325:329;;9485:67;9549:2;9544:3;9485:67;;;9585:31;9565:52;;9645:2;9636:12;;9471:183;-1:-1;;9471:183;9663:329;;9823:67;9887:2;9882:3;9823:67;;;9923:31;9903:52;;9983:2;9974:12;;9809:183;-1:-1;;9809:183;10001:373;;10161:67;10225:2;10220:3;10161:67;;;10261:34;10241:55;;-1:-1;;;10325:2;10316:12;;10309:28;10365:2;10356:12;;10147:227;-1:-1;;10147:227;10383:373;;10543:67;10607:2;10602:3;10543:67;;;10643:34;10623:55;;-1:-1;;;10707:2;10698:12;;10691:28;10747:2;10738:12;;10529:227;-1:-1;;10529:227;10884:110;10965:23;10982:5;10965:23;;11001:107;11080:22;11096:5;11080:22;;11115:124;11197:36;11227:5;11197:36;;11246:110;11327:23;11344:5;11327:23;;11363:650;;11618:148;11762:3;11618:148;;;11611:155;;11777:75;11848:3;11839:6;11777:75;;;11874:2;11869:3;11865:12;11858:19;;11888:75;11959:3;11950:6;11888:75;;;-1:-1;11985:2;11976:12;;11599:414;-1:-1;;11599:414;12020:372;;12219:148;12363:3;12219:148;;12399:372;;12598:148;12742:3;12598:148;;12778:372;;12977:148;13121:3;12977:148;;13157:213;13275:2;13260:18;;13289:71;13264:9;13333:6;13289:71;;13377:201;13489:2;13474:18;;13503:65;13478:9;13541:6;13503:65;;13585:213;13703:2;13688:18;;13717:71;13692:9;13761:6;13717:71;;13805:771;14063:3;14048:19;;14078:71;14052:9;14122:6;14078:71;;;14160:72;14228:2;14217:9;14213:18;14204:6;14160:72;;;14243;14311:2;14300:9;14296:18;14287:6;14243:72;;;14326;14394:2;14383:9;14379:18;14370:6;14326:72;;;14409:73;14477:3;14466:9;14462:19;14453:6;14409:73;;;14493;14561:3;14550:9;14546:19;14537:6;14493:73;;;14034:542;;;;;;;;;;14583:547;14785:3;14770:19;;14800:71;14774:9;14844:6;14800:71;;;14882:72;14950:2;14939:9;14935:18;14926:6;14882:72;;;14965;15033:2;15022:9;15018:18;15009:6;14965:72;;;15048;15116:2;15105:9;15101:18;15092:6;15048:72;;;14756:374;;;;;;;;15137:547;15339:3;15324:19;;15354:71;15328:9;15398:6;15354:71;;;15436:72;15504:2;15493:9;15489:18;15480:6;15436:72;;;15519;15587:2;15576:9;15572:18;15563:6;15519:72;;;15602;15670:2;15659:9;15655:18;15646:6;15602:72;;15691:539;15889:3;15874:19;;15904:71;15878:9;15948:6;15904:71;;;15986:68;16050:2;16039:9;16035:18;16026:6;15986:68;;16237:293;16371:2;16385:47;;;16356:18;;16446:74;16356:18;16506:6;16446:74;;16845:407;17036:2;17050:47;;;17021:18;;17111:131;17021:18;17111:131;;17259:407;17450:2;17464:47;;;17435:18;;17525:131;17435:18;17525:131;;17673:407;17864:2;17878:47;;;17849:18;;17939:131;17849:18;17939:131;;18087:407;18278:2;18292:47;;;18263:18;;18353:131;18263:18;18353:131;;18501:407;18692:2;18706:47;;;18677:18;;18767:131;18677:18;18767:131;;18915:407;19106:2;19120:47;;;19091:18;;19181:131;19091:18;19181:131;;19329:407;19520:2;19534:47;;;19505:18;;19595:131;19505:18;19595:131;;19743:407;19934:2;19948:47;;;19919:18;;20009:131;19919:18;20009:131;;20157:407;20348:2;20362:47;;;20333:18;;20423:131;20333:18;20423:131;;20791:209;20907:2;20892:18;;20921:69;20896:9;20963:6;20921:69;;21007:316;21149:2;21134:18;;21163:69;21138:9;21205:6;21163:69;;;21243:70;21309:2;21298:9;21294:18;21285:6;21243:70;;21330:205;21444:2;21429:18;;21458:67;21433:9;21498:6;21458:67;;21542:211;21659:2;21644:18;;21673:70;21648:9;21716:6;21673:70;;21760:209;21876:2;21861:18;;21890:69;21865:9;21932:6;21890:69;;21976:320;22120:2;22105:18;;22134:70;22109:9;22177:6;22134:70;;;22215:71;22282:2;22271:9;22267:18;22258:6;22215:71;;22303:118;22387:12;;22358:63;22558:163;22661:19;;;22710:4;22701:14;;22654:67;22730:145;22866:3;22844:31;-1:-1;22844:31;22883:91;;22945:24;22963:5;22945:24;;22981:85;23047:13;23040:21;;23023:43;23073:72;23135:5;23118:27;23152:121;-1:-1;;;;;23214:54;;23197:76;23359:88;23431:10;23420:22;;23403:44;23454:81;23525:4;23514:16;;23497:38;23542:104;-1:-1;;;;;23603:38;;23586:60;23653:106;;23731:23;23748:5;23731:23;;23767:268;23832:1;23839:101;23853:6;23850:1;23847:13;23839:101;;;23920:11;;;23914:18;23901:11;;;23894:39;23875:2;23868:10;23839:101;;;23955:6;23952:1;23949:13;23946:2;;;-1:-1;;24020:1;24002:16;;23995:27;23816:219;24124:97;24212:2;24192:14;-1:-1;;24188:28;;24172:49;24229:117;24298:24;24316:5;24298:24;;;24291:5;24288:35;24278:2;;24337:1;24334;24327:12;24353:117;24422:24;24440:5;24422:24;;24601:115;24669:23;24686:5;24669:23;;24723:113;24790:22;24806:5;24790:22;

Swarm Source

bzzr://7dcb86189f95d2bc321fa82d0785d5ee7a7bfc4f3c5aec903156e16a52e89201
Loading