Contract 0x9e7e919aaa39eb92280fd539b093ee67d365e4e6 1

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x3206fb22288a70ff122d85b2c6189e46655120f012e0b970c6816c5d1257e17cDeposit31595212022-11-11 14:36:4218 days 7 hrs ago0x592085833b9d6900337e3da5b18b28c834625f3b IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.00041013
0x5a417ada97617ff4d4a87896c6db0748839a2794137dcb3fda9577e253880cb3Harvest27773172022-09-04 12:38:0686 days 9 hrs ago0x6207aab1d68a6003641ef74f2c59cb934d59575a IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.00030732
0xe4064c54d26ac2bdb5faa1be25796b869c244095899e8c342ac8c5bfa586466eDeposit27403192022-08-29 0:33:4892 days 21 hrs ago0xc945a5a960fef1a9c3fef8593fc2446d1d7c6146 IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.00033253
0x3b4b5d1662bc2079225da9b82e7f9612d3e5917d680a71ad950e359ccc3f7c50Harvest27096772022-08-23 11:49:3098 days 10 hrs ago0x6905030bab047b4a65b28db078e8d844b83d6fbf IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.0002579475
0x1de84602ca66cb156939a6915e012b5dac0df9813dde5e4d17086d1a77878e8fHarvest27040632022-08-22 11:29:5499 days 10 hrs ago0xf0c793d750bac890db3c170fe05d7b2cb59a8741 IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.00025757
0x250af148cf7cc90d96bd76398b3f804419b57995931761e1d811f717f0c70902Harvest27040622022-08-22 11:29:4299 days 10 hrs ago0xf0c793d750bac890db3c170fe05d7b2cb59a8741 IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.00030732
0xe95ddc32396e54ae399b55b1bb23d0f717d923cc84706aa38254c41ea1f966efDeposit26931662022-08-20 12:43:24101 days 9 hrs ago0x88c8a7c4b236e56eee5e4bbbf47d6aef922da68f IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.0002658275
0xfe436eb4c39279d9a011fd181a18ad18cef49e386509653bf4df79f8bc842e2fDeposit26931562022-08-20 12:41:12101 days 9 hrs ago0x2c9fb99808964dcede14111e1ef4a83a5bc352e9 IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.0003325
0x92feda6571fd8401cf40195f71f5e751ea3516cf0271487d8f7076e200229ed0Harvest26917692022-08-20 6:44:18101 days 15 hrs ago0x805176e8fd2029b3d793b4b002b36ac44921f110 IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.0002579775
0xb17c8760b1705d047f508acb6c13d93f3b1123553a09dd4eaa94d9cfbc3ef83bHarvest26917652022-08-20 6:43:24101 days 15 hrs ago0x805176e8fd2029b3d793b4b002b36ac44921f110 IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.000309084
0xd941ec092f7193a37d0009bccbf8fbef4960b0d43c26c2e240df0dcb4a50c1bdDeposit26805112022-08-18 6:55:12103 days 15 hrs ago0x4e3c5bccf0f62ff7f4c92597f3f8747826f8da33 IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.0002160475
0x3fb613620612f3a859115e4f414b17b72b2f2f0f11958ceb58054e3a6362222fHarvest26804932022-08-18 6:51:06103 days 15 hrs ago0x4e3c5bccf0f62ff7f4c92597f3f8747826f8da33 IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.0002579775
0x3e82ea311fec716444968da3544d90d75724d68bad56995945d38429a7ae4473Harvest26804902022-08-18 6:50:06103 days 15 hrs ago0x4e3c5bccf0f62ff7f4c92597f3f8747826f8da33 IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.0003076975
0x33f22ce56c5a477c9957c3e3bebee0fde54c5464fbcef3a8ecafa3bcbf54bd4bDeposit26748062022-08-17 6:33:00104 days 15 hrs ago0x4e3c5bccf0f62ff7f4c92597f3f8747826f8da33 IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.0002160475
0x15bb7096949f88f426fdbd0b913c34bd1ff5ff426e689c94275797c9f4ffe876Harvest26747872022-08-17 6:28:00104 days 15 hrs ago0x4e3c5bccf0f62ff7f4c92597f3f8747826f8da33 IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.0002579775
0x8c99344ab918098737c1e01fd04c10c8ad4a334ae3ba01dcb351c3a6018a95e6Harvest26747842022-08-17 6:27:24104 days 15 hrs ago0x4e3c5bccf0f62ff7f4c92597f3f8747826f8da33 IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.0003076975
0x0b372797ee1ee4d17625f0b2645a8f8ae4a657054bd741aca02be648d07853b7Deposit26703172022-08-16 11:12:18105 days 11 hrs ago0x76104a3777793c923ea61691a4e382db900d2594 IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.000382405
0xc5c9f92288c96b2b57a52c6c1545be6f2d65252a92c427ca3b5abbc7c364b613Deposit26693242022-08-16 6:54:06105 days 15 hrs ago0x4e3c5bccf0f62ff7f4c92597f3f8747826f8da33 IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.0002160475
0x5eb6845aa0f0b01073984a2905b4fe99c417aff173026be8e5fdeee8e55fad7dDeposit26693192022-08-16 6:52:42105 days 15 hrs ago0x4e3c5bccf0f62ff7f4c92597f3f8747826f8da33 IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.0002200375
0xf7e6da37d93cd06b3ec18c8190cf0da9ba8414c1e12d82b683ce37fb827a515aHarvest26693172022-08-16 6:52:12105 days 15 hrs ago0x4e3c5bccf0f62ff7f4c92597f3f8747826f8da33 IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.0003077275
0x65b9ba80ff08916b946d6c2dfbf9907021f6ca48eef6ca45b0408b9d08ca0c16Harvest26692922022-08-16 6:46:24105 days 15 hrs ago0x4e3c5bccf0f62ff7f4c92597f3f8747826f8da33 IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.0002579775
0xfa96ea5927f34dd4ed14f9eece1ff1cb612aa3a4122261eb3b1831621ad40cb3Harvest26692902022-08-16 6:46:00105 days 15 hrs ago0x4e3c5bccf0f62ff7f4c92597f3f8747826f8da33 IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.0002579475
0x077c2448f4cac68365d381c25dac5c491785f8a0fb4a796929861a662dd87a67Harvest26692852022-08-16 6:44:36105 days 15 hrs ago0x4e3c5bccf0f62ff7f4c92597f3f8747826f8da33 IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.0003076975
0xa6c76d96e3d733ee50717c69b1a5739af4b2cb9f27aed1071b0407a1a3204e33Deposit26592242022-08-14 12:14:00107 days 10 hrs ago0x4e3c5bccf0f62ff7f4c92597f3f8747826f8da33 IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.0002160775
0x5a585aeccfc5c2c63778088aecf38ccd8ddddc9ab4852c79601ba1799c272198Deposit26592092022-08-14 12:10:00107 days 10 hrs ago0x4e3c5bccf0f62ff7f4c92597f3f8747826f8da33 IN 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV0.0002160475
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x3206fb22288a70ff122d85b2c6189e46655120f012e0b970c6816c5d1257e17c31595212022-11-11 14:36:4218 days 7 hrs ago 0x9e7e919aaa39eb92280fd539b093ee67d365e4e6 0xa638c1aefb24956759b39add52b17c4364bd4f1e0 DEV
0x3206fb22288a70ff122d85b2c6189e46655120f012e0b970c6816c5d1257e17c31595212022-11-11 14:36:4218 days 7 hrs ago 0xad09ca83a8fa444e429337a6b14e84c5130fc48f0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV
0x3206fb22288a70ff122d85b2c6189e46655120f012e0b970c6816c5d1257e17c31595212022-11-11 14:36:4218 days 7 hrs ago 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60xad09ca83a8fa444e429337a6b14e84c5130fc48f0 DEV
0x3206fb22288a70ff122d85b2c6189e46655120f012e0b970c6816c5d1257e17c31595212022-11-11 14:36:4218 days 7 hrs ago 0x9e7e919aaa39eb92280fd539b093ee67d365e4e6 0xa638c1aefb24956759b39add52b17c4364bd4f1e0 DEV
0x5a417ada97617ff4d4a87896c6db0748839a2794137dcb3fda9577e253880cb327773172022-09-04 12:38:0686 days 9 hrs ago 0xad09ca83a8fa444e429337a6b14e84c5130fc48f0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV
0x5a417ada97617ff4d4a87896c6db0748839a2794137dcb3fda9577e253880cb327773172022-09-04 12:38:0686 days 9 hrs ago 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60xad09ca83a8fa444e429337a6b14e84c5130fc48f0 DEV
0x5a417ada97617ff4d4a87896c6db0748839a2794137dcb3fda9577e253880cb327773172022-09-04 12:38:0686 days 9 hrs ago 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60x9f6e0e615585a8248de15362393565415e71de3d0 DEV
0x5a417ada97617ff4d4a87896c6db0748839a2794137dcb3fda9577e253880cb327773172022-09-04 12:38:0686 days 9 hrs ago 0x9e7e919aaa39eb92280fd539b093ee67d365e4e6 0xa638c1aefb24956759b39add52b17c4364bd4f1e0 DEV
0xe4064c54d26ac2bdb5faa1be25796b869c244095899e8c342ac8c5bfa586466e27403192022-08-29 0:33:4892 days 21 hrs ago 0x9e7e919aaa39eb92280fd539b093ee67d365e4e6 0xa638c1aefb24956759b39add52b17c4364bd4f1e0 DEV
0xe4064c54d26ac2bdb5faa1be25796b869c244095899e8c342ac8c5bfa586466e27403192022-08-29 0:33:4892 days 21 hrs ago 0xad09ca83a8fa444e429337a6b14e84c5130fc48f0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV
0xe4064c54d26ac2bdb5faa1be25796b869c244095899e8c342ac8c5bfa586466e27403192022-08-29 0:33:4892 days 21 hrs ago 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60xad09ca83a8fa444e429337a6b14e84c5130fc48f0 DEV
0xe4064c54d26ac2bdb5faa1be25796b869c244095899e8c342ac8c5bfa586466e27403192022-08-29 0:33:4892 days 21 hrs ago 0x9e7e919aaa39eb92280fd539b093ee67d365e4e6 0xa638c1aefb24956759b39add52b17c4364bd4f1e0 DEV
0x3b4b5d1662bc2079225da9b82e7f9612d3e5917d680a71ad950e359ccc3f7c5027096772022-08-23 11:49:3098 days 10 hrs ago 0xad09ca83a8fa444e429337a6b14e84c5130fc48f0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV
0x3b4b5d1662bc2079225da9b82e7f9612d3e5917d680a71ad950e359ccc3f7c5027096772022-08-23 11:49:3098 days 10 hrs ago 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60xad09ca83a8fa444e429337a6b14e84c5130fc48f0 DEV
0x3b4b5d1662bc2079225da9b82e7f9612d3e5917d680a71ad950e359ccc3f7c5027096772022-08-23 11:49:3098 days 10 hrs ago 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60x9f6e0e615585a8248de15362393565415e71de3d0 DEV
0x3b4b5d1662bc2079225da9b82e7f9612d3e5917d680a71ad950e359ccc3f7c5027096772022-08-23 11:49:3098 days 10 hrs ago 0x9e7e919aaa39eb92280fd539b093ee67d365e4e6 0x3a9c9484e0e82596fb4c2e7fec97106c4c2310fa0 DEV
0x1de84602ca66cb156939a6915e012b5dac0df9813dde5e4d17086d1a77878e8f27040632022-08-22 11:29:5499 days 10 hrs ago 0xad09ca83a8fa444e429337a6b14e84c5130fc48f0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV
0x1de84602ca66cb156939a6915e012b5dac0df9813dde5e4d17086d1a77878e8f27040632022-08-22 11:29:5499 days 10 hrs ago 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60xad09ca83a8fa444e429337a6b14e84c5130fc48f0 DEV
0x1de84602ca66cb156939a6915e012b5dac0df9813dde5e4d17086d1a77878e8f27040632022-08-22 11:29:5499 days 10 hrs ago 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60x9f6e0e615585a8248de15362393565415e71de3d0 DEV
0x1de84602ca66cb156939a6915e012b5dac0df9813dde5e4d17086d1a77878e8f27040632022-08-22 11:29:5499 days 10 hrs ago 0x9e7e919aaa39eb92280fd539b093ee67d365e4e6 0xa638c1aefb24956759b39add52b17c4364bd4f1e0 DEV
0x250af148cf7cc90d96bd76398b3f804419b57995931761e1d811f717f0c7090227040622022-08-22 11:29:4299 days 10 hrs ago 0xad09ca83a8fa444e429337a6b14e84c5130fc48f0x9e7e919aaa39eb92280fd539b093ee67d365e4e60 DEV
0x250af148cf7cc90d96bd76398b3f804419b57995931761e1d811f717f0c7090227040622022-08-22 11:29:4299 days 10 hrs ago 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60xad09ca83a8fa444e429337a6b14e84c5130fc48f0 DEV
0x250af148cf7cc90d96bd76398b3f804419b57995931761e1d811f717f0c7090227040622022-08-22 11:29:4299 days 10 hrs ago 0x9e7e919aaa39eb92280fd539b093ee67d365e4e60x9f6e0e615585a8248de15362393565415e71de3d0 DEV
0x250af148cf7cc90d96bd76398b3f804419b57995931761e1d811f717f0c7090227040622022-08-22 11:29:4299 days 10 hrs ago 0x9e7e919aaa39eb92280fd539b093ee67d365e4e6 0xa638c1aefb24956759b39add52b17c4364bd4f1e0 DEV
0xe95ddc32396e54ae399b55b1bb23d0f717d923cc84706aa38254c41ea1f966ef26931662022-08-20 12:43:24101 days 9 hrs ago 0x9e7e919aaa39eb92280fd539b093ee67d365e4e6 0x3a9c9484e0e82596fb4c2e7fec97106c4c2310fa0 DEV
[ Download CSV Export 
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

Contract Source Code Verified (Exact Match)

Contract Name:
MiniChefV2

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at moonbase.moonscan.io on 2022-04-25
*/

/**
 *Submitted for verification at moonbase.moonscan.io on 2022-03-25
*/

// Sources flattened with hardhat v2.6.8 https://hardhat.org

// File @boringcrypto/boring-solidity/contracts/libraries/[email protected]
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)
library BoringMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, "BoringMath: Add Overflow");}
    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, "BoringMath: Underflow");}
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, "BoringMath: Mul Overflow");}
    function to128(uint256 a) internal pure returns (uint128 c) {
        require(a <= uint128(-1), "BoringMath: uint128 Overflow");
        c = uint128(a);
    }
    function to64(uint256 a) internal pure returns (uint64 c) {
        require(a <= uint64(-1), "BoringMath: uint64 Overflow");
        c = uint64(a);
    }
    function to32(uint256 a) internal pure returns (uint32 c) {
        require(a <= uint32(-1), "BoringMath: uint32 Overflow");
        c = uint32(a);
    }
}

library BoringMath128 {
    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, "BoringMath: Add Overflow");}
    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, "BoringMath: Underflow");}
}

library BoringMath64 {
    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, "BoringMath: Add Overflow");}
    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, "BoringMath: Underflow");}
}

library BoringMath32 {
    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, "BoringMath: Add Overflow");}
    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, "BoringMath: Underflow");}
}


// File @boringcrypto/boring-solidity/contracts/interfaces/[email protected]

pragma solidity 0.6.12;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    // EIP 2612
    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;
}


// File @boringcrypto/boring-solidity/contracts/libraries/[email protected]


pragma solidity 0.6.12;
library BoringERC20 {
    function safeSymbol(IERC20 token) internal view returns(string memory) {
        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));
        return success && data.length > 0 ? abi.decode(data, (string)) : "???";
    }

    function safeName(IERC20 token) internal view returns(string memory) {
        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));
        return success && data.length > 0 ? abi.decode(data, (string)) : "???";
    }

    function safeDecimals(IERC20 token) internal view returns (uint8) {
        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));
        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;
    }

    function safeTransfer(IERC20 token, address to, uint256 amount) internal {
        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));
        require(success && (data.length == 0 || abi.decode(data, (bool))), "BoringERC20: Transfer failed");
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {
        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));
        require(success && (data.length == 0 || abi.decode(data, (bool))), "BoringERC20: TransferFrom failed");
    }
}


// File @boringcrypto/boring-solidity/contracts/[email protected]


// Audit on 5-Jan-2021 by Keno and BoringCrypto

// P1 - P3: OK
pragma solidity 0.6.12;
pragma experimental ABIEncoderV2;
// solhint-disable avoid-low-level-calls
// T1 - T4: OK
contract BaseBoringBatchable {
    function _getRevertMsg(bytes memory _returnData) internal pure returns (string memory) {
        // If the _res length is less than 68, then the transaction failed silently (without a revert message)
        if (_returnData.length < 68) return "Transaction reverted silently";

        assembly {
            // Slice the sighash.
            _returnData := add(_returnData, 0x04)
        }
        return abi.decode(_returnData, (string)); // All that remains is the revert string
    }    
    
    // F3 - F9: OK
    // F1: External is ok here because this is the batch function, adding it to a batch makes no sense
    // F2: Calls in the batch may be payable, delegatecall operates in the same context, so each call in the batch has access to msg.value
    // C1 - C21: OK
    // C3: The length of the loop is fully under user control, so can't be exploited
    // C7: Delegatecall is only used on the same contract, so it's safe
    function batch(bytes[] calldata calls, bool revertOnFail) external payable returns(bool[] memory successes, bytes[] memory results) {
        // Interactions
        successes = new bool[](calls.length);
        results = new bytes[](calls.length);
        for (uint256 i = 0; i < calls.length; i++) {
            (bool success, bytes memory result) = address(this).delegatecall(calls[i]);
            require(success || !revertOnFail, _getRevertMsg(result));
            successes[i] = success;
            results[i] = result;
        }
    }
}

// T1 - T4: OK
contract BoringBatchable is BaseBoringBatchable {
    // F1 - F9: OK
    // F6: Parameters can be used front-run the permit and the user's permit will fail (due to nonce or other revert)
    //     if part of a batch this could be used to grief once as the second call would not need the permit
    // C1 - C21: OK
    function permitToken(IERC20 token, address from, address to, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {
        // Interactions
        // X1 - X5
        token.permit(from, to, amount, deadline, v, r, s);
    }
}


// File @boringcrypto/boring-solidity/contracts/[email protected]

// Audit on 5-Jan-2021 by Keno and BoringCrypto

// P1 - P3: OK
pragma solidity 0.6.12;

// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol
// Edited by BoringCrypto

// T1 - T4: OK
contract BoringOwnableData {
    // V1 - V5: OK
    address public owner;
    // V1 - V5: OK
    address public pendingOwner;
}

// T1 - T4: OK
contract BoringOwnable is BoringOwnableData {
    // E1: OK
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () public {
        owner = msg.sender;
        emit OwnershipTransferred(address(0), msg.sender);
    }

    // F1 - F9: OK
    // C1 - C21: OK
    function transferOwnership(address newOwner, bool direct, bool renounce) public onlyOwner {
        if (direct) {
            // Checks
            require(newOwner != address(0) || renounce, "Ownable: zero address");

            // Effects
            emit OwnershipTransferred(owner, newOwner);
            owner = newOwner;
            pendingOwner = address(0);
        } else {
            // Effects
            pendingOwner = newOwner;
        }
    }

    // F1 - F9: OK
    // C1 - C21: OK
    function claimOwnership() public {
        address _pendingOwner = pendingOwner;
        
        // Checks
        require(msg.sender == _pendingOwner, "Ownable: caller != pending owner");

        // Effects
        emit OwnershipTransferred(owner, _pendingOwner);
        owner = _pendingOwner;
        pendingOwner = address(0);
    }

    // M1 - M5: OK
    // C1 - C21: OK
    modifier onlyOwner() {
        require(msg.sender == owner, "Ownable: caller is not the owner");
        _;
    }
}


// File contracts/libraries/SignedSafeMath.sol


pragma solidity 0.6.12;

library SignedSafeMath {
    int256 constant private _INT256_MIN = -2**255;

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

        require(!(a == -1 && b == _INT256_MIN), "SignedSafeMath: multiplication overflow");

        int256 c = a * b;
        require(c / a == b, "SignedSafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two signed integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(int256 a, int256 b) internal pure returns (int256) {
        require(b != 0, "SignedSafeMath: division by zero");
        require(!(b == -1 && a == _INT256_MIN), "SignedSafeMath: division overflow");

        int256 c = a / b;

        return c;
    }

    /**
     * @dev Returns the subtraction of two signed integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a), "SignedSafeMath: subtraction overflow");

        return c;
    }

    /**
     * @dev Returns the addition of two signed integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a), "SignedSafeMath: addition overflow");

        return c;
    }

    function toUInt256(int256 a) internal pure returns (uint256) {
        require(a >= 0, "Integer < 0");
        return uint256(a);
    }
}


// File contracts/interfaces/IRewarder.sol


pragma solidity 0.6.12;

interface IRewarder {
    using BoringERC20 for IERC20;
    function onEnergyFiReward(uint256 pid, address user, address recipient, uint256 energyFiAmount, uint256 newLpAmount) external;
    function pendingTokens(uint256 pid, address user, uint256 energyFiAmount) external view returns (IERC20[] memory, uint256[] memory);
}


// File contracts/interfaces/IMasterChef.sol

pragma solidity 0.6.12;

interface IMasterChef {
    using BoringERC20 for IERC20;
    struct UserInfo {
        uint256 amount;     // How many LP tokens the user has provided.
        uint256 rewardDebt; // Reward debt. See explanation below.
    }

    struct PoolInfo {
        IERC20 lpToken;           // Address of LP token contract.
        uint256 allocPoint;       // How many allocation points assigned to this pool. ENERGYFI to distribute per block.
        uint256 lastRewardBlock;  // Last block number that ENERGYFI distribution occurs.
        uint256 accEnergyFiPerShare; // Accumulated ENERGYFI per share, times 1e12. See below.
    }

    function poolInfo(uint256 pid) external view returns (IMasterChef.PoolInfo memory);
    function totalAllocPoint() external view returns (uint256);
    function deposit(uint256 _pid, uint256 _amount) external;
}


// File contracts/MiniChefV2.sol


pragma solidity 0.6.12;






interface IMigratorChef {
    // Take the current LP token address and return the new LP token address.
    // Migrator should have full access to the caller's LP token.
    function migrate(IERC20 token) external returns (IERC20);
}

/// @notice The (older) MasterChef contract gives out a constant number of ENERGYFI tokens per block.
/// It is the only address with minting rights for ENERGYFI.
/// The idea for this MasterChef V2 (MCV2) contract is therefore to be the owner of a dummy token
/// that is deposited into the MasterChef V1 (MCV1) contract.
/// The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives.
contract MiniChefV2 is BoringOwnable, BoringBatchable {
    using BoringMath for uint256;
    using BoringMath128 for uint128;
    using BoringERC20 for IERC20;
    using SignedSafeMath for int256;

    /// @notice Info of each MCV2 user.
    /// `amount` LP token amount the user has provided.
    /// `rewardDebt` The amount of ENERGYFI entitled to the user.
    struct UserInfo {
        uint256 amount;
        int256 rewardDebt;
    }

    /// @notice Info of each MCV2 pool.
    /// `allocPoint` The amount of allocation points assigned to the pool.
    /// Also known as the amount of ENERGYFI to distribute per block.
    struct PoolInfo {
        uint128 accEnergyFiPerShare;
        uint64 lastRewardTime;
        uint64 allocPoint;
    }

    /// @notice Address of ENERGYFI contract.
    IERC20 public immutable ENERGYFI;
    // @notice The migrator contract. It has a lot of power. Can only be set through governance (owner).
    IMigratorChef public migrator;

    /// @notice Info of each MCV2 pool.
    PoolInfo[] public poolInfo;
    /// @notice Address of the LP token for each MCV2 pool.
    IERC20[] public lpToken;
    /// @notice Address of each `IRewarder` contract in MCV2.
    IRewarder[] public rewarder;

    /// @notice Info of each user that stakes LP tokens.
    mapping (uint256 => mapping (address => UserInfo)) public userInfo;

    /// @dev Tokens added
    mapping (address => bool) public addedTokens;

    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.
    uint256 public totalAllocPoint;

    uint256 public energyFiPerSecond;
    uint256 private constant ACC_ENERGYFI_PRECISION = 1e12;

    event Deposit(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);
    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);
    event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);
    event Harvest(address indexed user, uint256 indexed pid, uint256 amount);
    event LogPoolAddition(uint256 indexed pid, uint256 allocPoint, IERC20 indexed lpToken, IRewarder indexed rewarder);
    event LogSetPool(uint256 indexed pid, uint256 allocPoint, IRewarder indexed rewarder, bool overwrite);
    event LogUpdatePool(uint256 indexed pid, uint64 lastRewardTime, uint256 lpSupply, uint256 accEnergyFiPerShare);
    event LogEnergyFiPerSecond(uint256 energyFiPerSecond);

    /// @param _energyFi The ENERGYFI token contract address.
    constructor(IERC20 _energyFi) public {
        ENERGYFI = _energyFi;
    }

    /// @notice Returns the number of MCV2 pools.
    function poolLength() public view returns (uint256 pools) {
        pools = poolInfo.length;
    }

    /// @notice Add a new LP to the pool. Can only be called by the owner.
    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.
    /// @param allocPoint AP of the new pool.
    /// @param _lpToken Address of the LP ERC-20 token.
    /// @param _rewarder Address of the rewarder delegate.
    function add(uint256 allocPoint, IERC20 _lpToken, IRewarder _rewarder) public onlyOwner {
        require(addedTokens[address(_lpToken)] == false, "Token already added");
        totalAllocPoint = totalAllocPoint.add(allocPoint);
        lpToken.push(_lpToken);
        rewarder.push(_rewarder);

        poolInfo.push(PoolInfo({
            allocPoint: allocPoint.to64(),
            lastRewardTime: block.timestamp.to64(),
            accEnergyFiPerShare: 0
        }));
        addedTokens[address(_lpToken)] = true;
        emit LogPoolAddition(lpToken.length.sub(1), allocPoint, _lpToken, _rewarder);
    }

    /// @notice Update the given pool's ENERGYFI allocation point and `IRewarder` contract. Can only be called by the owner.
    /// @param _pid The index of the pool. See `poolInfo`.
    /// @param _allocPoint New AP of the pool.
    /// @param _rewarder Address of the rewarder delegate.
    /// @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored.
    function set(uint256 _pid, uint256 _allocPoint, IRewarder _rewarder, bool overwrite) public onlyOwner {
        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);
        poolInfo[_pid].allocPoint = _allocPoint.to64();
        if (overwrite) { rewarder[_pid] = _rewarder; }
        emit LogSetPool(_pid, _allocPoint, overwrite ? _rewarder : rewarder[_pid], overwrite);
    }

    /// @notice Sets the energyFi per second to be distributed. Can only be called by the owner.
    /// @param _energyFiPerSecond The amount of EnergyFi to be distributed per second.
    function setEnergyFiPerSecond(uint256 _energyFiPerSecond) public onlyOwner {
        energyFiPerSecond = _energyFiPerSecond;
        emit LogEnergyFiPerSecond(_energyFiPerSecond);
    }

    /// @notice Set the `migrator` contract. Can only be called by the owner.
    /// @param _migrator The contract address to set.
    function setMigrator(IMigratorChef _migrator) public onlyOwner {
        migrator = _migrator;
    }

    /// @notice Migrate LP token to another LP contract through the `migrator` contract.
    /// @param _pid The index of the pool. See `poolInfo`.
    function migrate(uint256 _pid) public {
        require(address(migrator) != address(0), "MasterChefV2: no migrator set");
        IERC20 _lpToken = lpToken[_pid];
        uint256 bal = _lpToken.balanceOf(address(this));
        _lpToken.approve(address(migrator), bal);
        IERC20 newLpToken = migrator.migrate(_lpToken);
        require(bal == newLpToken.balanceOf(address(this)), "MasterChefV2: migrated balance must match");
        require(addedTokens[address(newLpToken)] == false, "Token already added");
        addedTokens[address(newLpToken)] = true;
        addedTokens[address(_lpToken)] = false;
        lpToken[_pid] = newLpToken;
    }

    /// @notice View function to see pending ENERGYFI on frontend.
    /// @param _pid The index of the pool. See `poolInfo`.
    /// @param _user Address of user.
    /// @return pending ENERGYFI reward for a given user.
    function pendingEnergyFi(uint256 _pid, address _user) external view returns (uint256 pending) {
        PoolInfo memory pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][_user];
        uint256 accEnergyFiPerShare = pool.accEnergyFiPerShare;
        uint256 lpSupply = lpToken[_pid].balanceOf(address(this));
        if (block.timestamp > pool.lastRewardTime && lpSupply != 0) {
            uint256 time = block.timestamp.sub(pool.lastRewardTime);
            uint256 energyFiReward = time.mul(energyFiPerSecond).mul(pool.allocPoint) / totalAllocPoint;
            accEnergyFiPerShare = accEnergyFiPerShare.add(energyFiReward.mul(ACC_ENERGYFI_PRECISION) / lpSupply);
        }
        pending = int256(user.amount.mul(accEnergyFiPerShare) / ACC_ENERGYFI_PRECISION).sub(user.rewardDebt).toUInt256();
    }

    /// @notice Update reward variables for all pools. Be careful of gas spending!
    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.
    function massUpdatePools(uint256[] calldata pids) external {
        uint256 len = pids.length;
        for (uint256 i = 0; i < len; ++i) {
            updatePool(pids[i]);
        }
    }

    /// @notice Update reward variables of the given pool.
    /// @param pid The index of the pool. See `poolInfo`.
    /// @return pool Returns the pool that was updated.
    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {
        pool = poolInfo[pid];
        if (block.timestamp > pool.lastRewardTime) {
            uint256 lpSupply = lpToken[pid].balanceOf(address(this));
            if (lpSupply > 0) {
                uint256 time = block.timestamp.sub(pool.lastRewardTime);
                uint256 energyFiReward = time.mul(energyFiPerSecond).mul(pool.allocPoint) / totalAllocPoint;
                pool.accEnergyFiPerShare = pool.accEnergyFiPerShare.add((energyFiReward.mul(ACC_ENERGYFI_PRECISION) / lpSupply).to128());
            }
            pool.lastRewardTime = block.timestamp.to64();
            poolInfo[pid] = pool;
            emit LogUpdatePool(pid, pool.lastRewardTime, lpSupply, pool.accEnergyFiPerShare);
        }
    }

    /// @notice Deposit LP tokens to MCV2 for ENERGYFI allocation.
    /// @param pid The index of the pool. See `poolInfo`.
    /// @param amount LP token amount to deposit.
    /// @param to The receiver of `amount` deposit benefit.
    function deposit(uint256 pid, uint256 amount, address to) public {
        PoolInfo memory pool = updatePool(pid);
        UserInfo storage user = userInfo[pid][to];

        // Effects
        user.amount = user.amount.add(amount);
        user.rewardDebt = user.rewardDebt.add(int256(amount.mul(pool.accEnergyFiPerShare) / ACC_ENERGYFI_PRECISION));

        // Interactions
        IRewarder _rewarder = rewarder[pid];
        if (address(_rewarder) != address(0)) {
            _rewarder.onEnergyFiReward(pid, to, to, 0, user.amount);
        }

        lpToken[pid].safeTransferFrom(msg.sender, address(this), amount);

        emit Deposit(msg.sender, pid, amount, to);
    }

    /// @notice Withdraw LP tokens from MCV2.
    /// @param pid The index of the pool. See `poolInfo`.
    /// @param amount LP token amount to withdraw.
    /// @param to Receiver of the LP tokens.
    function withdraw(uint256 pid, uint256 amount, address to) public {
        PoolInfo memory pool = updatePool(pid);
        UserInfo storage user = userInfo[pid][msg.sender];

        // Effects
        user.rewardDebt = user.rewardDebt.sub(int256(amount.mul(pool.accEnergyFiPerShare) / ACC_ENERGYFI_PRECISION));
        user.amount = user.amount.sub(amount);

        // Interactions
        IRewarder _rewarder = rewarder[pid];
        if (address(_rewarder) != address(0)) {
            _rewarder.onEnergyFiReward(pid, msg.sender, to, 0, user.amount);
        }

        lpToken[pid].safeTransfer(to, amount);

        emit Withdraw(msg.sender, pid, amount, to);
    }

    /// @notice Harvest proceeds for transaction sender to `to`.
    /// @param pid The index of the pool. See `poolInfo`.
    /// @param to Receiver of ENERGYFI rewards.
    function harvest(uint256 pid, address to) public {
        PoolInfo memory pool = updatePool(pid);
        UserInfo storage user = userInfo[pid][msg.sender];
        int256 accumulatedEnergyFi = int256(user.amount.mul(pool.accEnergyFiPerShare) / ACC_ENERGYFI_PRECISION);
        uint256 _pendingEnergyFi = accumulatedEnergyFi.sub(user.rewardDebt).toUInt256();

        // Effects
        user.rewardDebt = accumulatedEnergyFi;

        // Interactions
        if (_pendingEnergyFi != 0) {
            ENERGYFI.safeTransfer(to, _pendingEnergyFi);
        }

        IRewarder _rewarder = rewarder[pid];
        if (address(_rewarder) != address(0)) {
            _rewarder.onEnergyFiReward( pid, msg.sender, to, _pendingEnergyFi, user.amount);
        }

        emit Harvest(msg.sender, pid, _pendingEnergyFi);
    }

    /// @notice Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.
    /// @param pid The index of the pool. See `poolInfo`.
    /// @param amount LP token amount to withdraw.
    /// @param to Receiver of the LP tokens and ENERGYFI rewards.
    function withdrawAndHarvest(uint256 pid, uint256 amount, address to) public {
        PoolInfo memory pool = updatePool(pid);
        UserInfo storage user = userInfo[pid][msg.sender];
        int256 accumulatedEnergyFi = int256(user.amount.mul(pool.accEnergyFiPerShare) / ACC_ENERGYFI_PRECISION);
        uint256 _pendingEnergyFi = accumulatedEnergyFi.sub(user.rewardDebt).toUInt256();

        // Effects
        user.rewardDebt = accumulatedEnergyFi.sub(int256(amount.mul(pool.accEnergyFiPerShare) / ACC_ENERGYFI_PRECISION));
        user.amount = user.amount.sub(amount);

        // Interactions
        ENERGYFI.safeTransfer(to, _pendingEnergyFi);

        IRewarder _rewarder = rewarder[pid];
        if (address(_rewarder) != address(0)) {
            _rewarder.onEnergyFiReward(pid, msg.sender, to, _pendingEnergyFi, user.amount);
        }

        lpToken[pid].safeTransfer(to, amount);

        emit Withdraw(msg.sender, pid, amount, to);
        emit Harvest(msg.sender, pid, _pendingEnergyFi);
    }

    /// @notice Withdraw without caring about rewards. EMERGENCY ONLY.
    /// @param pid The index of the pool. See `poolInfo`.
    /// @param to Receiver of the LP tokens.
    function emergencyWithdraw(uint256 pid, address to) public {
        UserInfo storage user = userInfo[pid][msg.sender];
        uint256 amount = user.amount;
        user.amount = 0;
        user.rewardDebt = 0;

        IRewarder _rewarder = rewarder[pid];
        if (address(_rewarder) != address(0)) {
            _rewarder.onEnergyFiReward(pid, msg.sender, to, 0, 0);
        }

        // Note: transfer can fail or succeed if `amount` is zero.
        lpToken[pid].safeTransfer(to, amount);
        emit EmergencyWithdraw(msg.sender, pid, amount, to);
    }
}

Contract ABI

[{"inputs":[{"internalType":"contract IERC20","name":"_energyFi","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Harvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"energyFiPerSecond","type":"uint256"}],"name":"LogEnergyFiPerSecond","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"allocPoint","type":"uint256"},{"indexed":true,"internalType":"contract IERC20","name":"lpToken","type":"address"},{"indexed":true,"internalType":"contract IRewarder","name":"rewarder","type":"address"}],"name":"LogPoolAddition","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"allocPoint","type":"uint256"},{"indexed":true,"internalType":"contract IRewarder","name":"rewarder","type":"address"},{"indexed":false,"internalType":"bool","name":"overwrite","type":"bool"}],"name":"LogSetPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint64","name":"lastRewardTime","type":"uint64"},{"indexed":false,"internalType":"uint256","name":"lpSupply","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accEnergyFiPerShare","type":"uint256"}],"name":"LogUpdatePool","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"ENERGYFI","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"contract IERC20","name":"_lpToken","type":"address"},{"internalType":"contract IRewarder","name":"_rewarder","type":"address"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addedTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"calls","type":"bytes[]"},{"internalType":"bool","name":"revertOnFail","type":"bool"}],"name":"batch","outputs":[{"internalType":"bool[]","name":"successes","type":"bool[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"energyFiPerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"harvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lpToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"pids","type":"uint256[]"}],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"migrator","outputs":[{"internalType":"contract IMigratorChef","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"pendingEnergyFi","outputs":[{"internalType":"uint256","name":"pending","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permitToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"uint128","name":"accEnergyFiPerShare","type":"uint128"},{"internalType":"uint64","name":"lastRewardTime","type":"uint64"},{"internalType":"uint64","name":"allocPoint","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"pools","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewarder","outputs":[{"internalType":"contract IRewarder","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"contract IRewarder","name":"_rewarder","type":"address"},{"internalType":"bool","name":"overwrite","type":"bool"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_energyFiPerSecond","type":"uint256"}],"name":"setEnergyFiPerSecond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IMigratorChef","name":"_migrator","type":"address"}],"name":"setMigrator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalAllocPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"},{"internalType":"bool","name":"direct","type":"bool"},{"internalType":"bool","name":"renounce","type":"bool"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"}],"name":"updatePool","outputs":[{"components":[{"internalType":"uint128","name":"accEnergyFiPerShare","type":"uint128"},{"internalType":"uint64","name":"lastRewardTime","type":"uint64"},{"internalType":"uint64","name":"allocPoint","type":"uint64"}],"internalType":"struct MiniChefV2.PoolInfo","name":"pool","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"int256","name":"rewardDebt","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawAndHarvest","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040523480156200001157600080fd5b5060405162002d7738038062002d77833981016040819052620000349162000089565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360601b6001600160601b031916608052620000b9565b6000602082840312156200009b578081fd5b81516001600160a01b0381168114620000b2578182fd5b9392505050565b60805160601c612c96620000e1600039806108d352806118015280611b245250612c966000f3fe6080604052600436106101c25760003560e01c806357a5b58c116100f75780638dbdbe6d11610095578063c346253d11610064578063c346253d146104f6578063d1abb90714610516578063d2423b5114610536578063e30c397814610557576101c2565b80638dbdbe6d1461047357806393f1a40b14610493578063983a68fa146104c1578063ab7de098146104d6576101c2565b80637c516e94116100d15780637c516e94146104095780637cd07e471461042957806388bba42f1461043e5780638da5cb5b1461045e576101c2565b806357a5b58c1461038f57806378ed5d1f146103af57806379d12ffb146103dc576101c2565b806323cf3118116101645780634c52436f1161013e5780634c52436f1461030d5780634e71e0c81461032d5780634f6c9ec21461034257806351eb05a614610362576101c2565b806323cf3118146102ad5780632f940c70146102cd578063454b0608146102ed576101c2565b80630ad58d2f116101a05780630ad58d2f146102295780631526fe271461024957806317caf6f11461027857806318fccc761461028d576101c2565b8063078dfbe7146101c7578063081e3eda146101e957806308db9a1f14610214575b600080fd5b3480156101d357600080fd5b506101e76101e23660046122a8565b61056c565b005b3480156101f557600080fd5b506101fe61065b565b60405161020b9190612b4a565b60405180910390f35b34801561022057600080fd5b506101fe610661565b34801561023557600080fd5b506101e7610244366004612568565b610667565b34801561025557600080fd5b506102696102643660046124d3565b6107f7565b60405161020b93929190612b20565b34801561028457600080fd5b506101fe610839565b34801561029957600080fd5b506101e76102a8366004612503565b61083f565b3480156102b957600080fd5b506101e76102c836600461228c565b6109d9565b3480156102d957600080fd5b506101e76102e8366004612503565b610a25565b3480156102f957600080fd5b506101e76103083660046124d3565b610b46565b34801561031957600080fd5b506101fe610328366004612503565b610e64565b34801561033957600080fd5b506101e7611064565b34801561034e57600080fd5b506101e761035d3660046124d3565b6110f1565b34801561036e57600080fd5b5061038261037d3660046124d3565b61115b565b60405161020b9190612ae7565b34801561039b57600080fd5b506101e76103aa36600461233b565b6113df565b3480156103bb57600080fd5b506103cf6103ca3660046124d3565b611415565b60405161020b9190612636565b3480156103e857600080fd5b506103fc6103f736600461228c565b61143c565b60405161020b9190612762565b34801561041557600080fd5b506101e76104243660046123b2565b611451565b34801561043557600080fd5b506103cf6114c5565b34801561044a57600080fd5b506101e7610459366004612595565b6114d4565b34801561046a57600080fd5b506103cf611641565b34801561047f57600080fd5b506101e761048e366004612568565b611650565b34801561049f57600080fd5b506104b36104ae366004612503565b6117db565b60405161020b929190612b92565b3480156104cd57600080fd5b506103cf6117ff565b3480156104e257600080fd5b506101e76104f1366004612532565b611823565b34801561050257600080fd5b506103cf6105113660046124d3565b611a49565b34801561052257600080fd5b506101e7610531366004612568565b611a56565b6105496105443660046122f2565b611c89565b60405161020b9291906126c8565b34801561056357600080fd5b506103cf611e19565b6000546001600160a01b0316331461059f5760405162461bcd60e51b815260040161059690612932565b60405180910390fd5b811561063a576001600160a01b0383161515806105b95750805b6105d55760405162461bcd60e51b81526004016105969061284c565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055610656565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b60035490565b60095481565b61066f612224565b6106788461115b565b600085815260066020908152604080832033845290915290208151919250906106ca9064e8d4a51000906106b69087906001600160801b0316611e28565b816106bd57fe5b6001840154919004611e65565b600182015580546106db9085611eb2565b81556005805460009190879081106106ef57fe5b6000918252602090912001546001600160a01b0316905080156107755781546040516392c9e72f60e01b81526001600160a01b038316916392c9e72f91610742918a9133918a9160009190600401612b53565b600060405180830381600087803b15801561075c57600080fd5b505af1158015610770573d6000803e3d6000fd5b505050505b6107a384866004898154811061078757fe5b6000918252602090912001546001600160a01b03169190611ed5565b836001600160a01b031686336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec2132886040516107e79190612b4a565b60405180910390a4505050505050565b6003818154811061080457fe5b6000918252602090912001546001600160801b03811691506001600160401b03600160801b8204811691600160c01b90041683565b60085481565b610847612224565b6108508361115b565b6000848152600660209081526040808320338452909152812082518154939450909264e8d4a510009161088c91906001600160801b0316611e28565b8161089357fe5b04905060006108b76108b2846001015484611e6590919063ffffffff16565b611fc3565b60018401839055905080156108fa576108fa6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683611ed5565b60006005878154811061090957fe5b6000918252602090912001546001600160a01b03169050801561098e5783546040516392c9e72f60e01b81526001600160a01b038316916392c9e72f9161095b918b9133918c91899190600401612b53565b600060405180830381600087803b15801561097557600080fd5b505af1158015610989573d6000803e3d6000fd5b505050505b86336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae0660924954846040516109c89190612b4a565b60405180910390a350505050505050565b6000546001600160a01b03163314610a035760405162461bcd60e51b815260040161059690612932565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60008281526006602090815260408083203384529091528120805482825560018201839055600580549293919286908110610a5c57fe5b6000918252602090912001546001600160a01b031690508015610ae1576040516392c9e72f60e01b81526001600160a01b038216906392c9e72f90610aae908890339089906000908190600401612b53565b600060405180830381600087803b158015610ac857600080fd5b505af1158015610adc573d6000803e3d6000fd5b505050505b610af384836004888154811061078757fe5b836001600160a01b031685336001600160a01b03167f2cac5e20e1541d836381527a43f651851e302817b71dc8e810284e69210c1c6b85604051610b379190612b4a565b60405180910390a45050505050565b6002546001600160a01b0316610b6e5760405162461bcd60e51b815260040161059690612a00565b600060048281548110610b7d57fe5b60009182526020822001546040516370a0823160e01b81526001600160a01b03909116925082906370a0823190610bb8903090600401612636565b60206040518083038186803b158015610bd057600080fd5b505afa158015610be4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0891906124eb565b60025460405163095ea7b360e01b81529192506001600160a01b038085169263095ea7b392610c3d92169085906004016126af565b602060405180830381600087803b158015610c5757600080fd5b505af1158015610c6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8f919061237a565b5060025460405163ce5494bb60e01b81526000916001600160a01b03169063ce5494bb90610cc1908690600401612636565b602060405180830381600087803b158015610cdb57600080fd5b505af1158015610cef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d139190612396565b6040516370a0823160e01b81529091506001600160a01b038216906370a0823190610d42903090600401612636565b60206040518083038186803b158015610d5a57600080fd5b505afa158015610d6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9291906124eb565b8214610db05760405162461bcd60e51b81526004016105969061287b565b6001600160a01b03811660009081526007602052604090205460ff1615610de95760405162461bcd60e51b81526004016105969061299c565b6001600160a01b03808216600090815260076020526040808220805460ff1990811660011790915592861682529020805490911690556004805482919086908110610e3057fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505050565b6000610e6e612224565b60038481548110610e7b57fe5b600091825260208083206040805160608101825291909301546001600160801b0380821683526001600160401b03600160801b8304811684860152600160c01b90920490911682850152888552600683528385206001600160a01b0389168652909252918320825160048054949650919492169288908110610ef957fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a0823190610f32903090600401612636565b60206040518083038186803b158015610f4a57600080fd5b505afa158015610f5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8291906124eb565b905083602001516001600160401b031642118015610f9f57508015155b1561102b576000610fc685602001516001600160401b031642611eb290919063ffffffff16565b90506000600854610ff987604001516001600160401b0316610ff360095486611e2890919063ffffffff16565b90611e28565b8161100057fe5b049050611026836110168364e8d4a51000611e28565b8161101d57fe5b86919004611fe9565b935050505b60018301548354611059916108b29164e8d4a510009061104b9087611e28565b8161105257fe5b0490611e65565b979650505050505050565b6001546001600160a01b031633811461108f5760405162461bcd60e51b815260040161059690612967565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6000546001600160a01b0316331461111b5760405162461bcd60e51b815260040161059690612932565b60098190556040517f555f61c75ba3cdc29937fb5d6cbc01d43a9f7cef8386c2e0465034905bca765b90611150908390612b4a565b60405180910390a150565b611163612224565b6003828154811061117057fe5b60009182526020918290206040805160608101825292909101546001600160801b03811683526001600160401b03600160801b82048116948401859052600160c01b909104169082015291504211156113da576000600483815481106111d257fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a082319061120b903090600401612636565b60206040518083038186803b15801561122357600080fd5b505afa158015611237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125b91906124eb565b905080156112fe57600061128583602001516001600160401b031642611eb290919063ffffffff16565b905060006008546112b285604001516001600160401b0316610ff360095486611e2890919063ffffffff16565b816112b957fe5b0490506112f06112df846112d28464e8d4a51000611e28565b816112d957fe5b0461200c565b85516001600160801b031690612035565b6001600160801b0316845250505b61130742612064565b6001600160401b03166020830152600380548391908590811061132657fe5b6000918252602091829020835191018054848401516040958601516001600160801b03199092166001600160801b039094169390931767ffffffffffffffff60801b1916600160801b6001600160401b0394851602176001600160c01b0316600160c01b93909116929092029190911790558301518351915185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad353926113d09290918691612ba0565b60405180910390a2505b919050565b8060005b8181101561140f576114068484838181106113fa57fe5b9050602002013561115b565b506001016113e3565b50505050565b6004818154811061142257fe5b6000918252602090912001546001600160a01b0316905081565b60076020526000908152604090205460ff1681565b60405163d505accf60e01b81526001600160a01b0389169063d505accf90611489908a908a908a908a908a908a908a9060040161266e565b600060405180830381600087803b1580156114a357600080fd5b505af11580156114b7573d6000803e3d6000fd5b505050505050505050505050565b6002546001600160a01b031681565b6000546001600160a01b031633146114fe5760405162461bcd60e51b815260040161059690612932565b61153d836115376003878154811061151257fe5b60009182526020909120015460085490600160c01b90046001600160401b0316611eb2565b90611fe9565b60085561154983612064565b6003858154811061155657fe5b9060005260206000200160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555080156115ca57816005858154811061159b57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b806115f657600584815481106115dc57fe5b6000918252602090912001546001600160a01b03166115f8565b815b6001600160a01b0316847f95895a6ab1df54420d241b55243258a33e61b2194db66c1179ec521aae8e18658584604051611633929190612b82565b60405180910390a350505050565b6000546001600160a01b031681565b611658612224565b6116618461115b565b60008581526006602090815260408083206001600160a01b038716845290915290208054919250906116939085611fe9565b815581516116ca9064e8d4a51000906116b69087906001600160801b0316611e28565b816116bd57fe5b600184015491900461208d565b81600101819055506000600586815481106116e157fe5b6000918252602090912001546001600160a01b0316905080156117675781546040516392c9e72f60e01b81526001600160a01b038316916392c9e72f91611734918a918991829160009190600401612b53565b600060405180830381600087803b15801561174e57600080fd5b505af1158015611762573d6000803e3d6000fd5b505050505b61179733308760048a8154811061177a57fe5b6000918252602090912001546001600160a01b03169291906120d3565b836001600160a01b031686336001600160a01b03167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b47886040516107e79190612b4a565b60066020908152600092835260408084209091529082529020805460019091015482565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b0316331461184d5760405162461bcd60e51b815260040161059690612932565b6001600160a01b03821660009081526007602052604090205460ff16156118865760405162461bcd60e51b81526004016105969061299c565b6008546118939084611fe9565b6008556004805460018181019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b038086166001600160a01b03199283161790925560058054938401815560009081527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090930180549285169290911691909117905560408051606081019091529081526003906020810161194042612064565b6001600160401b0316815260200161195786612064565b6001600160401b0390811690915282546001818101855560009485526020808620855193018054828701516040978801518716600160c01b026001600160c01b0391909716600160801b0267ffffffffffffffff60801b196001600160801b039097166001600160801b031990931692909217959095161793909316939093179091556001600160a01b03808716808652600790935292909320805460ff191684179055600454918416929091611a0d91611eb2565b7f81ee0f8c5c46e2cb41984886f77a84181724abb86c32a5f6de539b07509d45e586604051611a3c9190612b4a565b60405180910390a4505050565b6005818154811061142257fe5b611a5e612224565b611a678461115b565b6000858152600660209081526040808320338452909152812082518154939450909264e8d4a5100091611aa391906001600160801b0316611e28565b81611aaa57fe5b0490506000611ac96108b2846001015484611e6590919063ffffffff16565b9050611b0464e8d4a51000611af486600001516001600160801b031689611e2890919063ffffffff16565b81611afb57fe5b84919004611e65565b60018401558254611b159087611eb2565b8355611b4b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683611ed5565b600060058881548110611b5a57fe5b6000918252602090912001546001600160a01b031690508015611bdf5783546040516392c9e72f60e01b81526001600160a01b038316916392c9e72f91611bac918c9133918c91899190600401612b53565b600060405180830381600087803b158015611bc657600080fd5b505af1158015611bda573d6000803e3d6000fd5b505050505b611bf1868860048b8154811061078757fe5b856001600160a01b031688336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec21328a604051611c359190612b4a565b60405180910390a487336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae066092495484604051611c779190612b4a565b60405180910390a35050505050505050565b606080836001600160401b0381118015611ca257600080fd5b50604051908082528060200260200182016040528015611ccc578160200160208202803683370190505b509150836001600160401b0381118015611ce557600080fd5b50604051908082528060200260200182016040528015611d1957816020015b6060815260200190600190039081611d045790505b50905060005b84811015611e10576000606030888885818110611d3857fe5b9050602002810190611d4a9190612bca565b604051611d5892919061260a565b600060405180830381855af49150503d8060008114611d93576040519150601f19603f3d011682016040523d82523d6000602084013e611d98565b606091505b50915091508180611da7575085155b611db0826121c4565b90611dce5760405162461bcd60e51b8152600401610596919061276d565b5081858481518110611ddc57fe5b60200260200101901515908115158152505080848481518110611dfb57fe5b60209081029190910101525050600101611d1f565b50935093915050565b6001546001600160a01b031681565b6000811580611e4357505080820282828281611e4057fe5b04145b611e5f5760405162461bcd60e51b815260040161059690612ab0565b92915050565b6000818303818312801590611e7a5750838113155b80611e8f5750600083128015611e8f57508381135b611eab5760405162461bcd60e51b815260040161059690612a37565b9392505050565b80820382811115611e5f5760405162461bcd60e51b815260040161059690612780565b60006060846001600160a01b031663a9059cbb8585604051602401611efb9291906126af565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051611f34919061261a565b6000604051808303816000865af19150503d8060008114611f71576040519150601f19603f3d011682016040523d82523d6000602084013e611f76565b606091505b5091509150818015611fa0575080511580611fa0575080806020019051810190611fa0919061237a565b611fbc5760405162461bcd60e51b8152600401610596906127d4565b5050505050565b600080821215611fe55760405162461bcd60e51b8152600401610596906127af565b5090565b81810181811015611e5f5760405162461bcd60e51b8152600401610596906128fb565b60006001600160801b03821115611fe55760405162461bcd60e51b8152600401610596906128c4565b8181016001600160801b038083169082161015611e5f5760405162461bcd60e51b8152600401610596906128fb565b60006001600160401b03821115611fe55760405162461bcd60e51b8152600401610596906129c9565b60008282018183128015906120a25750838112155b806120b757506000831280156120b757508381125b611eab5760405162461bcd60e51b81526004016105969061280b565b60006060856001600160a01b03166323b872dd8686866040516024016120fb9392919061264a565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051612134919061261a565b6000604051808303816000865af19150503d8060008114612171576040519150601f19603f3d011682016040523d82523d6000602084013e612176565b606091505b50915091508180156121a05750805115806121a05750808060200190518101906121a0919061237a565b6121bc5760405162461bcd60e51b815260040161059690612a7b565b505050505050565b606060448251101561220a575060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c7900000060208201526113da565b60048201915081806020019051810190611e5f9190612439565b604080516060810182526000808252602082018190529181019190915290565b60008083601f840112612255578182fd5b5081356001600160401b0381111561226b578182fd5b602083019150836020808302850101111561228557600080fd5b9250929050565b60006020828403121561229d578081fd5b8135611eab81612c3a565b6000806000606084860312156122bc578182fd5b83356122c781612c3a565b925060208401356122d781612c52565b915060408401356122e781612c52565b809150509250925092565b600080600060408486031215612306578283fd5b83356001600160401b0381111561231b578384fd5b61232786828701612244565b90945092505060208401356122e781612c52565b6000806020838503121561234d578182fd5b82356001600160401b03811115612362578283fd5b61236e85828601612244565b90969095509350505050565b60006020828403121561238b578081fd5b8151611eab81612c52565b6000602082840312156123a7578081fd5b8151611eab81612c3a565b600080600080600080600080610100898b0312156123ce578384fd5b88356123d981612c3a565b975060208901356123e981612c3a565b965060408901356123f981612c3a565b9550606089013594506080890135935060a089013560ff8116811461241c578384fd5b979a969950949793969295929450505060c08201359160e0013590565b60006020828403121561244a578081fd5b81516001600160401b0380821115612460578283fd5b818401915084601f830112612473578283fd5b815181811115612481578384fd5b604051601f8201601f1916810160200183811182821017156124a1578586fd5b6040528181528382016020018710156124b8578485fd5b6124c9826020830160208701612c0e565b9695505050505050565b6000602082840312156124e4578081fd5b5035919050565b6000602082840312156124fc578081fd5b5051919050565b60008060408385031215612515578182fd5b82359150602083013561252781612c3a565b809150509250929050565b600080600060608486031215612546578081fd5b83359250602084013561255881612c3a565b915060408401356122e781612c3a565b60008060006060848603121561257c578081fd5b833592506020840135915060408401356122e781612c3a565b600080600080608085870312156125aa578182fd5b843593506020850135925060408501356125c381612c3a565b915060608501356125d381612c52565b939692955090935050565b600081518084526125f6816020860160208601612c0e565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b6000825161262c818460208701612c0e565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156127035781511515845292840192908401906001016126e5565b5050508381038285015280855161271a8184612b4a565b91508192508381028201848801865b838110156127535785830385526127418383516125de565b94870194925090860190600101612729565b50909998505050505050505050565b901515815260200190565b600060208252611eab60208301846125de565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b6020808252600b908201526a0496e7465676572203c20360ac1b604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b60208082526029908201527f4d61737465724368656656323a206d696772617465642062616c616e6365206d6040820152680eae6e840dac2e8c6d60bb1b606082015260800190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b602080825260139082015272151bdad95b88185b1c9958591e481859191959606a1b604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b6020808252601d908201527f4d61737465724368656656323a206e6f206d69677261746f7220736574000000604082015260600190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604082015263666c6f7760e01b606082015260800190565b6020808252818101527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b81516001600160801b031681526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b6001600160801b039390931683526001600160401b03918216602084015216604082015260600190565b90815260200190565b9485526001600160a01b0393841660208601529190921660408401526060830191909152608082015260a00190565b9182521515602082015260400190565b918252602082015260400190565b6001600160401b0393909316835260208301919091526001600160801b0316604082015260600190565b6000808335601e19843603018112612be0578283fd5b8301803591506001600160401b03821115612bf9578283fd5b60200191503681900382131561228557600080fd5b60005b83811015612c29578181015183820152602001612c11565b8381111561140f5750506000910152565b6001600160a01b0381168114612c4f57600080fd5b50565b8015158114612c4f57600080fdfea2646970667358221220fa1ff0db57d69b66765199fe59ab7c6432638a46f8ad5a71b7efacdf6d60c5f364736f6c634300060c00330000000000000000000000009f6e0e615585a8248de15362393565415e71de3d

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

0000000000000000000000009f6e0e615585a8248de15362393565415e71de3d

-----Decoded View---------------
Arg [0] : _energyFi (address): 0x9f6e0e615585a8248de15362393565415e71de3d

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000009f6e0e615585a8248de15362393565415e71de3d


Deployed ByteCode Sourcemap

13741:13414:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7770:472;;;;;;;;;;-1:-1:-1;7770:472:0;;;;;:::i;:::-;;:::i;:::-;;16453:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15358:32;;;;;;;;;;;;;:::i;23363:688::-;;;;;;;;;;-1:-1:-1;23363:688:0;;;;;:::i;:::-;;:::i;14789:26::-;;;;;;;;;;-1:-1:-1;14789:26:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;15319:30::-;;;;;;;;;;;;;:::i;24233:836::-;;;;;;;;;;-1:-1:-1;24233:836:0;;;;;:::i;:::-;;:::i;18848:102::-;;;;;;;;;;-1:-1:-1;18848:102:0;;;;;:::i;:::-;;:::i;26574:578::-;;;;;;;;;;-1:-1:-1;26574:578:0;;;;;:::i;:::-;;:::i;19108:665::-;;;;;;;;;;-1:-1:-1;19108:665:0;;;;;:::i;:::-;;:::i;20007:835::-;;;;;;;;;;-1:-1:-1;20007:835:0;;;;;:::i;:::-;;:::i;8291:348::-;;;;;;;;;;;;;:::i;18518:188::-;;;;;;;;;;-1:-1:-1;18518:188:0;;;;;:::i;:::-;;:::i;21401:806::-;;;;;;;;;;-1:-1:-1;21401:806:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;21024:193::-;;;;;;;;;;-1:-1:-1;21024:193:0;;;;;:::i;:::-;;:::i;14883:23::-;;;;;;;;;;-1:-1:-1;14883:23:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;15172:44::-;;;;;;;;;;-1:-1:-1;15172:44:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6698:246::-;;;;;;;;;;-1:-1:-1;6698:246:0;;;;;:::i;:::-;;:::i;14710:29::-;;;;;;;;;;;;;:::i;17913:411::-;;;;;;;;;;-1:-1:-1;17913:411:0;;;;;:::i;:::-;;:::i;7346:20::-;;;;;;;;;;;;;:::i;22454:697::-;;;;;;;;;;-1:-1:-1;22454:697:0;;;;;:::i;:::-;;:::i;15070:66::-;;;;;;;;;;-1:-1:-1;15070:66:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;14565:32::-;;;;;;;;;;;;;:::i;16892:624::-;;;;;;;;;;-1:-1:-1;16892:624:0;;;;;:::i;:::-;;:::i;14976:27::-;;;;;;;;;;-1:-1:-1;14976:27:0;;;;;:::i;:::-;;:::i;25354:1035::-;;;;;;;;;;-1:-1:-1;25354:1035:0;;;;;:::i;:::-;;:::i;5797:554::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;7393:27::-;;;;;;;;;;;;;:::i;7770:472::-;8742:5;;-1:-1:-1;;;;;8742:5:0;8728:10;:19;8720:64;;;;-1:-1:-1;;;8720:64:0;;;;;;;:::i;:::-;;;;;;;;;7875:6:::1;7871:364;;;-1:-1:-1::0;;;;;7929:22:0;::::1;::::0;::::1;::::0;:34:::1;;;7955:8;7929:34;7921:68;;;;-1:-1:-1::0;;;7921:68:0::1;;;;;;;:::i;:::-;8056:5;::::0;;8035:37:::1;::::0;-1:-1:-1;;;;;8035:37:0;;::::1;::::0;8056:5;::::1;::::0;8035:37:::1;::::0;::::1;8087:5;:16:::0;;-1:-1:-1;;;;;8087:16:0;::::1;-1:-1:-1::0;;;;;;8087:16:0;;::::1;;::::0;;;;8118:25;;;;::::1;::::0;;7871:364:::1;;;8200:12;:23:::0;;-1:-1:-1;;;;;;8200:23:0::1;-1:-1:-1::0;;;;;8200:23:0;::::1;;::::0;;7871:364:::1;7770:472:::0;;;:::o;16453:100::-;16530:8;:15;;16453:100::o;15358:32::-;;;;:::o;23363:688::-;23440:20;;:::i;:::-;23463:15;23474:3;23463:10;:15::i;:::-;23489:21;23513:13;;;:8;:13;;;;;;;;23527:10;23513:25;;;;;;;23627:24;;23440:38;;-1:-1:-1;23513:25:0;23589:90;;15447:4;;23616:36;;:6;;-1:-1:-1;;;;;23616:36:0;:10;:36::i;:::-;:61;;;;;23589:15;;;;;23616:61;;23589:19;:90::i;:::-;23571:15;;;:108;23704:11;;:23;;23720:6;23704:15;:23::i;:::-;23690:37;;23787:8;:13;;23690:11;;23787:8;23796:3;;23787:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23787:13:0;;-1:-1:-1;23815:32:0;;23811:128;;23915:11;;23864:63;;-1:-1:-1;;;23864:63:0;;-1:-1:-1;;;;;23864:26:0;;;;;:63;;23891:3;;23896:10;;23908:2;;23912:1;;23915:11;23864:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23811:128;23951:37;23977:2;23981:6;23951:7;23959:3;23951:12;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23951:12:0;;:37;:25;:37::i;:::-;24040:2;-1:-1:-1;;;;;24006:37:0;24027:3;24015:10;-1:-1:-1;;;;;24006:37:0;;24032:6;24006:37;;;;;;:::i;:::-;;;;;;;;23363:688;;;;;;:::o;14789:26::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14789:26:0;;;-1:-1:-1;;;;;;;;;14789:26:0;;;;;-1:-1:-1;;;14789:26:0;;;;:::o;15319:30::-;;;;:::o;24233:836::-;24293:20;;:::i;:::-;24316:15;24327:3;24316:10;:15::i;:::-;24342:21;24366:13;;;:8;:13;;;;;;;;24380:10;24366:25;;;;;;;24454:24;;24438:11;;24293:38;;-1:-1:-1;24366:25:0;;15447:4;;24438:41;;:11;-1:-1:-1;;;;;24438:41:0;:15;:41::i;:::-;:66;;;;;;24402:103;;24516:24;24543:52;:40;24567:4;:15;;;24543:19;:23;;:40;;;;:::i;:::-;:50;:52::i;:::-;24628:15;;;:37;;;24516:79;-1:-1:-1;24707:21:0;;24703:97;;24745:43;-1:-1:-1;;;;;24745:8:0;:21;24767:2;24771:16;24745:21;:43::i;:::-;24812:19;24834:8;24843:3;24834:13;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24834:13:0;;-1:-1:-1;24862:32:0;;24858:144;;24978:11;;24911:79;;-1:-1:-1;;;24911:79:0;;-1:-1:-1;;;;;24911:26:0;;;;;:79;;24939:3;;24944:10;;24956:2;;24960:16;;24978:11;24911:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24858:144;25039:3;25027:10;-1:-1:-1;;;;;25019:42:0;;25044:16;25019:42;;;;;;:::i;:::-;;;;;;;;24233:836;;;;;;;:::o;18848:102::-;8742:5;;-1:-1:-1;;;;;8742:5:0;8728:10;:19;8720:64;;;;-1:-1:-1;;;8720:64:0;;;;;;;:::i;:::-;18922:8:::1;:20:::0;;-1:-1:-1;;;;;;18922:20:0::1;-1:-1:-1::0;;;;;18922:20:0;;;::::1;::::0;;;::::1;::::0;;18848:102::o;26574:578::-;26644:21;26668:13;;;:8;:13;;;;;;;;26682:10;26668:25;;;;;;;26721:11;;26743:15;;;-1:-1:-1;26769:15:0;;:19;;;26823:8;:13;;26668:25;;26721:11;;26677:3;;26823:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26823:13:0;;-1:-1:-1;26851:32:0;;26847:118;;26900:53;;-1:-1:-1;;;26900:53:0;;-1:-1:-1;;;;;26900:26:0;;;;;:53;;26927:3;;26932:10;;26944:2;;26948:1;;;;26900:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26847:118;27045:37;27071:2;27075:6;27045:7;27053:3;27045:12;;;;;;;:37;27141:2;-1:-1:-1;;;;;27098:46:0;27128:3;27116:10;-1:-1:-1;;;;;27098:46:0;;27133:6;27098:46;;;;;;:::i;:::-;;;;;;;;26574:578;;;;;:::o;19108:665::-;19173:8;;-1:-1:-1;;;;;19173:8:0;19157:73;;;;-1:-1:-1;;;19157:73:0;;;;;;;:::i;:::-;19241:15;19259:7;19267:4;19259:13;;;;;;;;;;;;;;;;;19297:33;;-1:-1:-1;;;19297:33:0;;-1:-1:-1;;;;;19259:13:0;;;;-1:-1:-1;19259:13:0;;19297:18;;:33;;19324:4;;19297:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19366:8;;19341:40;;-1:-1:-1;;;19341:40:0;;19283:47;;-1:-1:-1;;;;;;19341:16:0;;;;;;:40;;19366:8;;19283:47;;19341:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;19412:8:0;;:26;;-1:-1:-1;;;19412:26:0;;19392:17;;-1:-1:-1;;;;;19412:8:0;;:16;;:26;;19429:8;;19412:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19464:35;;-1:-1:-1;;;19464:35:0;;19392:46;;-1:-1:-1;;;;;;19464:20:0;;;;;:35;;19493:4;;19464:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19457:3;:42;19449:96;;;;-1:-1:-1;;;19449:96:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19564:32:0;;;;;;:11;:32;;;;;;;;:41;19556:73;;;;-1:-1:-1;;;19556:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19640:32:0;;;;;;;:11;:32;;;;;;:39;;-1:-1:-1;;19640:39:0;;;19675:4;19640:39;;;;19690:30;;;;;;;:38;;;;;;;19739:7;:13;;19660:10;;19739:7;19747:4;;19739:13;;;;;;;;;;;;;;:26;;;;;-1:-1:-1;;;;;19739:26:0;;;;;-1:-1:-1;;;;;19739:26:0;;;;;;19108:665;;;;:::o;20007:835::-;20084:15;20112:20;;:::i;:::-;20135:8;20144:4;20135:14;;;;;;;;;;;;;;;;20112:37;;;;;;;;20135:14;;;;20112:37;-1:-1:-1;;;;;20112:37:0;;;;;-1:-1:-1;;;;;;;;20112:37:0;;;;;;;;-1:-1:-1;;;20112:37:0;;;;;;;;;;20184:14;;;:8;:14;;;;;-1:-1:-1;;;;;20184:21:0;;;;;;;;;;20246:24;;20300:7;:13;;20112:37;;-1:-1:-1;20184:21:0;;20216:54;;;20193:4;;20300:13;;;;;;;;;;;;;;;;:38;;-1:-1:-1;;;20300:38:0;;-1:-1:-1;;;;;20300:13:0;;;;:23;;:38;;20332:4;;20300:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20281:57;;20371:4;:19;;;-1:-1:-1;;;;;20353:37:0;:15;:37;:54;;;;-1:-1:-1;20394:13:0;;;20353:54;20349:363;;;20424:12;20439:40;20459:4;:19;;;-1:-1:-1;;;;;20439:40:0;:15;:19;;:40;;;;:::i;:::-;20424:55;;20494:22;20570:15;;20519:48;20551:4;:15;;;-1:-1:-1;;;;;20519:48:0;:27;20528:17;;20519:4;:8;;:27;;;;:::i;:::-;:31;;:48::i;:::-;:66;;;;;;;-1:-1:-1;20622:78:0;20691:8;20646:42;20519:66;15447:4;20646:18;:42::i;:::-;:53;;;;;20622:19;;20646:53;;20622:23;:78::i;:::-;20600:100;;20349:363;;;20806:15;;;;20739:11;;20732:102;;:90;;15447:4;;20739:36;;20755:19;20739:15;:36::i;:::-;:61;;;;;;;20732:73;:90::i;:102::-;20722:112;20007:835;-1:-1:-1;;;;;;;20007:835:0:o;8291:348::-;8359:12;;-1:-1:-1;;;;;8359:12:0;8419:10;:27;;8411:72;;;;-1:-1:-1;;;8411:72:0;;;;;;;:::i;:::-;8542:5;;;8521:42;;-1:-1:-1;;;;;8521:42:0;;;;8542:5;;;8521:42;;;8574:5;:21;;-1:-1:-1;;;;;8574:21:0;;;-1:-1:-1;;;;;;8574:21:0;;;;;;;8606:25;;;;;;;8291:348::o;18518:188::-;8742:5;;-1:-1:-1;;;;;8742:5:0;8728:10;:19;8720:64;;;;-1:-1:-1;;;8720:64:0;;;;;;;:::i;:::-;18604:17:::1;:38:::0;;;18658:40:::1;::::0;::::1;::::0;::::1;::::0;18624:18;;18658:40:::1;:::i;:::-;;;;;;;;18518:188:::0;:::o;21401:806::-;21450:20;;:::i;:::-;21490:8;21499:3;21490:13;;;;;;;;;;;;;;;;;21483:20;;;;;;;;21490:13;;;;21483:20;-1:-1:-1;;;;;21483:20:0;;;;-1:-1:-1;;;;;;;;21483:20:0;;;;;;;;;;-1:-1:-1;;;21483:20:0;;;;;;;;;-1:-1:-1;21518:15:0;:37;21514:686;;;21572:16;21591:7;21599:3;21591:12;;;;;;;;;;;;;;;;;;:37;;-1:-1:-1;;;21591:37:0;;-1:-1:-1;;;;;21591:12:0;;;;:22;;:37;;21622:4;;21591:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21572:56;-1:-1:-1;21647:12:0;;21643:357;;21680:12;21695:40;21715:4;:19;;;-1:-1:-1;;;;;21695:40:0;:15;:19;;:40;;;;:::i;:::-;21680:55;;21754:22;21830:15;;21779:48;21811:4;:15;;;-1:-1:-1;;;;;21779:48:0;:27;21788:17;;21779:4;:8;;:27;;;;:::i;:48::-;:66;;;;;;;-1:-1:-1;21891:93:0;21920:63;21966:8;21921:42;21779:66;15447:4;21921:18;:42::i;:::-;:53;;;;;;21920:61;:63::i;:::-;21891:24;;-1:-1:-1;;;;;21891:28:0;;;:93::i;:::-;-1:-1:-1;;;;;21864:120:0;;;-1:-1:-1;;21643:357:0;22036:22;:15;:20;:22::i;:::-;-1:-1:-1;;;;;22014:44:0;:19;;;:44;22073:8;:13;;22014:4;;22073:8;22082:3;;22073:13;;;;;;;;;;;;;;;:20;;:13;;:20;;;;;;;;;;;-1:-1:-1;;;;;;22073:20:0;;;-1:-1:-1;;;;;22073:20:0;;;;;;;-1:-1:-1;;;;22073:20:0;-1:-1:-1;;;;;;;;22073:20:0;;;;;-1:-1:-1;;;;;22073:20:0;-1:-1:-1;;;22073:20:0;;;;;;;;;;;;;;22132:19;;;22163:24;;22113:75;;22127:3;;22113:75;;;;22132:19;;22153:8;;22113:75;:::i;:::-;;;;;;;;21514:686;;21401:806;;;:::o;21024:193::-;21108:4;21094:11;21130:80;21154:3;21150:1;:7;21130:80;;;21179:19;21190:4;;21195:1;21190:7;;;;;;;;;;;;;21179:10;:19::i;:::-;-1:-1:-1;21159:3:0;;21130:80;;;;21024:193;;;:::o;14883:23::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14883:23:0;;-1:-1:-1;14883:23:0;:::o;15172:44::-;;;;;;;;;;;;;;;:::o;6698:246::-;6887:49;;-1:-1:-1;;;6887:49:0;;-1:-1:-1;;;;;6887:12:0;;;;;:49;;6900:4;;6906:2;;6910:6;;6918:8;;6928:1;;6931;;6934;;6887:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6698:246;;;;;;;;:::o;14710:29::-;;;-1:-1:-1;;;;;14710:29:0;;:::o;17913:411::-;8742:5;;-1:-1:-1;;;;;8742:5:0;8728:10;:19;8720:64;;;;-1:-1:-1;;;8720:64:0;;;;;;;:::i;:::-;18044:63:::1;18095:11;18044:46;18064:8;18073:4;18064:14;;;;;;;;;::::0;;;::::1;::::0;;;::::1;:25:::0;18044:15:::1;::::0;;-1:-1:-1;;;18064:25:0;::::1;-1:-1:-1::0;;;;;18064:25:0::1;18044:19;:46::i;:::-;:50:::0;::::1;:63::i;:::-;18026:15;:81:::0;18146:18:::1;:11:::0;:16:::1;:18::i;:::-;18118:8;18127:4;18118:14;;;;;;;;;;;;;;;:25;;;:46;;;;;-1:-1:-1::0;;;;;18118:46:0::1;;;;;-1:-1:-1::0;;;;;18118:46:0::1;;;;;;18179:9;18175:46;;;18209:9;18192:8;18201:4;18192:14;;;;;;;;;;;;;;;;:26;;;;;-1:-1:-1::0;;;;;18192:26:0::1;;;;;-1:-1:-1::0;;;;;18192:26:0::1;;;;;;18175:46;18266:9;:38;;18290:8;18299:4;18290:14;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;18290:14:0::1;18266:38;;;18278:9;18266:38;-1:-1:-1::0;;;;;18236:80:0::1;18247:4;18236:80;18253:11;18306:9;18236:80;;;;;;;:::i;:::-;;;;;;;;17913:411:::0;;;;:::o;7346:20::-;;;-1:-1:-1;;;;;7346:20:0;;:::o;22454:697::-;22530:20;;:::i;:::-;22553:15;22564:3;22553:10;:15::i;:::-;22579:21;22603:13;;;:8;:13;;;;;;;;-1:-1:-1;;;;;22603:17:0;;;;;;;;;22667:11;;22530:38;;-1:-1:-1;22603:17:0;22667:23;;22683:6;22667:15;:23::i;:::-;22653:37;;22757:24;;22719:90;;15447:4;;22746:36;;:6;;-1:-1:-1;;;;;22746:36:0;:10;:36::i;:::-;:61;;;;;22719:15;;;;;22746:61;;22719:19;:90::i;:::-;22701:4;:15;;:108;;;;22847:19;22869:8;22878:3;22869:13;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22869:13:0;;-1:-1:-1;22897:32:0;;22893:120;;22989:11;;22946:55;;-1:-1:-1;;;22946:55:0;;-1:-1:-1;;;;;22946:26:0;;;;;:55;;22973:3;;22978:2;;;;22986:1;;22989:11;22946:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22893:120;23025:64;23055:10;23075:4;23082:6;23025:7;23033:3;23025:12;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23025:12:0;;:64;;:29;:64::i;:::-;23140:2;-1:-1:-1;;;;;23107:36:0;23127:3;23115:10;-1:-1:-1;;;;;23107:36:0;;23132:6;23107:36;;;;;;:::i;15070:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14565:32::-;;;:::o;16892:624::-;8742:5;;-1:-1:-1;;;;;8742:5:0;8728:10;:19;8720:64;;;;-1:-1:-1;;;8720:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16999:30:0;::::1;;::::0;;;:11:::1;:30;::::0;;;;;::::1;;:39;16991:71;;;;-1:-1:-1::0;;;16991:71:0::1;;;;;;;:::i;:::-;17091:15;::::0;:31:::1;::::0;17111:10;17091:19:::1;:31::i;:::-;17073:15;:49:::0;17133:7:::1;:22:::0;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;;-1:-1:-1;;;;;17133:22:0;;::::1;-1:-1:-1::0;;;;;;17133:22:0;;::::1;;::::0;;;17166:8:::1;:24:::0;;;;::::1;::::0;;-1:-1:-1;17166:24:0;;;;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;17217:155:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;17203:8:::1;::::0;17133:22:::1;17217:155:::0;::::1;17301:22;:15;:20;:22::i;:::-;-1:-1:-1::0;;;;;17217:155:0::1;;;;;17253:17;:10;:15;:17::i;:::-;-1:-1:-1::0;;;;;17217:155:0;;::::1;::::0;;;17203:170;;::::1;::::0;;::::1;::::0;;-1:-1:-1;17203:170:0;;;::::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;17203:170:0::1;-1:-1:-1::0;;;;;17203:170:0;;;::::1;-1:-1:-1::0;;;17203:170:0::1;-1:-1:-1::0;;;;;;;;;17203:170:0;;::::1;-1:-1:-1::0;;;;;;17203:170:0;;::::1;::::0;;;::::1;::::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;;;;17384:30:0;;::::1;::::0;;;:11:::1;:30:::0;;;;;;;:37;;-1:-1:-1;;17384:37:0::1;::::0;::::1;::::0;;17453:7:::1;:14:::0;17437:71;;::::1;::::0;17384:30;;17453:21:::1;::::0;:18:::1;:21::i;:::-;17437:71;17476:10;17437:71;;;;;;:::i;:::-;;;;;;;;16892:624:::0;;;:::o;14976:27::-;;;;;;;;;;25354:1035;25441:20;;:::i;:::-;25464:15;25475:3;25464:10;:15::i;:::-;25490:21;25514:13;;;:8;:13;;;;;;;;25528:10;25514:25;;;;;;;25602:24;;25586:11;;25441:38;;-1:-1:-1;25514:25:0;;15447:4;;25586:41;;:11;-1:-1:-1;;;;;25586:41:0;:15;:41::i;:::-;:66;;;;;;25550:103;;25664:24;25691:52;:40;25715:4;:15;;;25691:19;:23;;:40;;;;:::i;:52::-;25664:79;;25794:94;15447:4;25825:36;25836:4;:24;;;-1:-1:-1;;;;;25825:36:0;:6;:10;;:36;;;;:::i;:::-;:61;;;;;25794:19;;25825:61;;25794:23;:94::i;:::-;25776:15;;;:112;25913:11;;:23;;25929:6;25913:15;:23::i;:::-;25899:37;;25974:43;-1:-1:-1;;;;;25974:8:0;:21;25996:2;26000:16;25974:21;:43::i;:::-;26030:19;26052:8;26061:3;26052:13;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26052:13:0;;-1:-1:-1;26080:32:0;;26076:143;;26195:11;;26129:78;;-1:-1:-1;;;26129:78:0;;-1:-1:-1;;;;;26129:26:0;;;;;:78;;26156:3;;26161:10;;26173:2;;26177:16;;26195:11;26129:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26076:143;26231:37;26257:2;26261:6;26231:7;26239:3;26231:12;;;;;;;:37;26320:2;-1:-1:-1;;;;;26286:37:0;26307:3;26295:10;-1:-1:-1;;;;;26286:37:0;;26312:6;26286:37;;;;;;:::i;:::-;;;;;;;;26359:3;26347:10;-1:-1:-1;;;;;26339:42:0;;26364:16;26339:42;;;;;;:::i;:::-;;;;;;;;25354:1035;;;;;;;;:::o;5797:554::-;5880:23;;5988:5;-1:-1:-1;;;;;5977:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5977:24:0;-1:-1:-1;5965:36:0;-1:-1:-1;6034:5:0;-1:-1:-1;;;;;6022:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6012:35;;6063:9;6058:286;6078:16;;;6058:286;;;6117:12;6131:19;6162:4;6181:5;;6187:1;6181:8;;;;;;;;;;;;;;;;;;:::i;:::-;6154:36;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6116:74;;;;6213:7;:24;;;;6225:12;6224:13;6213:24;6239:21;6253:6;6239:13;:21::i;:::-;6205:56;;;;;-1:-1:-1;;;6205:56:0;;;;;;;;:::i;:::-;;6291:7;6276:9;6286:1;6276:12;;;;;;;;;;;;;:22;;;;;;;;;;;6326:6;6313:7;6321:1;6313:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;6096:3:0;;6058:286;;;;5797:554;;;;;;:::o;7393:27::-;;;-1:-1:-1;;;;;7393:27:0;;:::o;694:137::-;752:9;772:6;;;:28;;-1:-1:-1;;787:5:0;;;799:1;794;787:5;794:1;782:13;;;;;:18;772:28;764:65;;;;-1:-1:-1;;;764:65:0;;;;;;;:::i;:::-;694:137;;;;:::o;10789:218::-;10845:6;10875:5;;;10900:6;;;;;;:16;;;10915:1;10910;:6;;10900:16;10899:38;;;;10926:1;10922;:5;:14;;;;;10935:1;10931;:5;10922:14;10891:87;;;;-1:-1:-1;;;10891:87:0;;;;;;;:::i;:::-;10998:1;10789:218;-1:-1:-1;;;10789:218:0:o;566:122::-;649:5;;;644:16;;;;636:50;;;;-1:-1:-1;;;636:50:0;;;;;;;:::i;3887:304::-;3972:12;3986:17;4015:5;-1:-1:-1;;;;;4007:19:0;4050:10;4062:2;4066:6;4027:46;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4027:46:0;;;;;;;;;;;4007:67;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3971:103;;;;4093:7;:57;;;;-1:-1:-1;4105:11:0;;:16;;:44;;;4136:4;4125:24;;;;;;;;;;;;:::i;:::-;4085:98;;;;-1:-1:-1;;;4085:98:0;;;;;;;:::i;:::-;3887:304;;;;;:::o;11475:138::-;11527:7;11560:1;11555;:6;;11547:30;;;;-1:-1:-1;;;11547:30:0;;;;;;;:::i;:::-;-1:-1:-1;11603:1:0;11475:138::o;435:125::-;518:5;;;513:16;;;;505:53;;;;-1:-1:-1;;;505:53:0;;;;;;;:::i;837:161::-;886:9;-1:-1:-1;;;;;916:16:0;;;908:57;;;;-1:-1:-1;;;908:57:0;;;;;;;:::i;1358:125::-;1441:5;;;-1:-1:-1;;;;;1436:16:0;;;;;;;;1428:53;;;;-1:-1:-1;;;1428:53:0;;;;;;;:::i;1004:156::-;1052:8;-1:-1:-1;;;;;1081:15:0;;;1073:55;;;;-1:-1:-1;;;1073:55:0;;;;;;;:::i;11252:215::-;11308:6;11338:5;;;11363:6;;;;;;:16;;;11378:1;11373;:6;;11363:16;11362:38;;;;11389:1;11385;:5;:14;;;;;11398:1;11394;:5;11385:14;11354:84;;;;-1:-1:-1;;;11354:84:0;;;;;;;:::i;4199:332::-;4302:12;4316:17;4345:5;-1:-1:-1;;;;;4337:19:0;4380:10;4392:4;4398:2;4402:6;4357:52;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4357:52:0;;;;;;;;;;;4337:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4301:109;;;;4429:7;:57;;;;-1:-1:-1;4441:11:0;;:16;;:44;;;4472:4;4461:24;;;;;;;;;;;;:::i;:::-;4421:102;;;;-1:-1:-1;;;4421:102:0;;;;;;;:::i;:::-;4199:332;;;;;;:::o;4841:496::-;4913:13;5076:2;5055:11;:18;:23;5051:67;;;-1:-1:-1;5080:38:0;;;;;;;;;;;;;;;;;;;5051:67;5222:4;5209:11;5205:22;5190:37;;5266:11;5255:33;;;;;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;158:363::-;;;299:3;292:4;284:6;280:17;276:27;266:2;;-1:-1;;307:12;266:2;-1:-1;337:20;;-1:-1;;;;;366:30;;363:2;;;-1:-1;;399:12;363:2;443:4;435:6;431:17;419:29;;494:3;443:4;;478:6;474:17;435:6;460:32;;457:41;454:2;;;511:1;;501:12;454:2;259:262;;;;;:::o;2862:241::-;;2966:2;2954:9;2945:7;2941:23;2937:32;2934:2;;;-1:-1;;2972:12;2934:2;85:6;72:20;97:33;124:5;97:33;:::i;3110:479::-;;;;3242:2;3230:9;3221:7;3217:23;3213:32;3210:2;;;-1:-1;;3248:12;3210:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3300:63;-1:-1;3400:2;3436:22;;971:20;996:30;971:20;996:30;:::i;:::-;3408:60;-1:-1;3505:2;3541:22;;971:20;996:30;971:20;996:30;:::i;:::-;3513:60;;;;3204:385;;;;;:::o;3596:538::-;;;;3760:2;3748:9;3739:7;3735:23;3731:32;3728:2;;;-1:-1;;3766:12;3728:2;3824:17;3811:31;-1:-1;;;;;3854:6;3851:30;3848:2;;;-1:-1;;3884:12;3848:2;3922:91;4005:7;3996:6;3985:9;3981:22;3922:91;:::i;:::-;3904:109;;-1:-1;3904:109;-1:-1;;4050:2;4086:22;;971:20;996:30;971:20;996:30;:::i;4141:397::-;;;4280:2;4268:9;4259:7;4255:23;4251:32;4248:2;;;-1:-1;;4286:12;4248:2;4344:17;4331:31;-1:-1;;;;;4374:6;4371:30;4368:2;;;-1:-1;;4404:12;4368:2;4442:80;4514:7;4505:6;4494:9;4490:22;4442:80;:::i;:::-;4424:98;;;;-1:-1;4242:296;-1:-1;;;;4242:296::o;4545:257::-;;4657:2;4645:9;4636:7;4632:23;4628:32;4625:2;;;-1:-1;;4663:12;4625:2;1119:6;1113:13;1131:30;1155:5;1131:30;:::i;4809:291::-;;4938:2;4926:9;4917:7;4913:23;4909:32;4906:2;;;-1:-1;;4944:12;4906:2;1573:6;1567:13;1585:47;1626:5;1585:47;:::i;5107:1145::-;;;;;;;;;5342:3;5330:9;5321:7;5317:23;5313:33;5310:2;;;-1:-1;;5349:12;5310:2;1404:6;1391:20;1416:47;1457:5;1416:47;:::i;:::-;5401:77;-1:-1;5515:2;5554:22;;72:20;97:33;72:20;97:33;:::i;:::-;5523:63;-1:-1;5623:2;5662:22;;72:20;97:33;72:20;97:33;:::i;:::-;5631:63;-1:-1;5731:2;5770:22;;2518:20;;-1:-1;5839:3;5879:22;;2518:20;;-1:-1;5948:3;5986:22;;2794:20;41800:4;41789:16;;44888:33;;44878:2;;-1:-1;;44925:12;44878:2;5304:948;;;;-1:-1;5304:948;;;;;;5957:61;;-1:-1;;;6055:3;6095:22;;1240:20;;6164:3;6204:22;1240:20;;5304:948::o;6551:362::-;;6676:2;6664:9;6655:7;6651:23;6647:32;6644:2;;;-1:-1;;6682:12;6644:2;6733:17;6727:24;-1:-1;;;;;6771:18;6763:6;6760:30;6757:2;;;-1:-1;;6793:12;6757:2;6880:6;6869:9;6865:22;;;2112:3;2105:4;2097:6;2093:17;2089:27;2079:2;;-1:-1;;2120:12;2079:2;2160:6;2154:13;6771:18;38436:6;38433:30;38430:2;;;-1:-1;;38466:12;38430:2;38099;38093:9;38539;38520:17;;-1:-1;;38516:33;38125:17;;6676:2;38125:17;38185:34;;;38221:22;;;38182:62;38179:2;;;-1:-1;;38247:12;38179:2;38099;38266:22;2253:21;;;2353:16;;;6676:2;2353:16;2350:25;-1:-1;2347:2;;;-1:-1;;2378:12;2347:2;2398:39;2430:6;6676:2;2329:5;2325:16;6676:2;2295:6;2291:17;2398:39;:::i;:::-;6813:84;6638:275;-1:-1;;;;;;6638:275::o;6920:241::-;;7024:2;7012:9;7003:7;6999:23;6995:32;6992:2;;;-1:-1;;7030:12;6992:2;-1:-1;2518:20;;6986:175;-1:-1;6986:175::o;7168:263::-;;7283:2;7271:9;7262:7;7258:23;7254:32;7251:2;;;-1:-1;;7289:12;7251:2;-1:-1;2666:13;;7245:186;-1:-1;7245:186::o;7438:366::-;;;7559:2;7547:9;7538:7;7534:23;7530:32;7527:2;;;-1:-1;;7565:12;7527:2;2531:6;2518:20;7617:63;;7717:2;7760:9;7756:22;72:20;97:33;124:5;97:33;:::i;:::-;7725:63;;;;7521:283;;;;;:::o;7811:555::-;;;;7981:2;7969:9;7960:7;7956:23;7952:32;7949:2;;;-1:-1;;7987:12;7949:2;2531:6;2518:20;8039:63;;8139:2;8196:9;8192:22;1391:20;1416:47;1457:5;1416:47;:::i;:::-;8147:77;-1:-1;8261:2;8318:22;;1910:20;1935:51;1910:20;1935:51;:::i;8373:491::-;;;;8511:2;8499:9;8490:7;8486:23;8482:32;8479:2;;;-1:-1;;8517:12;8479:2;2531:6;2518:20;8569:63;;8669:2;8712:9;8708:22;2518:20;8677:63;;8777:2;8820:9;8816:22;72:20;97:33;124:5;97:33;:::i;8871:647::-;;;;;9041:3;9029:9;9020:7;9016:23;9012:33;9009:2;;;-1:-1;;9048:12;9009:2;2531:6;2518:20;9100:63;;9200:2;9243:9;9239:22;2518:20;9208:63;;9308:2;9369:9;9365:22;1910:20;1935:51;1980:5;1935:51;:::i;:::-;9316:81;-1:-1;9434:2;9470:22;;971:20;996:30;971:20;996:30;:::i;:::-;9003:515;;;;-1:-1;9003:515;;-1:-1;;9003:515::o;12489:323::-;;12621:5;39051:12;39866:6;39861:3;39854:19;12704:52;12749:6;39903:4;39898:3;39894:14;39903:4;12730:5;12726:16;12704:52;:::i;:::-;38539:9;43824:14;-1:-1;;43820:28;12768:39;;;;39903:4;12768:39;;12569:243;-1:-1;;12569:243::o;21352:291::-;;43407:6;43402:3;43397;43384:30;43445:16;;43438:27;;;43445:16;21496:147;-1:-1;21496:147::o;21650:271::-;;12979:5;39051:12;13090:52;13135:6;13130:3;13123:4;13116:5;13112:16;13090:52;:::i;:::-;13154:16;;;;;21784:137;-1:-1;;21784:137::o;21928:222::-;-1:-1;;;;;41481:54;;;;10113:37;;22055:2;22040:18;;22026:124::o;22157:444::-;-1:-1;;;;;41481:54;;;10113:37;;41481:54;;;;22504:2;22489:18;;10113:37;22587:2;22572:18;;12099:37;;;;22340:2;22325:18;;22311:290::o;22608:884::-;-1:-1;;;;;41481:54;;;10113:37;;41481:54;;;;23064:2;23049:18;;10113:37;23147:2;23132:18;;12099:37;;;;23230:2;23215:18;;12099:37;;;;41800:4;41789:16;23309:3;23294:19;;21305:35;41492:42;23378:19;;12099:37;23477:3;23462:19;;12099:37;;;;22899:3;22884:19;;22870:622::o;23499:333::-;-1:-1;;;;;41481:54;;;;10113:37;;23818:2;23803:18;;12099:37;23654:2;23639:18;;23625:207::o;23839:653::-;24106:2;24120:47;;;39051:12;;24091:18;;;39854:19;;;23839:653;;39903:4;;39894:14;;;;38741;;;23839:653;10580:251;10605:6;10602:1;10599:13;10580:251;;;10666:13;;40768;40761:21;11871:34;;9667:14;;;;39588;;;;10627:1;10620:9;10580:251;;;10584:14;;;24331:9;24325:4;24321:20;39903:4;24305:9;24301:18;24294:48;24356:126;11108:5;39051:12;11127:95;11215:6;11210:3;11127:95;:::i;:::-;11120:102;;;;;39903:4;11279:6;11275:17;11270:3;11266:27;39903:4;11373:5;38741:14;-1:-1;11412:357;11437:6;11434:1;11431:13;11412:357;;;11499:9;11493:4;11489:20;11484:3;11477:33;9815:64;9875:3;11544:6;11538:13;9815:64;:::i;:::-;11748:14;;;;11558:90;-1:-1;39588:14;;;;10627:1;11452:9;11412:357;;;-1:-1;24348:134;;24077:415;-1:-1;;;;;;;;;24077:415::o;24499:210::-;40768:13;;40761:21;11871:34;;24620:2;24605:18;;24591:118::o;25511:310::-;;25658:2;25679:17;25672:47;25733:78;25658:2;25647:9;25643:18;25797:6;25733:78;:::i;25828:416::-;26028:2;26042:47;;;14534:2;26013:18;;;39854:19;-1:-1;;;39894:14;;;14550:44;14613:12;;;25999:245::o;26251:416::-;26451:2;26465:47;;;14864:2;26436:18;;;39854:19;-1:-1;;;39894:14;;;14880:34;14933:12;;;26422:245::o;26674:416::-;26874:2;26888:47;;;15184:2;26859:18;;;39854:19;15220:30;39894:14;;;15200:51;15270:12;;;26845:245::o;27097:416::-;27297:2;27311:47;;;15521:2;27282:18;;;39854:19;15557:34;39894:14;;;15537:55;-1:-1;;;15612:12;;;15605:25;15649:12;;;27268:245::o;27520:416::-;27720:2;27734:47;;;15900:2;27705:18;;;39854:19;-1:-1;;;39894:14;;;15916:44;15979:12;;;27691:245::o;27943:416::-;28143:2;28157:47;;;16230:2;28128:18;;;39854:19;16266:34;39894:14;;;16246:55;-1:-1;;;16321:12;;;16314:33;16366:12;;;28114:245::o;28366:416::-;28566:2;28580:47;;;16617:2;28551:18;;;39854:19;16653:30;39894:14;;;16633:51;16703:12;;;28537:245::o;28789:416::-;28989:2;29003:47;;;16954:2;28974:18;;;39854:19;16990:26;39894:14;;;16970:47;17036:12;;;28960:245::o;29212:416::-;29412:2;29426:47;;;29397:18;;;39854:19;17323:34;39894:14;;;17303:55;17377:12;;;29383:245::o;29635:416::-;29835:2;29849:47;;;29820:18;;;39854:19;17664:34;39894:14;;;17644:55;17718:12;;;29806:245::o;30058:416::-;30258:2;30272:47;;;17969:2;30243:18;;;39854:19;-1:-1;;;39894:14;;;17985:42;18046:12;;;30229:245::o;30481:416::-;30681:2;30695:47;;;18297:2;30666:18;;;39854:19;18333:29;39894:14;;;18313:50;18382:12;;;30652:245::o;30904:416::-;31104:2;31118:47;;;18633:2;31089:18;;;39854:19;18669:31;39894:14;;;18649:52;18720:12;;;31075:245::o;31327:416::-;31527:2;31541:47;;;18971:2;31512:18;;;39854:19;19007:34;39894:14;;;18987:55;-1:-1;;;19062:12;;;19055:28;19102:12;;;31498:245::o;31750:416::-;31950:2;31964:47;;;31935:18;;;39854:19;19389:34;39894:14;;;19369:55;19443:12;;;31921:245::o;32173:416::-;32373:2;32387:47;;;19694:2;32358:18;;;39854:19;19730:26;39894:14;;;19710:47;19776:12;;;32344:245::o;32596:326::-;20091:23;;-1:-1;;;;;41361:46;20592:37;;20272:4;20261:16;;;20255:23;-1:-1;;;;;41687:30;;;20330:14;;;21073:36;;;;20430:4;20419:16;;;20413:23;41687:30;20488:14;;;21073:36;;;;32775:2;32760:18;;32746:176::o;32929:436::-;-1:-1;;;;;41361:46;;;;20592:37;;-1:-1;;;;;41687:30;;;33270:2;33255:18;;21073:36;41687:30;33351:2;33336:18;;21073:36;33108:2;33093:18;;33079:286::o;33372:222::-;12099:37;;;33499:2;33484:18;;33470:124::o;33601:716::-;12099:37;;;-1:-1;;;;;41481:54;;;34037:2;34022:18;;9972:58;41481:54;;;;34120:2;34105:18;;10113:37;34211:2;34196:18;;13885:58;;;;34302:3;34287:19;;13885:58;33864:3;33849:19;;33835:482::o;36413:321::-;12099:37;;;40768:13;40761:21;36720:2;36705:18;;11871:34;36562:2;36547:18;;36533:201::o;36741:329::-;12099:37;;;37056:2;37041:18;;12099:37;36894:2;36879:18;;36865:205::o;37077:440::-;-1:-1;;;;;41687:30;;;;21073:36;;37420:2;37405:18;;12099:37;;;;-1:-1;;;;;41361:46;37503:2;37488:18;;20832:50;37258:2;37243:18;;37229:288::o;37524:506::-;;;37659:11;37646:25;37710:48;;37734:8;37718:14;37714:29;37710:48;37690:18;37686:73;37676:2;;-1:-1;;37763:12;37676:2;37790:33;;37844:18;;;-1:-1;;;;;;37871:30;;37868:2;;;-1:-1;;37904:12;37868:2;37749:4;37932:13;;-1:-1;37718:14;37964:38;;;37954:49;;37951:2;;;38016:1;;38006:12;43480:268;43545:1;43552:101;43566:6;43563:1;43560:13;43552:101;;;43633:11;;;43627:18;43614:11;;;43607:39;43588:2;43581:10;43552:101;;;43668:6;43665:1;43662:13;43659:2;;;-1:-1;;43545:1;43715:16;;43708:27;43529:219::o;43861:117::-;-1:-1;;;;;41481:54;;43920:35;;43910:2;;43969:1;;43959:12;43910:2;43904:74;:::o;43985:111::-;44066:5;40768:13;40761:21;44044:5;44041:32;44031:2;;44087:1;;44077:12

Swarm Source

ipfs://fa1ff0db57d69b66765199fe59ab7c6432638a46f8ad5a71b7efacdf6d60c5f3
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading