Contract 0x38747baf050d3c22315a761585868dba16abfd89

 
Txn Hash Method
Block
From
To
Value
0x476581724a65a0d0972f85c0b06ce1c6672f2f93d853335a4b84365f01de2447Enter123911832021-05-08 3:19:254 hrs 53 mins ago0x62898156796d73a26685b5a81775cb1a9f7c671b IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.00412555212548.000001459
0x74a8f832f5111cfd405a8fe8ede2d4e537552b7f1531403bdadd6f15eb8ba894Enter123889082021-05-07 18:54:2713 hrs 18 mins ago0xadfba4af4f40e17184a8ad63ea8b75a7839dcf03 IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.00473747571
0x779eedb1795ea3be2447d1e3ae14c2d904973bbb1fd11a78c9413177353e1e8dLeave123879352021-05-07 15:27:0516 hrs 45 mins ago0xab5e5048895d2fc1630fc0d86247cdc91547e6cb IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.007013292122
0x8ff11f4d579ee56ad9a1292e34fbd691ecfa3ba7e4298bf06021b63496027429Enter123869982021-05-07 11:57:3720 hrs 14 mins ago0x99527ee496a491b591d15ed7d8383753d6c88a08 IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.003103560
0x9ee0a5eef6623c51290bb68aca299f8b6d036d2f031494cd15a13dbedb7d7645Enter123857892021-05-07 7:21:581 day 50 mins ago0xcde8e097155e8e2503727a3cf57d43a6b45672ca IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.0042962550
0x24daef66a1782e5676140cb57a896934b31a93b786fb109bd9504ce7bec4426bLeave123806752021-05-06 12:13:461 day 19 hrs ago0xab5e5048895d2fc1630fc0d86247cdc91547e6cb IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.00355063849
0x9dbc5b8b4b4905a485724f80fec047efffc83ba864190daeed47a89005943deaEnter123805622021-05-06 11:48:061 day 20 hrs ago0x203abf2b49330456a4cd65a030ea21dfee781910 IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.00335201139
0x487ef68f783a51674efafdab8df4f65391b9e6cdc580ba7eceac95ef927052faEnter123804242021-05-06 11:19:341 day 20 hrs ago0xc433480907ed55525d476d505ef2e536163503e0 IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.00248395248
0x8dfe454bc4746fdd36a1a81d0f074d02efa0b60a7f0866dba9d53e1e79c0d444Enter123794842021-05-06 7:48:342 days 24 mins ago0x2cb18953434923af99f10ca7a960dd385e72f6b1 IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.0020699640
0x90fa2ce8c982e9962e2cd3b441f64e763db0de278897cf7eeae926415260d650Leave123762492021-05-05 19:53:262 days 12 hrs ago0xab5e5048895d2fc1630fc0d86247cdc91547e6cb IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.00528972673
0xd3b88b8b9ab95fe60497900fb9ad01b6116d9bbc6f77df45aa4d2b2f20a6a91bEnter123756392021-05-05 17:43:052 days 14 hrs ago0xda248cc10b477c1144219183ec87b0621dac37b3 IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.00315522561
0x92aa613797ff48e15161e8c4177ac6cd746bdef4e784eb30bc279eaa409aba77Leave123728762021-05-05 7:25:333 days 47 mins ago0x7c25bb0ac944691322849419df917c0acc1d379b IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.00149428237
0xc1926bb83db56667ea2bff66f1886ba3eeb7d23fbf692e379aac8fd38833033dEnter123726312021-05-05 6:32:133 days 1 hr ago0xcb4bb0e74705657cd1d2c3827b16c6e19925eb0d IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.00223467412526.000001459
0x8b8723197d09fc8c764cae878a8bd3dd402462e6014d6257ad0caf74c91e9634Enter123716552021-05-05 2:59:473 days 5 hrs ago0x4cbf2b73066a9dbc9600c87fcbd22623d7cb3950 IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.00273572541
0x77141adf75e02e623eefc8f1feeab09f4def1a1329b99f78c4fac1d7a0a3195bEnter123711572021-05-05 1:07:493 days 7 hrs ago0x834ad67c3f4a592d438fed7505126b5be348498b IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.003308112538.5
0xc41aff7788611aa15cb159da85085ff6a9387317c5a903c5f1c5235eb0d81ffdLeave123706662021-05-04 23:18:443 days 8 hrs ago0x2cb18953434923af99f10ca7a960dd385e72f6b1 IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.00376864852
0x9747b99db97ff4ae41ca8bb10db15c6c75a8c584b58d8f5df3a4b1dbc29f9652Swap123705942021-05-04 23:03:533 days 9 hrs ago0xe8256119a8621a6ba3c42e807b261840bde77944 IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.00674435467
0x977bc862ad37ef7befe58567649959ea6898d2fab593a1fdc7d88442dea1ed0cLeave123702422021-05-04 21:37:583 days 10 hrs ago0x9e406b2c2021966f3983e899643609c45e3bbffe IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.00293462729452.985001525
0xdeafb2f960ccb65e9bc3eda56fa8a6c5ace2d1fedc7f8ce7531125f9bb65c4fbEnter123698712021-05-04 20:18:563 days 11 hrs ago0xce1aac18ee472da6d90b68b6685df910046cb8ad IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.0042968550
0x9b0442275ea38fcbdd538c3f10e8924eeb0400447609f20e1b4401c62e58b4f5Leave123683172021-05-04 14:30:063 days 17 hrs ago0x1cbefae3e2bc352ce595769f833c6f67048a1054 IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.0028270270
0x5404e2cbfe88f66e3759ddf80e7fdf0ec7cdbdd516a91c2828ae8e92ce991ebdEnter123606082021-05-03 10:13:544 days 21 hrs ago0xeeb6faae3094b31859f6b7b34a183ae212e43cfb IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.00317966937
0xa8d07a3567543a42df8ddb7bf31b0a45bd330d918349ac5b74dfc04f10acb856Enter123593672021-05-03 5:37:375 days 2 hrs ago0x298f3c3487e87a1ce12100fb16e1f5589e350198 IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.00232062327
0x956c867403b81e732e2e3a52303961ac10c096fe756ef0ffb80b98d6a7a59d98Enter123573082021-05-02 21:56:375 days 10 hrs ago0xbb493af4075b2e1feabe1430a153494e60c0e15e IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.00378175644
0x78a599504c5c4684ff8a82e7108be78a61cd3a23a9bd3a68227b0f050450758eEnter123572662021-05-02 21:45:305 days 10 hrs ago0x3bfba2f477fb0fc367b7a6544f5d7f2e1cfa7cc8 IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.00369580743
0x4cc6efd3f1da99aac52539be8ed23dc36dee8dc6f0af864e2af1929e67561713Enter123571312021-05-02 21:13:235 days 10 hrs ago0x7df619853181f27534c61d5a702c49b4b7c49778 IN  0x38747baf050d3c22315a761585868dba16abfd890 Ether0.0025784730
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x9747b99db97ff4ae41ca8bb10db15c6c75a8c584b58d8f5df3a4b1dbc29f9652123705942021-05-04 23:03:533 days 9 hrs ago 0x38747baf050d3c22315a761585868dba16abfd89 Wrapped Ether1.275 Ether
0x645a6ab37aabf1770a20584eadf00277671593f1a75afac4c58374326514853a123705532021-05-04 22:52:153 days 9 hrs ago 0xea1d6b251268d1e264de6838f13bb9dfff10d09c 0x38747baf050d3c22315a761585868dba16abfd890.075 Ether
0x04f1ee4ca1f158cf3937c88d17d9d9432d4e9e4189e3c8bf4af626b3abbaf88e123702362021-05-04 21:36:283 days 10 hrs ago 0xea1d6b251268d1e264de6838f13bb9dfff10d09c 0x38747baf050d3c22315a761585868dba16abfd890.075 Ether
0xbcb4c15a691642b893ab8b864a65c1baf4b29a9b2d02deeb595b606e8796018d123702122021-05-04 21:32:053 days 10 hrs ago 0xea1d6b251268d1e264de6838f13bb9dfff10d09c 0x38747baf050d3c22315a761585868dba16abfd890.075 Ether
0xdf0e2083d9cd2d551c12499f41e010883ba8d43a5a3ef032a7d6984b5beed804123701332021-05-04 21:12:023 days 11 hrs ago 0xea1d6b251268d1e264de6838f13bb9dfff10d09c 0x38747baf050d3c22315a761585868dba16abfd890.075 Ether
0x9d6c8e0064f81d42a2511081c92825a6b92bf0998ea77e271a2f2258425fe40f123697692021-05-04 19:59:303 days 12 hrs ago 0xea1d6b251268d1e264de6838f13bb9dfff10d09c 0x38747baf050d3c22315a761585868dba16abfd890.075 Ether
0x09ef15e559f0edb08cc45237e78bc32edc3a6d12e9ffb84f7d582031bc4153ca123697432021-05-04 19:53:173 days 12 hrs ago 0xea1d6b251268d1e264de6838f13bb9dfff10d09c 0x38747baf050d3c22315a761585868dba16abfd890.075 Ether
0x487e47bb866ba89a3cca70741c4acd24f99dacfd040fef6428d6a6f852b72919123696962021-05-04 19:43:583 days 12 hrs ago 0xea1d6b251268d1e264de6838f13bb9dfff10d09c 0x38747baf050d3c22315a761585868dba16abfd890.075 Ether
0x184ed9c88b5be49d583594fa6dfa01205f71643b869cd94c6556af9348967e49123696912021-05-04 19:42:583 days 12 hrs ago 0xea1d6b251268d1e264de6838f13bb9dfff10d09c 0x38747baf050d3c22315a761585868dba16abfd890.075 Ether
0xf0890a0dfce4f8c803927ea2f4867cea6130eb0b8fec8d9d61f1cff4ed86b35a123696462021-05-04 19:33:183 days 12 hrs ago 0xea1d6b251268d1e264de6838f13bb9dfff10d09c 0x38747baf050d3c22315a761585868dba16abfd890.075 Ether
0x4d5b9d00e1805042bb4c4908719861967865c310d2d6591839f99747987a8b25123696082021-05-04 19:24:073 days 12 hrs ago 0xea1d6b251268d1e264de6838f13bb9dfff10d09c 0x38747baf050d3c22315a761585868dba16abfd890.075 Ether
0xe892b4e64e192585fb2c3aec513e6b9d66bb1817e5b6eaee6cf8567ce90bb2bc123695992021-05-04 19:22:013 days 12 hrs ago 0xea1d6b251268d1e264de6838f13bb9dfff10d09c 0x38747baf050d3c22315a761585868dba16abfd890.075 Ether
0xde8fcefffba2ab3825b2ba21b6d5a7c3987511c347711271dd2f4173230504c3123695652021-05-04 19:14:293 days 12 hrs ago 0xea1d6b251268d1e264de6838f13bb9dfff10d09c 0x38747baf050d3c22315a761585868dba16abfd890.075 Ether
0x732cfda22dc1581f9b90913af8ed3b84a9be22542cc3dd3f5241da7ad6ccfc9b123695592021-05-04 19:13:093 days 12 hrs ago 0xea1d6b251268d1e264de6838f13bb9dfff10d09c 0x38747baf050d3c22315a761585868dba16abfd890.075 Ether
0x3cc738f465f188f7cc70cd68bd56992f0fbeee25bcc90d50378756bed9d53f23123695552021-05-04 19:12:173 days 13 hrs ago 0xea1d6b251268d1e264de6838f13bb9dfff10d09c 0x38747baf050d3c22315a761585868dba16abfd890.075 Ether
0x970c9327649c1a115597c55e93e40c0302ba4d621e7bdaac4acefcfb9d5cc933123695322021-05-04 19:07:063 days 13 hrs ago 0xea1d6b251268d1e264de6838f13bb9dfff10d09c 0x38747baf050d3c22315a761585868dba16abfd890.075 Ether
0xa16595c9d666df2ad06d2ca61db0bcf9a9a3636186112575cbaadda1c8ea42a9123695262021-05-04 19:06:043 days 13 hrs ago 0xea1d6b251268d1e264de6838f13bb9dfff10d09c 0x38747baf050d3c22315a761585868dba16abfd890.075 Ether
0x49eebdea173b25b1e8e0a010aa6cfe5355bd902e8c668ca1fe446e091575c3fc123695102021-05-04 19:03:473 days 13 hrs ago 0xea1d6b251268d1e264de6838f13bb9dfff10d09c 0x38747baf050d3c22315a761585868dba16abfd890.075 Ether
0xab311d320a192f8cde98ab0a08f0a368d36859bbe6ee7f26d7058b487d7d9331123540852021-05-02 9:59:485 days 22 hrs ago 0x38747baf050d3c22315a761585868dba16abfd89 Wrapped Ether0.4875 Ether
0xa632d21213c53d522c9b30cbb387b6b5fe1b997d7f321955c55cd56dbf300298123438712021-04-30 20:08:187 days 12 hrs ago 0x854ae5f5c23a54e3ac3567ddc100a4b4b40d468b 0x38747baf050d3c22315a761585868dba16abfd890.1875 Ether
0xd12e513cb22acb3c199697dbb3615f85d8715a642ae3c00f7c5304718a5fd5ac123375302021-04-29 20:24:508 days 11 hrs ago 0x09404c89de5fbd2a52bc5962da1e3560b4abd208 0x38747baf050d3c22315a761585868dba16abfd890.3 Ether
0xe06e7cf60c7755b0266eafb5b939e50c0cea8ec136b3347901e7a6af731ca468123343702021-04-29 8:45:168 days 23 hrs ago 0x38747baf050d3c22315a761585868dba16abfd89 Wrapped Ether0.675 Ether
0x7058f53bdcb9e906d195f0d1893ad7a2d17e549d1b26af75aa6161beadf0642e123310272021-04-28 20:11:519 days 12 hrs ago 0x05f48e16f03aff296e5f309e8acc5a019d5a14e5 0x38747baf050d3c22315a761585868dba16abfd890.525 Ether
0x68094ec774b215bad4e6cb9517f0168274e93f3236f55fc89429ca4358ce208d123163582021-04-26 14:01:5311 days 18 hrs ago 0x4a25e18076ddcfd646ed14abc07286c2a4c1256a 0x38747baf050d3c22315a761585868dba16abfd890.15 Ether
0xfd524f2164b389cc23d8181661399b09faf12c7ef0046230db735eb7b0e2ca4c122929472021-04-22 23:18:3615 days 8 hrs ago 0x38747baf050d3c22315a761585868dba16abfd89 Wrapped Ether5.291 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SeenHaus

Compiler Version
v0.8.3+commit.8d00100c

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-04-13
*/

// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract GovERC20 {
    /// @notice EIP-20 token name for this token
    string public constant name = "SeenHaus Governance";

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

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

    uint public totalSupply;

    mapping (address => mapping (address => uint96)) internal allowances;

    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 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 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 == type(uint256).max) {
            amount = type(uint96).max;
        } else {
            amount = safe96(rawAmount, "Comp::approve: amount exceeds 96 bits");
        }

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

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

    /**
     * @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, "Comp::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, "Comp::approve: amount exceeds 96 bits");

        if (spender != src && spenderAllowance != type(uint96).max) {
            uint96 newAllowance = sub96(spenderAllowance, amount, "Comp::transferFrom: transfer amount exceeds spender allowance");
            allowances[src][spender] = newAllowance;

            emit Approval(src, spender, newAllowance);
        }

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

    function _mint(address account, uint amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0));

        totalSupply += amount;
        balances[account] += uint96(amount);
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account);

        require(balances[account] >= uint96(amount), "ERC20: burn amount exceeds balance");
        balances[account] -= uint96(amount);
        totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

    /**
     * @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), "Comp::delegateBySig: invalid signature");
        require(nonce == nonces[signatory]++, "Comp::delegateBySig: invalid nonce");
        require(block.timestamp <= expiry, "Comp::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, "Comp::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), "Comp::_transferTokens: cannot transfer from the zero address");
        require(dst != address(0), "Comp::_transferTokens: cannot transfer to the zero address");

        _beforeTokenTransfer(src);

        balances[src] = sub96(balances[src], amount, "Comp::_transferTokens: transfer amount exceeds balance");
        balances[dst] = add96(balances[dst], amount, "Comp::_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, "Comp::_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, "Comp::_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, "Comp::_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 view returns (uint) {
        uint256 chainId;
        assembly { chainId := chainid() }
        return chainId;
    }

    function _beforeTokenTransfer(address from) internal virtual { }
}

interface IWETH {
    function deposit() external payable;
}

interface Sushiswap {
    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);
}

contract SeenHaus is GovERC20(){
    address public constant weth = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address public constant sushiswap = 0xd9e1cE17f2641f24aE83637ab66a2cca9C378B9F;
    IERC20 public constant seen = IERC20(0xCa3FE04C7Ee111F0bbb02C328c699226aCf9Fd33);

    // accounts balances are locked for 3 days after entering 
    mapping(address => uint256) locked;

    constructor() {
        IERC20(weth).approve(sushiswap, type(uint256).max);
    }

    function _beforeTokenTransfer(address from) internal view override {
        require(locked[from] <= block.timestamp, "transfer:too soon after minting");
    }

    // Enter the haus. Pay some SEENs. Earn some shares.
    function enter(uint256 _amount) public {
        uint256 totalSeen = seen.balanceOf(address(this));
        uint256 totalShares = totalSupply;

        locked[msg.sender] = block.timestamp + 3 days;

        if (totalShares == 0 || totalSeen == 0) {
            _mint(msg.sender, _amount);
        } else {
            uint256 what = _amount * totalShares / totalSeen;
            _mint(msg.sender, what);
        }
        seen.transferFrom(msg.sender, address(this), _amount);
    }

    // Leave the haus. Claim back your SEENs.
    function leave(uint256 _share) public {
        uint256 totalShares = totalSupply;
        uint256 what = _share * seen.balanceOf(address(this)) / totalShares;
        _burn(msg.sender, _share);
        seen.transfer(msg.sender, what);
    }

    function swap() public {
        IWETH(weth).deposit{value: address(this).balance}();
        uint256 amountIn = IERC20(weth).balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = weth;
        path[1] = address(seen);

        Sushiswap(sushiswap).swapExactTokensForTokens(
            amountIn,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    receive() external payable {}

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"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"},{"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":[{"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":"account","type":"address"}],"name":"balanceOf","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":"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":"uint256","name":"_amount","type":"uint256"}],"name":"enter","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"_share","type":"uint256"}],"name":"leave","outputs":[],"stateMutability":"nonpayable","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":"seen","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sushiswap","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swap","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"},{"inputs":[],"name":"weth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663095ea7b373d9e1ce17f2641f24ae83637ab66a2cca9c378b9f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016200009792919062000159565b602060405180830381600087803b158015620000b257600080fd5b505af1158015620000c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ed91906200010b565b50620001ea565b6000815190506200010581620001d0565b92915050565b6000602082840312156200011e57600080fd5b60006200012e84828501620000f4565b91505092915050565b620001428162000186565b82525050565b6200015381620001c6565b82525050565b600060408201905062000170600083018562000137565b6200017f602083018462000148565b9392505050565b60006200019382620001a6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b620001db816200019a565b8114620001e757600080fd5b50565b61430780620001fa6000396000f3fe60806040526004361061016a5760003560e01c8063782d6fe1116100d1578063a9059cbb1161008a578063d99aa8e211610064578063d99aa8e214610583578063dd62ed3e146105ae578063e7a324dc146105eb578063f1127ed81461061657610171565b8063a9059cbb146104e0578063b4b5ea571461051d578063c3cda5201461055a57610171565b8063782d6fe1146103d05780637ecebe001461040d5780638119c0651461044a57806395d89b41146104615780639be287851461048c578063a59f3e0c146104b757610171565b80633fc8cef3116101235780633fc8cef31461029c578063587cde1e146102c75780635c19a95c1461030457806367dfd4c91461032d5780636fcfff451461035657806370a082311461039357610171565b806306fdde0314610176578063095ea7b3146101a157806318160ddd146101de57806320606b701461020957806323b872dd14610234578063313ce5671461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b610654565b604051610198919061364f565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612fd4565b61068d565b6040516101d5919061352f565b60405180910390f35b3480156101ea57600080fd5b506101f361080c565b60405161020091906137b1565b60405180910390f35b34801561021557600080fd5b5061021e610812565b60405161022b919061354a565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190612f85565b610836565b604051610268919061352f565b60405180910390f35b34801561027d57600080fd5b50610286610aaa565b604051610293919061386a565b60405180910390f35b3480156102a857600080fd5b506102b1610aaf565b6040516102be91906134b4565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e99190612f20565b610ac7565b6040516102fb91906134b4565b60405180910390f35b34801561031057600080fd5b5061032b60048036038101906103269190612f20565b610afa565b005b34801561033957600080fd5b50610354600480360381019061034f919061313f565b610b07565b005b34801561036257600080fd5b5061037d60048036038101906103789190612f20565b610c75565b60405161038a9190613826565b60405180910390f35b34801561039f57600080fd5b506103ba60048036038101906103b59190612f20565b610c98565b6040516103c791906137b1565b60405180910390f35b3480156103dc57600080fd5b506103f760048036038101906103f29190612fd4565b610d07565b60405161040491906138a0565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f9190612f20565b611142565b60405161044191906137b1565b60405180910390f35b34801561045657600080fd5b5061045f61115a565b005b34801561046d57600080fd5b506104766114a8565b604051610483919061364f565b60405180910390f35b34801561049857600080fd5b506104a16114e1565b6040516104ae91906134b4565b60405180910390f35b3480156104c357600080fd5b506104de60048036038101906104d9919061313f565b6114f9565b005b3480156104ec57600080fd5b5061050760048036038101906105029190612fd4565b6116e5565b604051610514919061352f565b60405180910390f35b34801561052957600080fd5b50610544600480360381019061053f9190612f20565b611722565b60405161055191906138a0565b60405180910390f35b34801561056657600080fd5b50610581600480360381019061057c9190613010565b611819565b005b34801561058f57600080fd5b50610598611adc565b6040516105a59190613634565b60405180910390f35b3480156105ba57600080fd5b506105d560048036038101906105d09190612f49565b611af4565b6040516105e291906137b1565b60405180910390f35b3480156105f757600080fd5b50610600611ba1565b60405161060d919061354a565b60405180910390f35b34801561062257600080fd5b5061063d60048036038101906106389190613099565b611bc5565b60405161064b929190613841565b60405180910390f35b6040518060400160405280601381526020017f5365656e4861757320476f7665726e616e63650000000000000000000000000081525081565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8314156106cc576bffffffffffffffffffffffff90506106f1565b6106ee8360405180606001604052806025815260200161419760259139611c1e565b90505b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107f99190613885565b60405180910390a3600191505092915050565b60005481565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6000803390506000600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16905060006108f98560405180606001604052806025815260200161419760259139611c1e565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561095357506bffffffffffffffffffffffff8016826bffffffffffffffffffffffff1614155b15610a9157600061097d83836040518060600160405280603d815260200161426e603d9139611c7c565b905080600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a879190613885565b60405180910390a3505b610a9c878783611cf6565b600193505050509392505050565b601281565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b0433826120e0565b50565b60008054905060008173ca3fe04c7ee111f0bbb02c328c699226acf9fd3373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b5d91906134b4565b60206040518083038186803b158015610b7557600080fd5b505afa158015610b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bad9190613168565b84610bb89190613ac9565b610bc29190613a67565b9050610bce33846122a0565b73ca3fe04c7ee111f0bbb02c328c699226acf9fd3373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610c1d929190613506565b602060405180830381600087803b158015610c3757600080fd5b505af1158015610c4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6f9190613116565b50505050565b60056020528060005260406000206000915054906101000a900463ffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050919050565b6000438210610d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d42906136d1565b60405180910390fd5b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161415610db857600091505061113c565b82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184610e079190613b57565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff1611610ecc57600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600183610e8e9190613b57565b63ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff1691505061113c565b82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161115610f4d57600091505061113c565b600080600183610f5d9190613b57565b90505b8163ffffffff168163ffffffff1611156110be57600060028383610f849190613b57565b610f8e9190613a98565b82610f999190613b57565b90506000600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905086816000015163ffffffff16141561108d5780602001519550505050505061113c565b86816000015163ffffffff1610156110a7578193506110b7565b6001826110b49190613b57565b92505b5050610f60565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff1693505050505b92915050565b60066020528060005260406000206000915090505481565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0476040518263ffffffff1660e01b81526004016000604051808303818588803b1580156111b657600080fd5b505af11580156111ca573d6000803e3d6000fd5b5050505050600073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161121e91906134b4565b60206040518083038186803b15801561123657600080fd5b505afa15801561124a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126e9190613168565b90506000600267ffffffffffffffff8111156112b3577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156112e15781602001602082028036833780820191505090505b50905073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600081518110611333577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073ca3fe04c7ee111f0bbb02c328c699226acf9fd33816001815181106113bc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073d9e1ce17f2641f24ae83637ab66a2cca9c378b9f73ffffffffffffffffffffffffffffffffffffffff166338ed17398360008430426040518663ffffffff1660e01b815260040161144c9594939291906137cc565b600060405180830381600087803b15801561146657600080fd5b505af115801561147a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906114a391906130d5565b505050565b6040518060400160405280600581526020017f785345454e00000000000000000000000000000000000000000000000000000081525081565b73d9e1ce17f2641f24ae83637ab66a2cca9c378b9f81565b600073ca3fe04c7ee111f0bbb02c328c699226acf9fd3373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161154891906134b4565b60206040518083038186803b15801561156057600080fd5b505afa158015611574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115989190613168565b90506000805490506203f480426115af9190613995565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008114806116015750600082145b156116155761161033846124e5565b61163c565b60008282856116249190613ac9565b61162e9190613a67565b905061163a33826124e5565b505b73ca3fe04c7ee111f0bbb02c328c699226acf9fd3373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b815260040161168d939291906134cf565b602060405180830381600087803b1580156116a757600080fd5b505af11580156116bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116df9190613116565b50505050565b60008061170a836040518060600160405280602681526020016141bc60269139611c1e565b9050611717338583611cf6565b600191505092915050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161161178c576000611811565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001836117da9190613b57565b63ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b915050919050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8666040518060400160405280601381526020017f5365656e4861757320476f7665726e616e63650000000000000000000000000081525080519060200120611881612675565b3060405160200161189594939291906135aa565b60405160208183030381529060405280519060200120905060007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf8888886040516020016118e69493929190613565565b6040516020818303038152906040528051906020012090506000828260405160200161191392919061347d565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161195094939291906135ef565b6020604051602081039080840390855afa158015611972573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e590613691565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611a3e90613cf2565b919050558914611a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7a906136f1565b60405180910390fd5b87421115611ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abd906136b1565b60405180910390fd5b611ad0818b6120e0565b50505050505050505050565b73ca3fe04c7ee111f0bbb02c328c699226acf9fd3381565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16905092915050565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6004602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060000160049054906101000a90046bffffffffffffffffffffffff16905082565b60006c0100000000000000000000000083108290611c72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c69919061364f565b60405180910390fd5b5082905092915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290611ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd7919061364f565b60405180910390fd5b508284611ced9190613b8b565b90509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5d90613751565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcd90613711565b60405180910390fd5b611ddf83612682565b611e59600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff168260405180606001604052806036815260200161416160369139611c7c565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550611f40600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff168260405180606001604052806030815260200161423e60309139612707565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161200a9190613885565b60405180910390a36120db600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612786565b505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16905082600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a461229a828483612786565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612310576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230790613771565b60405180910390fd5b61231982612682565b806bffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1610156123cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c690613671565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282829054906101000a90046bffffffffffffffffffffffff166124359190613b8b565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550806000808282546124749190613b23565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124d991906137b1565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254c90613791565b60405180910390fd5b61255f6000612682565b806000808282546125709190613995565b9250508190555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282829054906101000a90046bffffffffffffffffffffffff166125dd9190613a25565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161266991906137b1565b60405180910390a35050565b6000804690508091505090565b42600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fb90613731565b60405180910390fd5b50565b60008083856127169190613a25565b9050846bffffffffffffffffffffffff16816bffffffffffffffffffffffff161015839061277a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612771919061364f565b60405180910390fd5b50809150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156127d057506000816bffffffffffffffffffffffff16115b15612a8e57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612931576000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116128735760006128f8565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001846128c19190613b57565b63ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b9050600061291f828560405180606001604052806028815260200161421660289139611c7c565b905061292d86848484612a93565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612a8d576000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116129cf576000612a54565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184612a1d9190613b57565b63ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b90506000612a7b82856040518060600160405280602781526020016142ab60279139612707565b9050612a8985848484612a93565b5050505b5b505050565b6000612ab7436040518060600160405280603481526020016141e260349139612da1565b905060008463ffffffff16118015612b5557508063ffffffff16600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600187612b1f9190613b57565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b15612bf95781600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600187612ba99190613b57565b63ffffffff1663ffffffff16815260200190815260200160002060000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550612d4a565b60405180604001604052808263ffffffff168152602001836bffffffffffffffffffffffff16815250600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550905050600184612cec91906139eb565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051612d929291906138bb565b60405180910390a25050505050565b600064010000000083108290612ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de4919061364f565b60405180910390fd5b5082905092915050565b6000612e0a612e0584613909565b6138e4565b90508083825260208201905082856020860282011115612e2957600080fd5b60005b85811015612e595781612e3f8882612ee1565b845260208401935060208301925050600181019050612e2c565b5050509392505050565b600081359050612e72816140d6565b92915050565b600082601f830112612e8957600080fd5b8151612e99848260208601612df7565b91505092915050565b600081519050612eb1816140ed565b92915050565b600081359050612ec681614104565b92915050565b600081359050612edb8161411b565b92915050565b600081519050612ef08161411b565b92915050565b600081359050612f0581614132565b92915050565b600081359050612f1a81614149565b92915050565b600060208284031215612f3257600080fd5b6000612f4084828501612e63565b91505092915050565b60008060408385031215612f5c57600080fd5b6000612f6a85828601612e63565b9250506020612f7b85828601612e63565b9150509250929050565b600080600060608486031215612f9a57600080fd5b6000612fa886828701612e63565b9350506020612fb986828701612e63565b9250506040612fca86828701612ecc565b9150509250925092565b60008060408385031215612fe757600080fd5b6000612ff585828601612e63565b925050602061300685828601612ecc565b9150509250929050565b60008060008060008060c0878903121561302957600080fd5b600061303789828a01612e63565b965050602061304889828a01612ecc565b955050604061305989828a01612ecc565b945050606061306a89828a01612f0b565b935050608061307b89828a01612eb7565b92505060a061308c89828a01612eb7565b9150509295509295509295565b600080604083850312156130ac57600080fd5b60006130ba85828601612e63565b92505060206130cb85828601612ef6565b9150509250929050565b6000602082840312156130e757600080fd5b600082015167ffffffffffffffff81111561310157600080fd5b61310d84828501612e78565b91505092915050565b60006020828403121561312857600080fd5b600061313684828501612ea2565b91505092915050565b60006020828403121561315157600080fd5b600061315f84828501612ecc565b91505092915050565b60006020828403121561317a57600080fd5b600061318884828501612ee1565b91505092915050565b600061319d83836131a9565b60208301905092915050565b6131b281613bbf565b82525050565b6131c181613bbf565b82525050565b60006131d282613945565b6131dc8185613968565b93506131e783613935565b8060005b838110156132185781516131ff8882613191565b975061320a8361395b565b9250506001810190506131eb565b5085935050505092915050565b61322e81613bd1565b82525050565b61323d81613bdd565b82525050565b61325461324f82613bdd565b613d3b565b82525050565b61326381613c46565b82525050565b61327281613c6a565b82525050565b600061328382613950565b61328d8185613979565b935061329d818560208601613c8e565b6132a681613dd2565b840191505092915050565b60006132be602283613979565b91506132c982613de3565b604082019050919050565b60006132e1602683613979565b91506132ec82613e32565b604082019050919050565b6000613304602683613979565b915061330f82613e81565b604082019050919050565b600061332760028361398a565b915061333282613ed0565b600282019050919050565b600061334a602783613979565b915061335582613ef9565b604082019050919050565b600061336d602283613979565b915061337882613f48565b604082019050919050565b6000613390603a83613979565b915061339b82613f97565b604082019050919050565b60006133b3601f83613979565b91506133be82613fe6565b602082019050919050565b60006133d6603c83613979565b91506133e18261400f565b604082019050919050565b60006133f9602183613979565b91506134048261405e565b604082019050919050565b600061341c601f83613979565b9150613427826140ad565b602082019050919050565b61343b81613c07565b82525050565b61344a81613c11565b82525050565b61345981613c21565b82525050565b61346881613c7c565b82525050565b61347781613c2e565b82525050565b60006134888261331a565b91506134948285613243565b6020820191506134a48284613243565b6020820191508190509392505050565b60006020820190506134c960008301846131b8565b92915050565b60006060820190506134e460008301866131b8565b6134f160208301856131b8565b6134fe6040830184613432565b949350505050565b600060408201905061351b60008301856131b8565b6135286020830184613432565b9392505050565b60006020820190506135446000830184613225565b92915050565b600060208201905061355f6000830184613234565b92915050565b600060808201905061357a6000830187613234565b61358760208301866131b8565b6135946040830185613432565b6135a16060830184613432565b95945050505050565b60006080820190506135bf6000830187613234565b6135cc6020830186613234565b6135d96040830185613432565b6135e660608301846131b8565b95945050505050565b60006080820190506136046000830187613234565b6136116020830186613450565b61361e6040830185613234565b61362b6060830184613234565b95945050505050565b6000602082019050613649600083018461325a565b92915050565b600060208201905081810360008301526136698184613278565b905092915050565b6000602082019050818103600083015261368a816132b1565b9050919050565b600060208201905081810360008301526136aa816132d4565b9050919050565b600060208201905081810360008301526136ca816132f7565b9050919050565b600060208201905081810360008301526136ea8161333d565b9050919050565b6000602082019050818103600083015261370a81613360565b9050919050565b6000602082019050818103600083015261372a81613383565b9050919050565b6000602082019050818103600083015261374a816133a6565b9050919050565b6000602082019050818103600083015261376a816133c9565b9050919050565b6000602082019050818103600083015261378a816133ec565b9050919050565b600060208201905081810360008301526137aa8161340f565b9050919050565b60006020820190506137c66000830184613432565b92915050565b600060a0820190506137e16000830188613432565b6137ee6020830187613269565b818103604083015261380081866131c7565b905061380f60608301856131b8565b61381c6080830184613432565b9695505050505050565b600060208201905061383b6000830184613441565b92915050565b60006040820190506138566000830185613441565b613863602083018461346e565b9392505050565b600060208201905061387f6000830184613450565b92915050565b600060208201905061389a600083018461345f565b92915050565b60006020820190506138b5600083018461346e565b92915050565b60006040820190506138d0600083018561345f565b6138dd602083018461345f565b9392505050565b60006138ee6138ff565b90506138fa8282613cc1565b919050565b6000604051905090565b600067ffffffffffffffff82111561392457613923613da3565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006139a082613c07565b91506139ab83613c07565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156139e0576139df613d45565b5b828201905092915050565b60006139f682613c11565b9150613a0183613c11565b92508263ffffffff03821115613a1a57613a19613d45565b5b828201905092915050565b6000613a3082613c2e565b9150613a3b83613c2e565b9250826bffffffffffffffffffffffff03821115613a5c57613a5b613d45565b5b828201905092915050565b6000613a7282613c07565b9150613a7d83613c07565b925082613a8d57613a8c613d74565b5b828204905092915050565b6000613aa382613c11565b9150613aae83613c11565b925082613abe57613abd613d74565b5b828204905092915050565b6000613ad482613c07565b9150613adf83613c07565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b1857613b17613d45565b5b828202905092915050565b6000613b2e82613c07565b9150613b3983613c07565b925082821015613b4c57613b4b613d45565b5b828203905092915050565b6000613b6282613c11565b9150613b6d83613c11565b925082821015613b8057613b7f613d45565b5b828203905092915050565b6000613b9682613c2e565b9150613ba183613c2e565b925082821015613bb457613bb3613d45565b5b828203905092915050565b6000613bca82613be7565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006bffffffffffffffffffffffff82169050919050565b6000613c5182613c58565b9050919050565b6000613c6382613be7565b9050919050565b6000613c7582613c07565b9050919050565b6000613c8782613c2e565b9050919050565b60005b83811015613cac578082015181840152602081019050613c91565b83811115613cbb576000848401525b50505050565b613cca82613dd2565b810181811067ffffffffffffffff82111715613ce957613ce8613da3565b5b80604052505050565b6000613cfd82613c07565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613d3057613d2f613d45565b5b600182019050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f436f6d703a3a64656c656761746542795369673a20696e76616c69642073696760008201527f6e61747572650000000000000000000000000000000000000000000000000000602082015250565b7f436f6d703a3a64656c656761746542795369673a207369676e6174757265206560008201527f7870697265640000000000000000000000000000000000000000000000000000602082015250565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b7f436f6d703a3a6765745072696f72566f7465733a206e6f74207965742064657460008201527f65726d696e656400000000000000000000000000000000000000000000000000602082015250565b7f436f6d703a3a64656c656761746542795369673a20696e76616c6964206e6f6e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f436f6d703a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747260008201527f616e7366657220746f20746865207a65726f2061646472657373000000000000602082015250565b7f7472616e736665723a746f6f20736f6f6e206166746572206d696e74696e6700600082015250565b7f436f6d703a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747260008201527f616e736665722066726f6d20746865207a65726f206164647265737300000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6140df81613bbf565b81146140ea57600080fd5b50565b6140f681613bd1565b811461410157600080fd5b50565b61410d81613bdd565b811461411857600080fd5b50565b61412481613c07565b811461412f57600080fd5b50565b61413b81613c11565b811461414657600080fd5b50565b61415281613c21565b811461415d57600080fd5b5056fe436f6d703a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365436f6d703a3a617070726f76653a20616d6f756e7420657863656564732039362062697473436f6d703a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473436f6d703a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473436f6d703a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773436f6d703a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773436f6d703a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365436f6d703a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773a2646970667358221220158ffbe380f6baef2174aef1b3e5e53f4705f75083f8966d20c9e069e876211664736f6c63430008030033

Deployed ByteCode Sourcemap

16356:2022:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2861:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5907:434;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3119:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3884:122;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7464:678;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3075:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16394:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3334:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9048:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17625:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3762:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6544:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11239:1218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4298:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17879:457;;;;;;;;;;;;;:::i;:::-;;2973:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16474:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17073:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6916:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10586:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9584:801;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16559:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5293:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4100:117;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3623:70;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;2861:51;;;;;;;;;;;;;;;;;;;:::o;5907:434::-;5975:4;5992:13;6033:17;6020:9;:30;6016:188;;;6076:16;6067:25;;6016:188;;;6134:58;6141:9;6134:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;6125:67;;6016:188;6250:6;6216:10;:22;6227:10;6216:22;;;;;;;;;;;;;;;:31;6239:7;6216:31;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;6295:7;6274:37;;6283:10;6274:37;;;6304:6;6274:37;;;;;;:::i;:::-;;;;;;;;6329:4;6322:11;;;5907:434;;;;:::o;3119:23::-;;;;:::o;3884:122::-;3926:80;3884:122;:::o;7464:678::-;7546:4;7563:15;7581:10;7563:28;;7602:23;7628:10;:15;7639:3;7628:15;;;;;;;;;;;;;;;:24;7644:7;7628:24;;;;;;;;;;;;;;;;;;;;;;;;;7602:50;;7663:13;7679:58;7686:9;7679:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;7663:74;;7765:3;7754:14;;:7;:14;;;;:54;;;;;7792:16;7772:36;;:16;:36;;;;7754:54;7750:317;;;7825:19;7847:96;7853:16;7871:6;7847:96;;;;;;;;;;;;;;;;;:5;:96::i;:::-;7825:118;;7985:12;7958:10;:15;7969:3;7958:15;;;;;;;;;;;;;;;:24;7974:7;7958:24;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;8033:7;8019:36;;8028:3;8019:36;;;8042:12;8019:36;;;;;;:::i;:::-;;;;;;;;7750:317;;8079:33;8095:3;8100;8105:6;8079:15;:33::i;:::-;8130:4;8123:11;;;;;7464:678;;;;;:::o;3075:35::-;3108:2;3075:35;:::o;16394:73::-;16425:42;16394:73;:::o;3334:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;9048:102::-;9110:32;9120:10;9132:9;9110;:32::i;:::-;9048:102;:::o;17625:246::-;17674:19;17696:11;;17674:33;;17718:12;17774:11;16596:42;17742:14;;;17765:4;17742:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17733:6;:38;;;;:::i;:::-;:52;;;;:::i;:::-;17718:67;;17796:25;17802:10;17814:6;17796:5;:25::i;:::-;16596:42;17832:13;;;17846:10;17858:4;17832:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17625:246;;;:::o;3762:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;6544:108::-;6603:4;6627:8;:17;6636:7;6627:17;;;;;;;;;;;;;;;;;;;;;;;;;6620:24;;;;6544:108;;;:::o;11239:1218::-;11318:6;11359:12;11345:11;:26;11337:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;11428:19;11450:14;:23;11465:7;11450:23;;;;;;;;;;;;;;;;;;;;;;;;;11428:45;;11504:1;11488:12;:17;;;11484:58;;;11529:1;11522:8;;;;;11484:58;11654:11;11602;:20;11614:7;11602:20;;;;;;;;;;;;;;;:38;11638:1;11623:12;:16;;;;:::i;:::-;11602:38;;;;;;;;;;;;;;;:48;;;;;;;;;;;;:63;;;11598:147;;11689:11;:20;11701:7;11689:20;;;;;;;;;;;;;;;:38;11725:1;11710:12;:16;;;;:::i;:::-;11689:38;;;;;;;;;;;;;;;:44;;;;;;;;;;;;11682:51;;;;;11598:147;11842:11;11806;:20;11818:7;11806:20;;;;;;;;;;;;;;;:23;11827:1;11806:23;;;;;;;;;;;;;:33;;;;;;;;;;;;:47;;;11802:88;;;11877:1;11870:8;;;;;11802:88;11902:12;11929;11959:1;11944:12;:16;;;;:::i;:::-;11929:31;;11971:428;11986:5;11978:13;;:5;:13;;;11971:428;;;12008:13;12050:1;12041:5;12033;:13;;;;:::i;:::-;12032:19;;;;:::i;:::-;12024:5;:27;;;;:::i;:::-;12008:43;;12093:20;12116:11;:20;12128:7;12116:20;;;;;;;;;;;;;;;:28;12137:6;12116:28;;;;;;;;;;;;;;;12093:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12179:11;12163:2;:12;;;:27;;;12159:229;;;12218:2;:8;;;12211:15;;;;;;;;;12159:229;12267:11;12252:2;:12;;;:26;;;12248:140;;;12307:6;12299:14;;12248:140;;;12371:1;12362:6;:10;;;;:::i;:::-;12354:18;;12248:140;11971:428;;;;;12416:11;:20;12428:7;12416:20;;;;;;;;;;;;;;;:27;12437:5;12416:27;;;;;;;;;;;;;;;:33;;;;;;;;;;;;12409:40;;;;;11239:1218;;;;;:::o;4298:39::-;;;;;;;;;;;;;;;;;:::o;17879:457::-;16425:42;17913:19;;;17940:21;17913:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17975:16;16425:42;17994:22;;;18025:4;17994:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17975:56;;18044:21;18082:1;18068:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18044:40;;16425:42;18095:4;18100:1;18095:7;;;;;;;;;;;;;;;;;;;;;:14;;;;;;;;;;;16596:42;18120:4;18125:1;18120:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;16510:42;18156:45;;;18216:8;18239:1;18255:4;18282;18302:15;18156:172;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17879:457;;:::o;2973:39::-;;;;;;;;;;;;;;;;;;;:::o;16474:78::-;16510:42;16474:78;:::o;17073:497::-;17123:17;16596:42;17143:14;;;17166:4;17143:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17123:49;;17183:19;17205:11;;17183:33;;17268:6;17250:15;:24;;;;:::i;:::-;17229:6;:18;17236:10;17229:18;;;;;;;;;;;;;;;:45;;;;17306:1;17291:11;:16;:34;;;;17324:1;17311:9;:14;17291:34;17287:212;;;17342:26;17348:10;17360:7;17342:5;:26::i;:::-;17287:212;;;17401:12;17440:9;17426:11;17416:7;:21;;;;:::i;:::-;:33;;;;:::i;:::-;17401:48;;17464:23;17470:10;17482:4;17464:5;:23::i;:::-;17287:212;;16596:42;17509:17;;;17527:10;17547:4;17554:7;17509:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17073:497;;;:::o;6916:238::-;6981:4;6998:13;7014:59;7021:9;7014:59;;;;;;;;;;;;;;;;;:6;:59::i;:::-;6998:75;;7084:40;7100:10;7112:3;7117:6;7084:15;:40::i;:::-;7142:4;7135:11;;;6916:238;;;;:::o;10586:222::-;10651:6;10670:19;10692:14;:23;10707:7;10692:23;;;;;;;;;;;;;;;;;;;;;;;;;10670:45;;10748:1;10733:12;:16;;;:67;;10799:1;10733:67;;;10752:11;:20;10764:7;10752:20;;;;;;;;;;;;;;;:38;10788:1;10773:12;:16;;;;:::i;:::-;10752:38;;;;;;;;;;;;;;;:44;;;;;;;;;;;;10733:67;10726:74;;;10586:222;;;:::o;9584:801::-;9700:23;3926:80;9780:4;;;;;;;;;;;;;;;;;9764:22;;;;;;9788:12;:10;:12::i;:::-;9810:4;9736:80;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;9726:91;;;;;;9700:117;;9828:18;4146:71;9891:9;9902:5;9909:6;9859:57;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;9849:68;;;;;;9828:89;;9928:14;9984:15;10001:10;9955:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;9945:68;;;;;;9928:85;;10024:17;10044:26;10054:6;10062:1;10065;10068;10044:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10024:46;;10110:1;10089:23;;:9;:23;;;;10081:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;10183:6;:17;10190:9;10183:17;;;;;;;;;;;;;;;;:19;;;;;;;;;:::i;:::-;;;;;10174:5;:28;10166:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;10279:6;10260:15;:25;;10252:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;10346:31;10356:9;10367;10346;:31::i;:::-;10339:38;;;;9584:801;;;;;;:::o;16559:80::-;16596:42;16559:80;:::o;5293:136::-;5369:4;5393:10;:19;5404:7;5393:19;;;;;;;;;;;;;;;:28;5413:7;5393:28;;;;;;;;;;;;;;;;;;;;;;;;;5386:35;;;;5293:136;;;;:::o;4100:117::-;4146:71;4100:117;:::o;3623:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15261:161::-;15336:6;15367:5;15363:1;:9;15374:12;15355:32;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;15412:1;15398:16;;15261:161;;;;:::o;15626:165::-;15712:6;15744:1;15739:6;;:1;:6;;;;15747:12;15731:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;15782:1;15778;:5;;;;:::i;:::-;15771:12;;15626:165;;;;;:::o;12848:652::-;12957:1;12942:17;;:3;:17;;;;12934:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;13058:1;13043:17;;:3;:17;;;;13035:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;13136:25;13157:3;13136:20;:25::i;:::-;13190:86;13196:8;:13;13205:3;13196:13;;;;;;;;;;;;;;;;;;;;;;;;;13211:6;13190:86;;;;;;;;;;;;;;;;;:5;:86::i;:::-;13174:8;:13;13183:3;13174:13;;;;;;;;;;;;;;;;:102;;;;;;;;;;;;;;;;;;13303:80;13309:8;:13;13318:3;13309:13;;;;;;;;;;;;;;;;;;;;;;;;;13324:6;13303:80;;;;;;;;;;;;;;;;;:5;:80::i;:::-;13287:8;:13;13296:3;13287:13;;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;13413:3;13399:26;;13408:3;13399:26;;;13418:6;13399:26;;;;;;:::i;:::-;;;;;;;;13438:54;13453:9;:14;13463:3;13453:14;;;;;;;;;;;;;;;;;;;;;;;;;13469:9;:14;13479:3;13469:14;;;;;;;;;;;;;;;;;;;;;;;;;13485:6;13438:14;:54::i;:::-;12848:652;;;:::o;12465:375::-;12542:23;12568:9;:20;12578:9;12568:20;;;;;;;;;;;;;;;;;;;;;;;;;12542:46;;12599:23;12625:8;:19;12634:9;12625:19;;;;;;;;;;;;;;;;;;;;;;;;;12599:45;;12678:9;12655;:20;12665:9;12655:20;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;12749:9;12705:54;;12732:15;12705:54;;12721:9;12705:54;;;;;;;;;;;;12772:60;12787:15;12804:9;12815:16;12772:14;:60::i;:::-;12465:375;;;;:::o;8482:418::-;8582:1;8563:21;;:7;:21;;;;8555:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8635:29;8656:7;8635:20;:29::i;:::-;8713:6;8685:35;;:8;:17;8694:7;8685:17;;;;;;;;;;;;;;;;;;;;;;;;;:35;;;;8677:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;8798:6;8770:8;:17;8779:7;8770:17;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8831:6;8816:11;;:21;;;;;;;:::i;:::-;;;;;;;;8881:1;8855:37;;8864:7;8855:37;;;8885:6;8855:37;;;;;;:::i;:::-;;;;;;;;8482:418;;:::o;8150:324::-;8250:1;8231:21;;:7;:21;;;;8223:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8301:32;8330:1;8301:20;:32::i;:::-;8361:6;8346:11;;:21;;;;;;;:::i;:::-;;;;;;;;8406:6;8378:8;:17;8387:7;8378:17;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8450:7;8429:37;;8446:1;8429:37;;;8459:6;8429:37;;;;;;:::i;:::-;;;;;;;;8150:324;;:::o;15799:153::-;15844:4;15861:15;15909:9;15898:20;;15937:7;15930:14;;;15799:153;:::o;16846:161::-;16948:15;16932:6;:12;16939:4;16932:12;;;;;;;;;;;;;;;;:31;;16924:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;16846:161;:::o;15430:188::-;15516:6;15535:8;15550:1;15546;:5;;;;:::i;:::-;15535:16;;15575:1;15570:6;;:1;:6;;;;15578:12;15562:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;15609:1;15602:8;;;15430:188;;;;;:::o;13508:939::-;13613:6;13603:16;;:6;:16;;;;:30;;;;;13632:1;13623:6;:10;;;13603:30;13599:841;;;13672:1;13654:20;;:6;:20;;;13650:382;;13695:16;13714:14;:22;13729:6;13714:22;;;;;;;;;;;;;;;;;;;;;;;;;13695:41;;13755:16;13786:1;13774:9;:13;;;:60;;13833:1;13774:60;;;13790:11;:19;13802:6;13790:19;;;;;;;;;;;;;;;:34;13822:1;13810:9;:13;;;;:::i;:::-;13790:34;;;;;;;;;;;;;;;:40;;;;;;;;;;;;13774:60;13755:79;;13853:16;13872:68;13878:9;13889:6;13872:68;;;;;;;;;;;;;;;;;:5;:68::i;:::-;13853:87;;13959:57;13976:6;13984:9;13995;14006;13959:16;:57::i;:::-;13650:382;;;;14070:1;14052:20;;:6;:20;;;14048:381;;14093:16;14112:14;:22;14127:6;14112:22;;;;;;;;;;;;;;;;;;;;;;;;;14093:41;;14153:16;14184:1;14172:9;:13;;;:60;;14231:1;14172:60;;;14188:11;:19;14200:6;14188:19;;;;;;;;;;;;;;;:34;14220:1;14208:9;:13;;;;:::i;:::-;14188:34;;;;;;;;;;;;;;;:40;;;;;;;;;;;;14172:60;14153:79;;14251:16;14270:67;14276:9;14287:6;14270:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;14251:86;;14356:57;14373:6;14381:9;14392;14403;14356:16;:57::i;:::-;14048:381;;;;13599:841;13508:939;;;:::o;14455:629::-;14573:18;14594:76;14601:12;14594:76;;;;;;;;;;;;;;;;;:6;:76::i;:::-;14573:97;;14700:1;14685:12;:16;;;:85;;;;;14759:11;14705:65;;:11;:22;14717:9;14705:22;;;;;;;;;;;;;;;:40;14743:1;14728:12;:16;;;;:::i;:::-;14705:40;;;;;;;;;;;;;;;:50;;;;;;;;;;;;:65;;;14685:85;14681:329;;;14834:8;14785:11;:22;14797:9;14785:22;;;;;;;;;;;;;;;:40;14823:1;14808:12;:16;;;;:::i;:::-;14785:40;;;;;;;;;;;;;;;:46;;;:57;;;;;;;;;;;;;;;;;;14681:329;;;14910:33;;;;;;;;14921:11;14910:33;;;;;;14934:8;14910:33;;;;;14871:11;:22;14883:9;14871:22;;;;;;;;;;;;;;;:36;14894:12;14871:36;;;;;;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14999:1;14984:12;:16;;;;:::i;:::-;14956:14;:25;14971:9;14956:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;14681:329;15046:9;15025:51;;;15057:8;15067;15025:51;;;;;;;:::i;:::-;;;;;;;;14455:629;;;;;:::o;15092:161::-;15167:6;15198:5;15194:1;:9;15205:12;15186:32;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;15243:1;15229:16;;15092:161;;;;:::o;24:645:1:-;;156:81;172:64;229:6;172:64;:::i;:::-;156:81;:::i;:::-;147:90;;257:5;285:6;278:5;271:21;311:4;304:5;300:16;293:23;;336:6;386:3;378:4;370:6;366:17;361:3;357:27;354:36;351:2;;;403:1;400;393:12;351:2;431:1;416:247;441:6;438:1;435:13;416:247;;;508:3;536:48;580:3;568:10;536:48;:::i;:::-;531:3;524:61;614:4;609:3;605:14;598:21;;648:4;643:3;639:14;632:21;;476:187;463:1;460;456:9;451:14;;416:247;;;420:14;137:532;;;;;;;:::o;675:139::-;;759:6;746:20;737:29;;775:33;802:5;775:33;:::i;:::-;727:87;;;;:::o;837:318::-;;968:3;961:4;953:6;949:17;945:27;935:2;;986:1;983;976:12;935:2;1019:6;1013:13;1044:105;1145:3;1137:6;1130:4;1122:6;1118:17;1044:105;:::i;:::-;1035:114;;925:230;;;;;:::o;1161:137::-;;1246:6;1240:13;1231:22;;1262:30;1286:5;1262:30;:::i;:::-;1221:77;;;;:::o;1304:139::-;;1388:6;1375:20;1366:29;;1404:33;1431:5;1404:33;:::i;:::-;1356:87;;;;:::o;1449:139::-;;1533:6;1520:20;1511:29;;1549:33;1576:5;1549:33;:::i;:::-;1501:87;;;;:::o;1594:143::-;;1682:6;1676:13;1667:22;;1698:33;1725:5;1698:33;:::i;:::-;1657:80;;;;:::o;1743:137::-;;1826:6;1813:20;1804:29;;1842:32;1868:5;1842:32;:::i;:::-;1794:86;;;;:::o;1886:135::-;;1968:6;1955:20;1946:29;;1984:31;2009:5;1984:31;:::i;:::-;1936:85;;;;:::o;2027:262::-;;2135:2;2123:9;2114:7;2110:23;2106:32;2103:2;;;2151:1;2148;2141:12;2103:2;2194:1;2219:53;2264:7;2255:6;2244:9;2240:22;2219:53;:::i;:::-;2209:63;;2165:117;2093:196;;;;:::o;2295:407::-;;;2420:2;2408:9;2399:7;2395:23;2391:32;2388:2;;;2436:1;2433;2426:12;2388:2;2479:1;2504:53;2549:7;2540:6;2529:9;2525:22;2504:53;:::i;:::-;2494:63;;2450:117;2606:2;2632:53;2677:7;2668:6;2657:9;2653:22;2632:53;:::i;:::-;2622:63;;2577:118;2378:324;;;;;:::o;2708:552::-;;;;2850:2;2838:9;2829:7;2825:23;2821:32;2818:2;;;2866:1;2863;2856:12;2818:2;2909:1;2934:53;2979:7;2970:6;2959:9;2955:22;2934:53;:::i;:::-;2924:63;;2880:117;3036:2;3062:53;3107:7;3098:6;3087:9;3083:22;3062:53;:::i;:::-;3052:63;;3007:118;3164:2;3190:53;3235:7;3226:6;3215:9;3211:22;3190:53;:::i;:::-;3180:63;;3135:118;2808:452;;;;;:::o;3266:407::-;;;3391:2;3379:9;3370:7;3366:23;3362:32;3359:2;;;3407:1;3404;3397:12;3359:2;3450:1;3475:53;3520:7;3511:6;3500:9;3496:22;3475:53;:::i;:::-;3465:63;;3421:117;3577:2;3603:53;3648:7;3639:6;3628:9;3624:22;3603:53;:::i;:::-;3593:63;;3548:118;3349:324;;;;;:::o;3679:986::-;;;;;;;3870:3;3858:9;3849:7;3845:23;3841:33;3838:2;;;3887:1;3884;3877:12;3838:2;3930:1;3955:53;4000:7;3991:6;3980:9;3976:22;3955:53;:::i;:::-;3945:63;;3901:117;4057:2;4083:53;4128:7;4119:6;4108:9;4104:22;4083:53;:::i;:::-;4073:63;;4028:118;4185:2;4211:53;4256:7;4247:6;4236:9;4232:22;4211:53;:::i;:::-;4201:63;;4156:118;4313:2;4339:51;4382:7;4373:6;4362:9;4358:22;4339:51;:::i;:::-;4329:61;;4284:116;4439:3;4466:53;4511:7;4502:6;4491:9;4487:22;4466:53;:::i;:::-;4456:63;;4410:119;4568:3;4595:53;4640:7;4631:6;4620:9;4616:22;4595:53;:::i;:::-;4585:63;;4539:119;3828:837;;;;;;;;:::o;4671:405::-;;;4795:2;4783:9;4774:7;4770:23;4766:32;4763:2;;;4811:1;4808;4801:12;4763:2;4854:1;4879:53;4924:7;4915:6;4904:9;4900:22;4879:53;:::i;:::-;4869:63;;4825:117;4981:2;5007:52;5051:7;5042:6;5031:9;5027:22;5007:52;:::i;:::-;4997:62;;4952:117;4753:323;;;;;:::o;5082:420::-;;5226:2;5214:9;5205:7;5201:23;5197:32;5194:2;;;5242:1;5239;5232:12;5194:2;5306:1;5295:9;5291:17;5285:24;5336:18;5328:6;5325:30;5322:2;;;5368:1;5365;5358:12;5322:2;5396:89;5477:7;5468:6;5457:9;5453:22;5396:89;:::i;:::-;5386:99;;5256:239;5184:318;;;;:::o;5508:278::-;;5624:2;5612:9;5603:7;5599:23;5595:32;5592:2;;;5640:1;5637;5630:12;5592:2;5683:1;5708:61;5761:7;5752:6;5741:9;5737:22;5708:61;:::i;:::-;5698:71;;5654:125;5582:204;;;;:::o;5792:262::-;;5900:2;5888:9;5879:7;5875:23;5871:32;5868:2;;;5916:1;5913;5906:12;5868:2;5959:1;5984:53;6029:7;6020:6;6009:9;6005:22;5984:53;:::i;:::-;5974:63;;5930:117;5858:196;;;;:::o;6060:284::-;;6179:2;6167:9;6158:7;6154:23;6150:32;6147:2;;;6195:1;6192;6185:12;6147:2;6238:1;6263:64;6319:7;6310:6;6299:9;6295:22;6263:64;:::i;:::-;6253:74;;6209:128;6137:207;;;;:::o;6350:179::-;;6440:46;6482:3;6474:6;6440:46;:::i;:::-;6518:4;6513:3;6509:14;6495:28;;6430:99;;;;:::o;6535:108::-;6612:24;6630:5;6612:24;:::i;:::-;6607:3;6600:37;6590:53;;:::o;6649:118::-;6736:24;6754:5;6736:24;:::i;:::-;6731:3;6724:37;6714:53;;:::o;6803:732::-;;6951:54;6999:5;6951:54;:::i;:::-;7021:86;7100:6;7095:3;7021:86;:::i;:::-;7014:93;;7131:56;7181:5;7131:56;:::i;:::-;7210:7;7241:1;7226:284;7251:6;7248:1;7245:13;7226:284;;;7327:6;7321:13;7354:63;7413:3;7398:13;7354:63;:::i;:::-;7347:70;;7440:60;7493:6;7440:60;:::i;:::-;7430:70;;7286:224;7273:1;7270;7266:9;7261:14;;7226:284;;;7230:14;7526:3;7519:10;;6927:608;;;;;;;:::o;7541:109::-;7622:21;7637:5;7622:21;:::i;:::-;7617:3;7610:34;7600:50;;:::o;7656:118::-;7743:24;7761:5;7743:24;:::i;:::-;7738:3;7731:37;7721:53;;:::o;7780:157::-;7885:45;7905:24;7923:5;7905:24;:::i;:::-;7885:45;:::i;:::-;7880:3;7873:58;7863:74;;:::o;7943:157::-;8043:50;8087:5;8043:50;:::i;:::-;8038:3;8031:63;8021:79;;:::o;8106:147::-;8201:45;8240:5;8201:45;:::i;:::-;8196:3;8189:58;8179:74;;:::o;8259:364::-;;8375:39;8408:5;8375:39;:::i;:::-;8430:71;8494:6;8489:3;8430:71;:::i;:::-;8423:78;;8510:52;8555:6;8550:3;8543:4;8536:5;8532:16;8510:52;:::i;:::-;8587:29;8609:6;8587:29;:::i;:::-;8582:3;8578:39;8571:46;;8351:272;;;;;:::o;8629:366::-;;8792:67;8856:2;8851:3;8792:67;:::i;:::-;8785:74;;8868:93;8957:3;8868:93;:::i;:::-;8986:2;8981:3;8977:12;8970:19;;8775:220;;;:::o;9001:366::-;;9164:67;9228:2;9223:3;9164:67;:::i;:::-;9157:74;;9240:93;9329:3;9240:93;:::i;:::-;9358:2;9353:3;9349:12;9342:19;;9147:220;;;:::o;9373:366::-;;9536:67;9600:2;9595:3;9536:67;:::i;:::-;9529:74;;9612:93;9701:3;9612:93;:::i;:::-;9730:2;9725:3;9721:12;9714:19;;9519:220;;;:::o;9745:400::-;;9926:84;10008:1;10003:3;9926:84;:::i;:::-;9919:91;;10019:93;10108:3;10019:93;:::i;:::-;10137:1;10132:3;10128:11;10121:18;;9909:236;;;:::o;10151:366::-;;10314:67;10378:2;10373:3;10314:67;:::i;:::-;10307:74;;10390:93;10479:3;10390:93;:::i;:::-;10508:2;10503:3;10499:12;10492:19;;10297:220;;;:::o;10523:366::-;;10686:67;10750:2;10745:3;10686:67;:::i;:::-;10679:74;;10762:93;10851:3;10762:93;:::i;:::-;10880:2;10875:3;10871:12;10864:19;;10669:220;;;:::o;10895:366::-;;11058:67;11122:2;11117:3;11058:67;:::i;:::-;11051:74;;11134:93;11223:3;11134:93;:::i;:::-;11252:2;11247:3;11243:12;11236:19;;11041:220;;;:::o;11267:366::-;;11430:67;11494:2;11489:3;11430:67;:::i;:::-;11423:74;;11506:93;11595:3;11506:93;:::i;:::-;11624:2;11619:3;11615:12;11608:19;;11413:220;;;:::o;11639:366::-;;11802:67;11866:2;11861:3;11802:67;:::i;:::-;11795:74;;11878:93;11967:3;11878:93;:::i;:::-;11996:2;11991:3;11987:12;11980:19;;11785:220;;;:::o;12011:366::-;;12174:67;12238:2;12233:3;12174:67;:::i;:::-;12167:74;;12250:93;12339:3;12250:93;:::i;:::-;12368:2;12363:3;12359:12;12352:19;;12157:220;;;:::o;12383:366::-;;12546:67;12610:2;12605:3;12546:67;:::i;:::-;12539:74;;12622:93;12711:3;12622:93;:::i;:::-;12740:2;12735:3;12731:12;12724:19;;12529:220;;;:::o;12755:118::-;12842:24;12860:5;12842:24;:::i;:::-;12837:3;12830:37;12820:53;;:::o;12879:115::-;12964:23;12981:5;12964:23;:::i;:::-;12959:3;12952:36;12942:52;;:::o;13000:112::-;13083:22;13099:5;13083:22;:::i;:::-;13078:3;13071:35;13061:51;;:::o;13118:129::-;13204:36;13234:5;13204:36;:::i;:::-;13199:3;13192:49;13182:65;;:::o;13253:115::-;13338:23;13355:5;13338:23;:::i;:::-;13333:3;13326:36;13316:52;;:::o;13374:663::-;;13637:148;13781:3;13637:148;:::i;:::-;13630:155;;13795:75;13866:3;13857:6;13795:75;:::i;:::-;13895:2;13890:3;13886:12;13879:19;;13908:75;13979:3;13970:6;13908:75;:::i;:::-;14008:2;14003:3;13999:12;13992:19;;14028:3;14021:10;;13619:418;;;;;:::o;14043:222::-;;14174:2;14163:9;14159:18;14151:26;;14187:71;14255:1;14244:9;14240:17;14231:6;14187:71;:::i;:::-;14141:124;;;;:::o;14271:442::-;;14458:2;14447:9;14443:18;14435:26;;14471:71;14539:1;14528:9;14524:17;14515:6;14471:71;:::i;:::-;14552:72;14620:2;14609:9;14605:18;14596:6;14552:72;:::i;:::-;14634;14702:2;14691:9;14687:18;14678:6;14634:72;:::i;:::-;14425:288;;;;;;:::o;14719:332::-;;14878:2;14867:9;14863:18;14855:26;;14891:71;14959:1;14948:9;14944:17;14935:6;14891:71;:::i;:::-;14972:72;15040:2;15029:9;15025:18;15016:6;14972:72;:::i;:::-;14845:206;;;;;:::o;15057:210::-;;15182:2;15171:9;15167:18;15159:26;;15195:65;15257:1;15246:9;15242:17;15233:6;15195:65;:::i;:::-;15149:118;;;;:::o;15273:222::-;;15404:2;15393:9;15389:18;15381:26;;15417:71;15485:1;15474:9;15470:17;15461:6;15417:71;:::i;:::-;15371:124;;;;:::o;15501:553::-;;15716:3;15705:9;15701:19;15693:27;;15730:71;15798:1;15787:9;15783:17;15774:6;15730:71;:::i;:::-;15811:72;15879:2;15868:9;15864:18;15855:6;15811:72;:::i;:::-;15893;15961:2;15950:9;15946:18;15937:6;15893:72;:::i;:::-;15975;16043:2;16032:9;16028:18;16019:6;15975:72;:::i;:::-;15683:371;;;;;;;:::o;16060:553::-;;16275:3;16264:9;16260:19;16252:27;;16289:71;16357:1;16346:9;16342:17;16333:6;16289:71;:::i;:::-;16370:72;16438:2;16427:9;16423:18;16414:6;16370:72;:::i;:::-;16452;16520:2;16509:9;16505:18;16496:6;16452:72;:::i;:::-;16534;16602:2;16591:9;16587:18;16578:6;16534:72;:::i;:::-;16242:371;;;;;;;:::o;16619:545::-;;16830:3;16819:9;16815:19;16807:27;;16844:71;16912:1;16901:9;16897:17;16888:6;16844:71;:::i;:::-;16925:68;16989:2;16978:9;16974:18;16965:6;16925:68;:::i;:::-;17003:72;17071:2;17060:9;17056:18;17047:6;17003:72;:::i;:::-;17085;17153:2;17142:9;17138:18;17129:6;17085:72;:::i;:::-;16797:367;;;;;;;:::o;17170:248::-;;17314:2;17303:9;17299:18;17291:26;;17327:84;17408:1;17397:9;17393:17;17384:6;17327:84;:::i;:::-;17281:137;;;;:::o;17424:313::-;;17575:2;17564:9;17560:18;17552:26;;17624:9;17618:4;17614:20;17610:1;17599:9;17595:17;17588:47;17652:78;17725:4;17716:6;17652:78;:::i;:::-;17644:86;;17542:195;;;;:::o;17743:419::-;;17947:2;17936:9;17932:18;17924:26;;17996:9;17990:4;17986:20;17982:1;17971:9;17967:17;17960:47;18024:131;18150:4;18024:131;:::i;:::-;18016:139;;17914:248;;;:::o;18168:419::-;;18372:2;18361:9;18357:18;18349:26;;18421:9;18415:4;18411:20;18407:1;18396:9;18392:17;18385:47;18449:131;18575:4;18449:131;:::i;:::-;18441:139;;18339:248;;;:::o;18593:419::-;;18797:2;18786:9;18782:18;18774:26;;18846:9;18840:4;18836:20;18832:1;18821:9;18817:17;18810:47;18874:131;19000:4;18874:131;:::i;:::-;18866:139;;18764:248;;;:::o;19018:419::-;;19222:2;19211:9;19207:18;19199:26;;19271:9;19265:4;19261:20;19257:1;19246:9;19242:17;19235:47;19299:131;19425:4;19299:131;:::i;:::-;19291:139;;19189:248;;;:::o;19443:419::-;;19647:2;19636:9;19632:18;19624:26;;19696:9;19690:4;19686:20;19682:1;19671:9;19667:17;19660:47;19724:131;19850:4;19724:131;:::i;:::-;19716:139;;19614:248;;;:::o;19868:419::-;;20072:2;20061:9;20057:18;20049:26;;20121:9;20115:4;20111:20;20107:1;20096:9;20092:17;20085:47;20149:131;20275:4;20149:131;:::i;:::-;20141:139;;20039:248;;;:::o;20293:419::-;;20497:2;20486:9;20482:18;20474:26;;20546:9;20540:4;20536:20;20532:1;20521:9;20517:17;20510:47;20574:131;20700:4;20574:131;:::i;:::-;20566:139;;20464:248;;;:::o;20718:419::-;;20922:2;20911:9;20907:18;20899:26;;20971:9;20965:4;20961:20;20957:1;20946:9;20942:17;20935:47;20999:131;21125:4;20999:131;:::i;:::-;20991:139;;20889:248;;;:::o;21143:419::-;;21347:2;21336:9;21332:18;21324:26;;21396:9;21390:4;21386:20;21382:1;21371:9;21367:17;21360:47;21424:131;21550:4;21424:131;:::i;:::-;21416:139;;21314:248;;;:::o;21568:419::-;;21772:2;21761:9;21757:18;21749:26;;21821:9;21815:4;21811:20;21807:1;21796:9;21792:17;21785:47;21849:131;21975:4;21849:131;:::i;:::-;21841:139;;21739:248;;;:::o;21993:222::-;;22124:2;22113:9;22109:18;22101:26;;22137:71;22205:1;22194:9;22190:17;22181:6;22137:71;:::i;:::-;22091:124;;;;:::o;22221:831::-;;22522:3;22511:9;22507:19;22499:27;;22536:71;22604:1;22593:9;22589:17;22580:6;22536:71;:::i;:::-;22617:80;22693:2;22682:9;22678:18;22669:6;22617:80;:::i;:::-;22744:9;22738:4;22734:20;22729:2;22718:9;22714:18;22707:48;22772:108;22875:4;22866:6;22772:108;:::i;:::-;22764:116;;22890:72;22958:2;22947:9;22943:18;22934:6;22890:72;:::i;:::-;22972:73;23040:3;23029:9;23025:19;23016:6;22972:73;:::i;:::-;22489:563;;;;;;;;:::o;23058:218::-;;23187:2;23176:9;23172:18;23164:26;;23200:69;23266:1;23255:9;23251:17;23242:6;23200:69;:::i;:::-;23154:122;;;;:::o;23282:324::-;;23437:2;23426:9;23422:18;23414:26;;23450:69;23516:1;23505:9;23501:17;23492:6;23450:69;:::i;:::-;23529:70;23595:2;23584:9;23580:18;23571:6;23529:70;:::i;:::-;23404:202;;;;;:::o;23612:214::-;;23739:2;23728:9;23724:18;23716:26;;23752:67;23816:1;23805:9;23801:17;23792:6;23752:67;:::i;:::-;23706:120;;;;:::o;23832:220::-;;23962:2;23951:9;23947:18;23939:26;;23975:70;24042:1;24031:9;24027:17;24018:6;23975:70;:::i;:::-;23929:123;;;;:::o;24058:218::-;;24187:2;24176:9;24172:18;24164:26;;24200:69;24266:1;24255:9;24251:17;24242:6;24200:69;:::i;:::-;24154:122;;;;:::o;24282:328::-;;24439:2;24428:9;24424:18;24416:26;;24452:70;24519:1;24508:9;24504:17;24495:6;24452:70;:::i;:::-;24532:71;24599:2;24588:9;24584:18;24575:6;24532:71;:::i;:::-;24406:204;;;;;:::o;24616:129::-;;24677:20;;:::i;:::-;24667:30;;24706:33;24734:4;24726:6;24706:33;:::i;:::-;24657:88;;;:::o;24751:75::-;;24817:2;24811:9;24801:19;;24791:35;:::o;24832:311::-;;24999:18;24991:6;24988:30;24985:2;;;25021:18;;:::i;:::-;24985:2;25071:4;25063:6;25059:17;25051:25;;25131:4;25125;25121:15;25113:23;;24914:229;;;:::o;25149:132::-;;25239:3;25231:11;;25269:4;25264:3;25260:14;25252:22;;25221:60;;;:::o;25287:114::-;;25388:5;25382:12;25372:22;;25361:40;;;:::o;25407:99::-;;25493:5;25487:12;25477:22;;25466:40;;;:::o;25512:113::-;;25614:4;25609:3;25605:14;25597:22;;25587:38;;;:::o;25631:184::-;;25764:6;25759:3;25752:19;25804:4;25799:3;25795:14;25780:29;;25742:73;;;;:::o;25821:169::-;;25939:6;25934:3;25927:19;25979:4;25974:3;25970:14;25955:29;;25917:73;;;;:::o;25996:148::-;;26135:3;26120:18;;26110:34;;;;:::o;26150:305::-;;26209:20;26227:1;26209:20;:::i;:::-;26204:25;;26243:20;26261:1;26243:20;:::i;:::-;26238:25;;26397:1;26329:66;26325:74;26322:1;26319:81;26316:2;;;26403:18;;:::i;:::-;26316:2;26447:1;26444;26440:9;26433:16;;26194:261;;;;:::o;26461:246::-;;26519:19;26536:1;26519:19;:::i;:::-;26514:24;;26552:19;26569:1;26552:19;:::i;:::-;26547:24;;26649:1;26637:10;26633:18;26630:1;26627:25;26624:2;;;26655:18;;:::i;:::-;26624:2;26699:1;26696;26692:9;26685:16;;26504:203;;;;:::o;26713:262::-;;26771:19;26788:1;26771:19;:::i;:::-;26766:24;;26804:19;26821:1;26804:19;:::i;:::-;26799:24;;26917:1;26889:26;26885:34;26882:1;26879:41;26876:2;;;26923:18;;:::i;:::-;26876:2;26967:1;26964;26960:9;26953:16;;26756:219;;;;:::o;26981:185::-;;27038:20;27056:1;27038:20;:::i;:::-;27033:25;;27072:20;27090:1;27072:20;:::i;:::-;27067:25;;27111:1;27101:2;;27116:18;;:::i;:::-;27101:2;27158:1;27155;27151:9;27146:14;;27023:143;;;;:::o;27172:182::-;;27228:19;27245:1;27228:19;:::i;:::-;27223:24;;27261:19;27278:1;27261:19;:::i;:::-;27256:24;;27299:1;27289:2;;27304:18;;:::i;:::-;27289:2;27346:1;27343;27339:9;27334:14;;27213:141;;;;:::o;27360:348::-;;27423:20;27441:1;27423:20;:::i;:::-;27418:25;;27457:20;27475:1;27457:20;:::i;:::-;27452:25;;27645:1;27577:66;27573:74;27570:1;27567:81;27562:1;27555:9;27548:17;27544:105;27541:2;;;27652:18;;:::i;:::-;27541:2;27700:1;27697;27693:9;27682:20;;27408:300;;;;:::o;27714:191::-;;27774:20;27792:1;27774:20;:::i;:::-;27769:25;;27808:20;27826:1;27808:20;:::i;:::-;27803:25;;27847:1;27844;27841:8;27838:2;;;27852:18;;:::i;:::-;27838:2;27897:1;27894;27890:9;27882:17;;27759:146;;;;:::o;27911:188::-;;27970:19;27987:1;27970:19;:::i;:::-;27965:24;;28003:19;28020:1;28003:19;:::i;:::-;27998:24;;28041:1;28038;28035:8;28032:2;;;28046:18;;:::i;:::-;28032:2;28091:1;28088;28084:9;28076:17;;27955:144;;;;:::o;28105:188::-;;28164:19;28181:1;28164:19;:::i;:::-;28159:24;;28197:19;28214:1;28197:19;:::i;:::-;28192:24;;28235:1;28232;28229:8;28226:2;;;28240:18;;:::i;:::-;28226:2;28285:1;28282;28278:9;28270:17;;28149:144;;;;:::o;28299:96::-;;28365:24;28383:5;28365:24;:::i;:::-;28354:35;;28344:51;;;:::o;28401:90::-;;28478:5;28471:13;28464:21;28453:32;;28443:48;;;:::o;28497:77::-;;28563:5;28552:16;;28542:32;;;:::o;28580:126::-;;28657:42;28650:5;28646:54;28635:65;;28625:81;;;:::o;28712:77::-;;28778:5;28767:16;;28757:32;;;:::o;28795:93::-;;28871:10;28864:5;28860:22;28849:33;;28839:49;;;:::o;28894:86::-;;28969:4;28962:5;28958:16;28947:27;;28937:43;;;:::o;28986:109::-;;29062:26;29055:5;29051:38;29040:49;;29030:65;;;:::o;29101:152::-;;29197:50;29241:5;29197:50;:::i;:::-;29184:63;;29174:79;;;:::o;29259:126::-;;29355:24;29373:5;29355:24;:::i;:::-;29342:37;;29332:53;;;:::o;29391:121::-;;29482:24;29500:5;29482:24;:::i;:::-;29469:37;;29459:53;;;:::o;29518:111::-;;29600:23;29617:5;29600:23;:::i;:::-;29587:36;;29577:52;;;:::o;29635:307::-;29703:1;29713:113;29727:6;29724:1;29721:13;29713:113;;;29812:1;29807:3;29803:11;29797:18;29793:1;29788:3;29784:11;29777:39;29749:2;29746:1;29742:10;29737:15;;29713:113;;;29844:6;29841:1;29838:13;29835:2;;;29924:1;29915:6;29910:3;29906:16;29899:27;29835:2;29684:258;;;;:::o;29948:281::-;30031:27;30053:4;30031:27;:::i;:::-;30023:6;30019:40;30161:6;30149:10;30146:22;30125:18;30113:10;30110:34;30107:62;30104:2;;;30172:18;;:::i;:::-;30104:2;30212:10;30208:2;30201:22;29991:238;;;:::o;30235:233::-;;30297:24;30315:5;30297:24;:::i;:::-;30288:33;;30343:66;30336:5;30333:77;30330:2;;;30413:18;;:::i;:::-;30330:2;30460:1;30453:5;30449:13;30442:20;;30278:190;;;:::o;30474:79::-;;30542:5;30531:16;;30521:32;;;:::o;30559:180::-;30607:77;30604:1;30597:88;30704:4;30701:1;30694:15;30728:4;30725:1;30718:15;30745:180;30793:77;30790:1;30783:88;30890:4;30887:1;30880:15;30914:4;30911:1;30904:15;30931:180;30979:77;30976:1;30969:88;31076:4;31073:1;31066:15;31100:4;31097:1;31090:15;31117:102;;31209:2;31205:7;31200:2;31193:5;31189:14;31185:28;31175:38;;31165:54;;;:::o;31225:221::-;31365:34;31361:1;31353:6;31349:14;31342:58;31434:4;31429:2;31421:6;31417:15;31410:29;31331:115;:::o;31452:225::-;31592:34;31588:1;31580:6;31576:14;31569:58;31661:8;31656:2;31648:6;31644:15;31637:33;31558:119;:::o;31683:225::-;31823:34;31819:1;31811:6;31807:14;31800:58;31892:8;31887:2;31879:6;31875:15;31868:33;31789:119;:::o;31914:214::-;32054:66;32050:1;32042:6;32038:14;32031:90;32020:108;:::o;32134:226::-;32274:34;32270:1;32262:6;32258:14;32251:58;32343:9;32338:2;32330:6;32326:15;32319:34;32240:120;:::o;32366:221::-;32506:34;32502:1;32494:6;32490:14;32483:58;32575:4;32570:2;32562:6;32558:15;32551:29;32472:115;:::o;32593:245::-;32733:34;32729:1;32721:6;32717:14;32710:58;32802:28;32797:2;32789:6;32785:15;32778:53;32699:139;:::o;32844:181::-;32984:33;32980:1;32972:6;32968:14;32961:57;32950:75;:::o;33031:247::-;33171:34;33167:1;33159:6;33155:14;33148:58;33240:30;33235:2;33227:6;33223:15;33216:55;33137:141;:::o;33284:220::-;33424:34;33420:1;33412:6;33408:14;33401:58;33493:3;33488:2;33480:6;33476:15;33469:28;33390:114;:::o;33510:181::-;33650:33;33646:1;33638:6;33634:14;33627:57;33616:75;:::o;33697:122::-;33770:24;33788:5;33770:24;:::i;:::-;33763:5;33760:35;33750:2;;33809:1;33806;33799:12;33750:2;33740:79;:::o;33825:116::-;33895:21;33910:5;33895:21;:::i;:::-;33888:5;33885:32;33875:2;;33931:1;33928;33921:12;33875:2;33865:76;:::o;33947:122::-;34020:24;34038:5;34020:24;:::i;:::-;34013:5;34010:35;34000:2;;34059:1;34056;34049:12;34000:2;33990:79;:::o;34075:122::-;34148:24;34166:5;34148:24;:::i;:::-;34141:5;34138:35;34128:2;;34187:1;34184;34177:12;34128:2;34118:79;:::o;34203:120::-;34275:23;34292:5;34275:23;:::i;:::-;34268:5;34265:34;34255:2;;34313:1;34310;34303:12;34255:2;34245:78;:::o;34329:118::-;34400:22;34416:5;34400:22;:::i;:::-;34393:5;34390:33;34380:2;;34437:1;34434;34427:12;34380:2;34370:77;:::o

Swarm Source

ipfs://158ffbe380f6baef2174aef1b3e5e53f4705f75083f8966d20c9e069e8762116
Block Transaction Difficulty Gas Used Reward
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.