Contract 0x11f724a9a44d5728da778c1a7df2dedba34dca2b

 
Ad
Ad
Txn Hash
Block
From
To
Value
0x47e4ec72032e64f95c53c909ae34fa19faa1f3480a10f8bd7cb7010843f10556114539742020-12-14 22:57:2174 days 8 hrs agoLock3r: Deployer IN  0x11f724a9a44d5728da778c1a7df2dedba34dca2b0 Ether0.0018426397958.61
0x4f41de22116f91e4d2ba043cde7a97ca730d34531396801890773ed35f20d95a114500612020-12-14 8:39:0074 days 22 hrs agoLock3r: Deployer IN  0x11f724a9a44d5728da778c1a7df2dedba34dca2b0 Ether0.0055558422580.75
0x956efe01c3f92bac72c8fe70ede6b5e8b420409775ce30e7b3383baf6a009fa4114500582020-12-14 8:38:2874 days 22 hrs agoLock3r: Deployer IN  0x11f724a9a44d5728da778c1a7df2dedba34dca2b0 Ether0.006120365580.75
0x82615d0901c3c5905de25e8d0752b5d68e18d72fef573c8a1e02489eafbce1ca114500582020-12-14 8:38:2874 days 22 hrs agoLock3r: Deployer IN  0x11f724a9a44d5728da778c1a7df2dedba34dca2b0 Ether0.00146771280.75
0x53575b0a576a77bde985e2a2af7e59a328b9bb2b7c063fe450920f790eac9e30114277512020-12-10 21:57:3778 days 9 hrs agoLock3r: Deployer IN  0x11f724a9a44d5728da778c1a7df2dedba34dca2b0 Ether0.00192648428
0xa15a42f562de32a936fa8736d0b999acce2972758f6d784d38e8150d14c6de53114277052020-12-10 21:45:5278 days 9 hrs agoLock3r: Deployer IN  0x11f724a9a44d5728da778c1a7df2dedba34dca2b0 Ether0.001993382226.3
0xc0704fee8de5c096b93f70152cedf1e695fa6a1965400228f388e275622baa10114276962020-12-10 21:42:0678 days 9 hrs agoLock3r: Deployer IN  0x11f724a9a44d5728da778c1a7df2dedba34dca2b0 Ether0.00074521641
0x29eae79644f3155ff53004fc563e931dbe1b4d8c11c7c53d58195d28b0873166113761642020-12-02 23:40:1686 days 7 hrs agoLock3r: Deployer IN  0x11f724a9a44d5728da778c1a7df2dedba34dca2b0 Ether0.0013758220
0xf2ea909968b289ec72d990c4e7bd17e1b0ac041ceb7b1fbf2b52a8a4427cd2e0113761582020-12-02 23:38:4186 days 7 hrs agoLock3r: Deployer IN  0x11f724a9a44d5728da778c1a7df2dedba34dca2b0 Ether0.00250120233
0x9bd209358b9b25c56db611f078e0c3aa9bb884079300c105d9eca377ac207645113760972020-12-02 23:26:5786 days 7 hrs agoLock3r: Deployer IN  0x11f724a9a44d5728da778c1a7df2dedba34dca2b0 Ether0.0027521240
0xa1c8210d1a485988aa8d968de71bbad4a8df199d0b618aa631073ce8a315c28d113760602020-12-02 23:18:5586 days 7 hrs agoLock3r: Deployer IN  0x11f724a9a44d5728da778c1a7df2dedba34dca2b0 Ether0.00310755441
0xe09dda280002476795457460257f31381d123cd509061349d631a13f07e52549113375242020-11-27 1:18:0892 days 5 hrs agoLock3r: Deployer IN  0x11f724a9a44d5728da778c1a7df2dedba34dca2b0 Ether0.0008179245
0x0b32cd45981e9dca441dfdd53601259d5d1f873790bdc8fcbb623bff23f78d4c113371692020-11-26 23:59:0592 days 7 hrs agoLock3r: Deployer IN  0x11f724a9a44d5728da778c1a7df2dedba34dca2b0 Ether0.00233930234
0xad3975f0bc28c80be0950edd4ae23df4c77cdddf63cbd7207b7f969d8d53eeba113371682020-11-26 23:58:2992 days 7 hrs agoLock3r: Deployer IN  0x11f724a9a44d5728da778c1a7df2dedba34dca2b0 Ether0.00257699634
0x6b0f5f94db43d5588676bc45ce637129299ebd18de4a287dee97f044189d1af8113329712020-11-26 8:38:5092 days 22 hrs agoLock3r: Deployer IN  0x11f724a9a44d5728da778c1a7df2dedba34dca2b0 Ether0.017109354318
0x10596e49b7729c2539dedf6a560b1ede87e68d3a6c0699e9bd35a4e0d4e2c054113295042020-11-25 19:45:1593 days 11 hrs agoLock3r: Deployer IN  0x11f724a9a44d5728da778c1a7df2dedba34dca2b0 Ether0.0021516440
0x3a3fdeffe38c7adaebbd59d17753ed1fc2a3e42c53079b25a92dff93a60d2ad8113294932020-11-25 19:43:3593 days 11 hrs agoLock3r: Deployer IN  0x11f724a9a44d5728da778c1a7df2dedba34dca2b0 Ether0.00268191339
0x1abaaf254706faf6ab04ac8abb93b2b05894ed182c22e6ab04b3fdddfb656706113294782020-11-25 19:40:2393 days 11 hrs agoLock3r: Deployer IN  0x11f724a9a44d5728da778c1a7df2dedba34dca2b0 Ether0.00212223228
0x21f1f0f43900bb3b3e00b25918c9790ff48406e2d0cd835edb96d60d9ac1fa8e113234702020-11-24 21:23:0694 days 9 hrs agoLock3r: Deployer IN  0x11f724a9a44d5728da778c1a7df2dedba34dca2b0 Ether0.00188667230227.430935355
0xdfdde299bc491772dbdfc84e8e5ab3d8691c6efef943b1eff3368d282b9c3360113233682020-11-24 21:01:5194 days 10 hrs agoLock3r: Deployer IN  0x11f724a9a44d5728da778c1a7df2dedba34dca2b0 Ether0.0021976781129.000001459
0xb1b90470f4b897bf97c0693e4d460b25d320b21316f42b86df46175085409a65113233232020-11-24 20:51:1494 days 10 hrs agoLock3r: Deployer IN  0x11f724a9a44d5728da778c1a7df2dedba34dca2b0 Ether0.00119616438
0xa13f80a53b5052780a921e39654f77033abad7155210ac225fe8c926c08823c2112859732020-11-19 3:28:16100 days 3 hrs agoLock3r: Deployer IN  Contract Creation0 Ether0.0960117845424.150001532
[ Download CSV Export 
View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Governance

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-11-19
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.6.12;
pragma experimental ABIEncoderV2;
/**
 * 
 /$$                           /$$        /$$$$$$                  /$$   /$$             /$$                                       /$$      
| $$                          | $$       /$$__  $$                | $$$ | $$            | $$                                      | $$      
| $$        /$$$$$$   /$$$$$$$| $$   /$$|__/  \ $$  /$$$$$$       | $$$$| $$  /$$$$$$  /$$$$$$   /$$  /$$  /$$  /$$$$$$   /$$$$$$ | $$   /$$
| $$       /$$__  $$ /$$_____/| $$  /$$/   /$$$$$/ /$$__  $$      | $$ $$ $$ /$$__  $$|_  $$_/  | $$ | $$ | $$ /$$__  $$ /$$__  $$| $$  /$$/
| $$      | $$  \ $$| $$      | $$$$$$/   |___  $$| $$  \__/      | $$  $$$$| $$$$$$$$  | $$    | $$ | $$ | $$| $$  \ $$| $$  \__/| $$$$$$/ 
| $$      | $$  | $$| $$      | $$_  $$  /$$  \ $$| $$            | $$\  $$$| $$_____/  | $$ /$$| $$ | $$ | $$| $$  | $$| $$      | $$_  $$ 
| $$$$$$$$|  $$$$$$/|  $$$$$$$| $$ \  $$|  $$$$$$/| $$            | $$ \  $$|  $$$$$$$  |  $$$$/|  $$$$$/$$$$/|  $$$$$$/| $$      | $$ \  $$
|________/ \______/  \_______/|__/  \__/ \______/ |__/            |__/  \__/ \_______/   \___/   \_____/\___/  \______/ |__/      |__/  \__/

  /$$$$$$                                                                                           
 /$$__  $$                                                                                          
| $$  \__/  /$$$$$$  /$$    /$$ /$$$$$$   /$$$$$$  /$$$$$$$   /$$$$$$  /$$$$$$$   /$$$$$$$  /$$$$$$ 
| $$ /$$$$ /$$__  $$|  $$  /$$//$$__  $$ /$$__  $$| $$__  $$ |____  $$| $$__  $$ /$$_____/ /$$__  $$
| $$|_  $$| $$  \ $$ \  $$/$$/| $$$$$$$$| $$  \__/| $$  \ $$  /$$$$$$$| $$  \ $$| $$      | $$$$$$$$
| $$  \ $$| $$  | $$  \  $$$/ | $$_____/| $$      | $$  | $$ /$$__  $$| $$  | $$| $$      | $$_____/
|  $$$$$$/|  $$$$$$/   \  $/  |  $$$$$$$| $$      | $$  | $$|  $$$$$$$| $$  | $$|  $$$$$$$|  $$$$$$$
 \______/  \______/     \_/    \_______/|__/      |__/  |__/ \_______/|__/  |__/ \_______/ \_______/
 * 
*/
// From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol
// Subject to the MIT license.

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

        return c;
    }

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

interface ILock3r {
    function addVotes(address voter, uint amount) external;
    function isLocker(address) external returns (bool);
    function worked(address locker) external;
    function removeVotes(address voter, uint amount) external;
    function addLK3RCredit(address job, uint amount) external;
    function approveLiquidity(address liquidity) external;
    function revokeLiquidity(address liquidity) external;
    function addJob(address job) external;
    function removeJob(address job) external;
    function setLock3rHelper(address _lk3rh) external;
    function setGovernance(address _governance) external;
    function acceptGovernance() external;
    function getPriorVotes(address account, uint blockNumber) external view returns (uint);
    function totalBonded() external view returns (uint);
    function setTreasury(address _treasury) external;
    function setLiquidityFee(uint newFee) external;
    function setBondingDelay (uint256 newBond) external;
    function setUnbondingDelay (uint256 newUnbond) external;
    function setLiquidityBondingDelay (uint256 newLiqBond) external;
    function revoke(address locker) external;
   
}

contract Governance {
    using SafeMath for uint;
    /// @notice The name of this contract
    string public constant name = "Lock3rHolyGovernance";

    /// @notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed
    uint public _quorumVotes = 7500; // % of total supply required

    /// @notice The number of votes required in order for a voter to become a proposer
    uint public _proposalThreshold = 7500;

    uint public constant BASE = 10000;

    function setQuorum(uint quorum_) external {
        require(msg.sender == address(this), "Governance::setQuorum: timelock only");
        require(quorum_ <= BASE, "Governance::setQuorum: quorum_ > BASE");
        _quorumVotes = quorum_;
    }

    function quorumVotes() public view returns (uint) {
        return LK3R.totalBonded().mul(_quorumVotes).div(BASE);
    }

    function proposalThreshold() public view returns (uint) {
        return LK3R.totalBonded().mul(_proposalThreshold).div(BASE);
    }

    function setThreshold(uint threshold_) external {
        require(msg.sender == address(this), "Governance::setQuorum: timelock only");
        require(threshold_ <= BASE, "Governance::setThreshold: threshold_ > BASE");
        _proposalThreshold = threshold_;
    }

    /// @notice The maximum number of actions that can be included in a proposal
    function proposalMaxOperations() public pure returns (uint) { return 10; } // 10 actions

    /// @notice The delay before voting on a proposal may take place, once proposed
    function votingDelay() public pure returns (uint) { return 1; } // 1 block

    /// @notice The duration of voting on a proposal, in blocks
    function votingPeriod() public pure returns (uint) { return 40_320; } // ~7 days in blocks (assuming 15s blocks)

    /// @notice The address of the governance token
    ILock3r immutable public LK3R;

    /// @notice The total number of proposals
    uint public proposalCount;

    struct Proposal {
        uint id;
        address proposer;
        uint eta;
        address[] targets;
        uint[] values;
        string[] signatures;
        bytes[] calldatas;
        uint startBlock;
        uint endBlock;
        uint forVotes;
        uint againstVotes;
        bool canceled;
        bool executed;
        mapping (address => Receipt) receipts;
    }

    /// @notice Ballot receipt record for a voter
    struct Receipt {
        bool hasVoted;
        bool support;
        uint votes;
    }

    /// @notice Possible states that a proposal may be in
    enum ProposalState {
        Pending,
        Active,
        Canceled,
        Defeated,
        Succeeded,
        Queued,
        Expired,
        Executed
    }

    /// @notice The official record of all proposals ever proposed
    mapping (uint => Proposal) public proposals;

    /// @notice The latest proposal for each proposer
    mapping (address => uint) public latestProposalIds;

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

    /// @notice The EIP-712 typehash for the ballot struct used by the contract
    bytes32 public constant BALLOT_TYPEHASH = keccak256("Ballot(uint256 proposalId,bool support)");

    /// @notice An event emitted when a new proposal is created
    event ProposalCreated(uint id, address proposer, address[] targets, uint[] values, string[] signatures, bytes[] calldatas, uint startBlock, uint endBlock, string description);

    /// @notice An event emitted when a vote has been cast on a proposal
    event VoteCast(address voter, uint proposalId, bool support, uint votes);

    /// @notice An event emitted when a proposal has been canceled
    event ProposalCanceled(uint id);

    /// @notice An event emitted when a proposal has been queued in the Timelock
    event ProposalQueued(uint id, uint eta);

    /// @notice An event emitted when a proposal has been executed in the Timelock
    event ProposalExecuted(uint id);
    
    
   

    function proposeJob(address job) public {
        require(msg.sender == address(LK3R), "Governance::proposeJob: only VOTER can propose new jobs");
        address[] memory targets;
        targets[0] = address(LK3R);

        string[] memory signatures;
        signatures[0] = "addJob(address)";

        bytes[] memory calldatas;
        calldatas[0] = abi.encode(job);

        uint[] memory values;
        values[0] = 0;

        _propose(targets, values, signatures, calldatas, string(abi.encodePacked("Governance::proposeJob(): ", job)));
    }

    function propose(address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas, string memory description) public returns (uint) {
        require(LK3R.getPriorVotes(msg.sender, block.number.sub(1)) >= proposalThreshold(), "Governance::propose: proposer votes below proposal threshold");
        require(targets.length == values.length && targets.length == signatures.length && targets.length == calldatas.length, "Governance::propose: proposal function information arity mismatch");
        require(targets.length != 0, "Governance::propose: must provide actions");
        require(targets.length <= proposalMaxOperations(), "Governance::propose: too many actions");

        uint latestProposalId = latestProposalIds[msg.sender];
        if (latestProposalId != 0) {
          ProposalState proposersLatestProposalState = state(latestProposalId);
          require(proposersLatestProposalState != ProposalState.Active, "Governance::propose: one live proposal per proposer, found an already active proposal");
          require(proposersLatestProposalState != ProposalState.Pending, "Governance::propose: one live proposal per proposer, found an already pending proposal");
        }

        return _propose(targets, values, signatures, calldatas, description);
    }

    function _propose(address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas, string memory description) internal returns (uint) {
        uint startBlock = block.number.add(votingDelay());
        uint endBlock = startBlock.add(votingPeriod());

        proposalCount++;
        Proposal memory newProposal = Proposal({
            id: proposalCount,
            proposer: msg.sender,
            eta: 0,
            targets: targets,
            values: values,
            signatures: signatures,
            calldatas: calldatas,
            startBlock: startBlock,
            endBlock: endBlock,
            forVotes: 0,
            againstVotes: 0,
            canceled: false,
            executed: false
        });

        proposals[newProposal.id] = newProposal;
        latestProposalIds[newProposal.proposer] = newProposal.id;

        emit ProposalCreated(newProposal.id, msg.sender, targets, values, signatures, calldatas, startBlock, endBlock, description);
        return newProposal.id;
    }

    function queue(uint proposalId) public {
        require(state(proposalId) == ProposalState.Succeeded, "Governance::queue: proposal can only be queued if it is succeeded");
        Proposal storage proposal = proposals[proposalId];
        uint eta = block.timestamp.add(delay);
        for (uint i = 0; i < proposal.targets.length; i++) {
            _queueOrRevert(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], eta);
        }
        proposal.eta = eta;
        emit ProposalQueued(proposalId, eta);
    }

    function _queueOrRevert(address target, uint value, string memory signature, bytes memory data, uint eta) internal {
        require(!queuedTransactions[keccak256(abi.encode(target, value, signature, data, eta))], "Governance::_queueOrRevert: proposal action already queued at eta");
        _queueTransaction(target, value, signature, data, eta);
    }

    function execute(uint proposalId) public payable {
        require(guardian == address(0x0) || msg.sender == guardian, "Governance:execute: !guardian");
        require(state(proposalId) == ProposalState.Queued, "Governance::execute: proposal can only be executed if it is queued");
        Proposal storage proposal = proposals[proposalId];
        proposal.executed = true;
        for (uint i = 0; i < proposal.targets.length; i++) {
            _executeTransaction(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], proposal.eta);
        }
        emit ProposalExecuted(proposalId);
    }

    function cancel(uint proposalId) public {
        ProposalState state = state(proposalId);
        require(state != ProposalState.Executed, "Governance::cancel: cannot cancel executed proposal");

        Proposal storage proposal = proposals[proposalId];
        require(proposal.proposer != address(LK3R) && 
                LK3R.getPriorVotes(proposal.proposer, block.number.sub(1)) < proposalThreshold(), "Governance::cancel: proposer above threshold");

        proposal.canceled = true;
        for (uint i = 0; i < proposal.targets.length; i++) {
            _cancelTransaction(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], proposal.eta);
        }

        emit ProposalCanceled(proposalId);
    }

    function getActions(uint proposalId) public view returns (address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas) {
        Proposal storage p = proposals[proposalId];
        return (p.targets, p.values, p.signatures, p.calldatas);
    }

    function getReceipt(uint proposalId, address voter) public view returns (Receipt memory) {
        return proposals[proposalId].receipts[voter];
    }

    function state(uint proposalId) public view returns (ProposalState) {
        require(proposalCount >= proposalId && proposalId > 0, "Governance::state: invalid proposal id");
        Proposal storage proposal = proposals[proposalId];
        if (proposal.canceled) {
            return ProposalState.Canceled;
        } else if (block.number <= proposal.startBlock) {
            return ProposalState.Pending;
        } else if (block.number <= proposal.endBlock) {
            return ProposalState.Active;
        } else if (proposal.forVotes.add(proposal.againstVotes) < quorumVotes()) {
            return ProposalState.Defeated;
        } else if (proposal.forVotes <= proposal.againstVotes) {
            return ProposalState.Defeated;
        } else if (proposal.eta == 0) {
            return ProposalState.Succeeded;
        } else if (proposal.executed) {
            return ProposalState.Executed;
        } else if (block.timestamp >= proposal.eta.add(GRACE_PERIOD)) {
            return ProposalState.Expired;
        } else {
            return ProposalState.Queued;
        }
    }

    function castVote(uint proposalId, bool support) public {
        _castVote(msg.sender, proposalId, support);
    }

    function castVoteBySig(uint proposalId, bool support, uint8 v, bytes32 r, bytes32 s) public {
        bytes32 structHash = keccak256(abi.encode(BALLOT_TYPEHASH, proposalId, support));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", DOMAINSEPARATOR, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "Governance::castVoteBySig: invalid signature");
        _castVote(signatory, proposalId, support);
    }

    function _castVote(address voter, uint proposalId, bool support) internal {
        require(state(proposalId) == ProposalState.Active, "Governance::_castVote: voting is closed");
        Proposal storage proposal = proposals[proposalId];
        Receipt storage receipt = proposal.receipts[voter];
        require(receipt.hasVoted == false, "Governance::_castVote: voter already voted");
        uint votes = LK3R.getPriorVotes(voter, proposal.startBlock);

        if (support) {
            proposal.forVotes = proposal.forVotes.add(votes);
        } else {
            proposal.againstVotes = proposal.againstVotes.add(votes);
        }

        receipt.hasVoted = true;
        receipt.support = support;
        receipt.votes = votes;

        emit VoteCast(voter, proposalId, support, votes);
    }

    function getChainId() internal pure returns (uint) {
        uint chainId;
        assembly { chainId := chainid() }
        return chainId;
    }

    event NewDelay(uint indexed newDelay);
    event CancelTransaction(bytes32 indexed txHash, address indexed target, uint value, string signature,  bytes data, uint eta);
    event ExecuteTransaction(bytes32 indexed txHash, address indexed target, uint value, string signature,  bytes data, uint eta);
    event QueueTransaction(bytes32 indexed txHash, address indexed target, uint value, string signature, bytes data, uint eta);

    uint public constant GRACE_PERIOD = 14 days;
    uint public constant MINIMUM_DELAY = 1 days;
    uint public constant MAXIMUM_DELAY = 30 days;

    uint public delay = MINIMUM_DELAY;
    
    address public guardian;
    address public pendingGuardian;
    
    		
    modifier onlyGuardian(){
        require(msg.sender == guardian , "Error: caller is not the guardian address");
        _;
    }
    
    function setGuardian(address _guardian) external onlyGuardian{
        pendingGuardian = _guardian;
    }
    
    function acceptGuardianship() external {
        require(msg.sender == pendingGuardian, "Lock3rGovernance::setGuardian: !pendingGuardian");
        guardian = pendingGuardian;
    }
    
    function addVotes(address voter, uint amount) external onlyGuardian{
        LK3R.addVotes(voter, amount);
    }
    function removeVotes(address voter, uint amount) external onlyGuardian{
        LK3R.removeVotes(voter, amount);
    }
    function addLK3RCredit(address job, uint amount) external onlyGuardian{
        LK3R.addLK3RCredit(job, amount);
    }
    function approveLiquidity(address liquidity) external onlyGuardian{
        LK3R.approveLiquidity(liquidity);
    }
    function revokeLiquidity(address liquidity) external onlyGuardian{
        LK3R.revokeLiquidity(liquidity);
    }
    function addJob(address job) external onlyGuardian{
        LK3R.addJob(job);
    }
    function removeJob(address job) external onlyGuardian{
        LK3R.removeJob(job);
    }
    function setLock3rHelper(address lk3rh) external onlyGuardian{
        LK3R.setLock3rHelper(lk3rh);
    }
    function setGovernance(address _governance) external onlyGuardian{
        LK3R.setGovernance(_governance);
    }
    function acceptGovernance() external onlyGuardian{
        LK3R.acceptGovernance();
    }
    function setTreasury(address _treasury) external onlyGuardian{
        LK3R.setTreasury(_treasury);
    }
    
    function setLiquidityFee(uint newFee) external onlyGuardian {
        LK3R.setLiquidityFee(newFee);
    }
    function setBondingDelay(uint256 newDelay) external onlyGuardian {
        LK3R.setBondingDelay(newDelay);
    }
    function setUnbondingDelay(uint256 newDelay) external onlyGuardian {
        LK3R.setUnbondingDelay(newDelay);
    }
    function setLiquidityBondingDelay(uint256 newDelay) external onlyGuardian {
        LK3R.setLiquidityBondingDelay(newDelay);
    }
    

    mapping (bytes32 => bool) public queuedTransactions;

    constructor(address token_) public {
        guardian = msg.sender;
        LK3R = ILock3r(token_);
        DOMAINSEPARATOR = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
    }

    receive() external payable { }

    function setDelay(uint delay_) public {
        require(msg.sender == address(this), "Timelock::setDelay: Call must come from Timelock.");
        require(delay_ >= MINIMUM_DELAY, "Timelock::setDelay: Delay must exceed minimum delay.");
        require(delay_ <= MAXIMUM_DELAY, "Timelock::setDelay: Delay must not exceed maximum delay.");
        delay = delay_;

        emit NewDelay(delay);
    }

    function _queueTransaction(address target, uint value, string memory signature, bytes memory data, uint eta) internal returns (bytes32) {
        require(eta >= getBlockTimestamp().add(delay), "Timelock::queueTransaction: Estimated execution block must satisfy delay.");
        bytes32 txHash = keccak256(abi.encode(target, value, signature, data, eta));
        queuedTransactions[txHash] = true;

        emit QueueTransaction(txHash, target, value, signature, data, eta);
        return txHash;
    }

    function _cancelTransaction(address target, uint value, string memory signature, bytes memory data, uint eta) internal {
        bytes32 txHash = keccak256(abi.encode(target, value, signature, data, eta));
        queuedTransactions[txHash] = false;

        emit CancelTransaction(txHash, target, value, signature, data, eta);
    }

    function _executeTransaction(address target, uint value, string memory signature, bytes memory data, uint eta) internal returns (bytes memory) {
        bytes32 txHash = keccak256(abi.encode(target, value, signature, data, eta));
        require(queuedTransactions[txHash], "Timelock::executeTransaction: Transaction hasn't been queued.");
        require(getBlockTimestamp() >= eta, "Timelock::executeTransaction: Transaction hasn't surpassed time lock.");
        require(getBlockTimestamp() <= eta.add(GRACE_PERIOD), "Timelock::executeTransaction: Transaction is stale.");

        queuedTransactions[txHash] = false;

        bytes memory callData;

        if (bytes(signature).length == 0) {
            callData = data;
        } else {
            callData = abi.encodePacked(bytes4(keccak256(bytes(signature))), data);
        }

        // solium-disable-next-line security/no-call-value
        (bool success, bytes memory returnData) = target.call{value:value}(callData);
        require(success, "Timelock::executeTransaction: Transaction execution reverted.");

        emit ExecuteTransaction(txHash, target, value, signature, data, eta);

        return returnData;
    }

    function getBlockTimestamp() internal view returns (uint) {
        // solium-disable-next-line security/no-block-members
        return block.timestamp;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"token_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"CancelTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ExecuteTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"NewDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"QueueTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"bool","name":"support","type":"bool"},{"indexed":false,"internalType":"uint256","name":"votes","type":"uint256"}],"name":"VoteCast","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAINSEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GRACE_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LK3R","outputs":[{"internalType":"contract ILock3r","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAXIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_quorumVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"acceptGuardianship","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"job","type":"address"}],"name":"addJob","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"job","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addLK3RCredit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"voter","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addVotes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidity","type":"address"}],"name":"approveLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"bool","name":"support","type":"bool"}],"name":"castVote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"bool","name":"support","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"delay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"getActions","outputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"voter","type":"address"}],"name":"getReceipt","outputs":[{"components":[{"internalType":"bool","name":"hasVoted","type":"bool"},{"internalType":"bool","name":"support","type":"bool"},{"internalType":"uint256","name":"votes","type":"uint256"}],"internalType":"struct Governance.Receipt","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"guardian","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"latestProposalIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingGuardian","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalMaxOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"executed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"job","type":"address"}],"name":"proposeJob","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"queue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"queuedTransactions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quorumVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"job","type":"address"}],"name":"removeJob","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"voter","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"removeVotes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidity","type":"address"}],"name":"revokeLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"setBondingDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"delay_","type":"uint256"}],"name":"setDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_guardian","type":"address"}],"name":"setGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"setLiquidityBondingDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"setLiquidityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lk3rh","type":"address"}],"name":"setLock3rHelper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"quorum_","type":"uint256"}],"name":"setQuorum","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold_","type":"uint256"}],"name":"setThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"setUnbondingDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum Governance.ProposalState","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052611d4c600055611d4c600155620151806005553480156200002457600080fd5b506040516200479a3803806200479a833981016040819052620000479162000128565b600680546001600160a01b031916331790556001600160601b0319606082901b1660805260408051808201909152601481527f4c6f636b3372486f6c79476f7665726e616e63650000000000000000000000006020909101527f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667f3d7cd15b17c3ffb83e638f2b05fbd4a0aae4fc8541120bc3f72f029c3ac6b916620000ec62000124565b3060405160200162000102949392919062000158565b60408051601f19818403018152919052805160209091012060a052506200017c565b4690565b6000602082840312156200013a578081fd5b81516001600160a01b038116811462000151578182fd5b9392505050565b938452602084019290925260408301526001600160a01b0316606082015260800190565b60805160601c60a05161457f6200021b60003980610a9c52806114975250806109eb5280610b205280610ba35280610c845280610f895280611130528061117d528061157152806115d4528061164a52806116e752806117a952806118b352806118ff52806119975280611a605280611b0e5280611b845280611bd55280611db25280611df3528061217952806123175280612672525061457f6000f3fe60806040526004361061031e5760003560e01c806380711989116101ab578063c5198abc116100f7578063deaaa7cc11610095578063ec342ad01161006f578063ec342ad0146108d4578063f0f44260146108e9578063f2b0653714610909578063fe0d94c11461093657610325565b8063deaaa7cc14610872578063e177246e14610887578063e23a9a52146108a757610325565b8063da95691a116100d1578063da95691a146107f2578063dc380cbb14610812578063ddf0b00914610832578063de63298d1461085257610325565b8063c5198abc1461079d578063ce6a0880146107bd578063da35c664146107dd57610325565b8063b1b43ae511610164578063be4a66b61161013e578063be4a66b614610733578063c1a287e214610748578063c1ba4e591461075d578063c3fc0e1d1461077d57610325565b8063b1b43ae5146106e9578063b58131b0146106fe578063b600702a1461071357610325565b806380711989146106345780638a0dac4a14610654578063945dd26e14610674578063960bfe0414610694578063995e617a146106b4578063ab033ea9146106c957610325565b80633932abb11161026a5780634f039447116102235780636e3827b7116101fd5780636e3827b7146105e0578063762c31ba146105f55780637bdbe4d01461060a5780637d645fab1461061f57610325565b80634f0394471461058b57806364bb43ee146105ab5780636a42b8f8146105cb57610325565b80633932abb1146104d25780633e4f49e6146104e757806340e58ee514610514578063452a9320146105345780634634c61f146105565780634d8ea0de1461057657610325565b806317977c61116102d757806324bc1a64116102b157806324bc1a641461044d5780632fe23dbd14610462578063328dd98214610482578063357bf15c146104b257610325565b806317977c611461040357806320606b7014610423578063238efcbc1461043857610325565b8063013cf08b1461032a57806302175fa41461036857806302a251a31461038a57806306fdde03146103ac57806315373e3d146103ce5780631778e29c146103ee57610325565b3661032557005b600080fd5b34801561033657600080fd5b5061034a61034536600461351e565b610949565b60405161035f99989796959493929190614411565b60405180910390f35b34801561037457600080fd5b5061038861038336600461351e565b6109a2565b005b34801561039657600080fd5b5061039f610a55565b60405161035f9190613894565b3480156103b857600080fd5b506103c1610a5b565b60405161035f91906138e7565b3480156103da57600080fd5b506103886103e936600461357a565b610a8b565b3480156103fa57600080fd5b5061039f610a9a565b34801561040f57600080fd5b5061039f61041e36600461340d565b610abe565b34801561042f57600080fd5b5061039f610ad0565b34801561044457600080fd5b50610388610af4565b34801561045957600080fd5b5061039f610b93565b34801561046e57600080fd5b5061038861047d36600461351e565b610c43565b34801561048e57600080fd5b506104a261049d36600461351e565b610cb9565b60405161035f949392919061383c565b3480156104be57600080fd5b506103886104cd36600461351e565b610f48565b3480156104de57600080fd5b5061039f610fbe565b3480156104f357600080fd5b5061050761050236600461351e565b610fc3565b60405161035f91906138d3565b34801561052057600080fd5b5061038861052f36600461351e565b6110e2565b34801561054057600080fd5b50610549611435565b60405161035f919061379b565b34801561056257600080fd5b506103886105713660046135a9565b611444565b34801561058257600080fd5b5061054961156f565b34801561059757600080fd5b506103886105a636600461351e565b611593565b3480156105b757600080fd5b506103886105c636600461340d565b611609565b3480156105d757600080fd5b5061039f61167f565b3480156105ec57600080fd5b5061039f611685565b34801561060157600080fd5b5061054961168b565b34801561061657600080fd5b5061039f61169a565b34801561062b57600080fd5b5061039f61169f565b34801561064057600080fd5b5061038861064f36600461340d565b6116a6565b34801561066057600080fd5b5061038861066f36600461340d565b61171c565b34801561068057600080fd5b5061038861068f36600461340d565b611768565b3480156106a057600080fd5b506103886106af36600461351e565b6117de565b3480156106c057600080fd5b50610388611824565b3480156106d557600080fd5b506103886106e436600461340d565b611872565b3480156106f557600080fd5b5061039f6118e8565b34801561070a57600080fd5b5061039f6118ef565b34801561071f57600080fd5b5061038861072e36600461340d565b611956565b34801561073f57600080fd5b5061039f6119cc565b34801561075457600080fd5b5061039f6119d2565b34801561076957600080fd5b5061038861077836600461351e565b6119d9565b34801561078957600080fd5b50610388610798366004613428565b611a1f565b3480156107a957600080fd5b506103886107b836600461340d565b611acd565b3480156107c957600080fd5b506103886107d8366004613428565b611b43565b3480156107e957600080fd5b5061039f611bbb565b3480156107fe57600080fd5b5061039f61080d366004613452565b611bc1565b34801561081e57600080fd5b5061038861082d36600461340d565b611da7565b34801561083e57600080fd5b5061038861084d36600461351e565b611f04565b34801561085e57600080fd5b5061038861086d366004613428565b612138565b34801561087e57600080fd5b5061039f6121b0565b34801561089357600080fd5b506103886108a236600461351e565b6121d4565b3480156108b357600080fd5b506108c76108c236600461354e565b61226c565b60405161035f9190614354565b3480156108e057600080fd5b5061039f6122d0565b3480156108f557600080fd5b5061038861090436600461340d565b6122d6565b34801561091557600080fd5b5061092961092436600461351e565b61234c565b60405161035f9190613889565b61038861094436600461351e565b612361565b6003602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b9097015495966001600160a01b0390951695939492939192909160ff8082169161010090041689565b6006546001600160a01b031633146109d55760405162461bcd60e51b81526004016109cc90613be5565b60405180910390fd5b6040516285d7e960e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906302175fa490610a20908490600401613894565b600060405180830381600087803b158015610a3a57600080fd5b505af1158015610a4e573d6000803e3d6000fd5b5050505050565b619d8090565b604051806040016040528060148152602001734c6f636b3372486f6c79476f7665726e616e636560601b81525081565b610a963383836125d7565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60046020526000908152604090205481565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6006546001600160a01b03163314610b1e5760405162461bcd60e51b81526004016109cc90613be5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663238efcbc6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b7957600080fd5b505af1158015610b8d573d6000803e3d6000fd5b50505050565b6000610c3e612710610c386000547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166344d96e956040518163ffffffff1660e01b815260040160206040518083038186803b158015610bfa57600080fd5b505afa158015610c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c329190613536565b90612794565b906127d5565b905090565b6006546001600160a01b03163314610c6d5760405162461bcd60e51b81526004016109cc90613be5565b604051632fe23dbd60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632fe23dbd90610a20908490600401613894565b60608060608060006003600087815260200190815260200160002090508060030181600401826005018360060183805480602002602001604051908101604052809291908181526020018280548015610d3b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d1d575b5050505050935082805480602002602001604051908101604052809291908181526020018280548015610d8d57602002820191906000526020600020905b815481526020019060010190808311610d79575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b82821015610e605760008481526020908190208301805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015610e4c5780601f10610e2157610100808354040283529160200191610e4c565b820191906000526020600020905b815481529060010190602001808311610e2f57829003601f168201915b505050505081526020019060010190610db5565b50505050915080805480602002602001604051908101604052809291908181526020016000905b82821015610f325760008481526020908190208301805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015610f1e5780601f10610ef357610100808354040283529160200191610f1e565b820191906000526020600020905b815481529060010190602001808311610f0157829003601f168201915b505050505081526020019060010190610e87565b5050505090509450945094509450509193509193565b6006546001600160a01b03163314610f725760405162461bcd60e51b81526004016109cc90613be5565b604051630d5efc5760e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063357bf15c90610a20908490600401613894565b600190565b60008160025410158015610fd75750600082115b610ff35760405162461bcd60e51b81526004016109cc906141a2565b6000828152600360205260409020600b81015460ff16156110185760029150506110dd565b8060070154431161102d5760009150506110dd565b806008015443116110425760019150506110dd565b61104a610b93565b600a820154600983015461105d91612817565b101561106d5760039150506110dd565b80600a01548160090154116110865760039150506110dd565b60028101546110995760049150506110dd565b600b810154610100900460ff16156110b55760079150506110dd565b60028101546110c79062127500612817565b42106110d75760069150506110dd565b60059150505b919050565b60006110ed82610fc3565b905060078160078111156110fd57fe5b141561111b5760405162461bcd60e51b81526004016109cc90613c82565b600082815260036020526040902060018101547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116911614801590611223575061116d6118ef565b6001808301546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263782d6fe192909116906111b490439061283c565b6040518363ffffffff1660e01b81526004016111d19291906137af565b60206040518083038186803b1580156111e957600080fd5b505afa1580156111fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112219190613536565b105b61123f5760405162461bcd60e51b81526004016109cc90614040565b600b8101805460ff1916600117905560005b60038201548110156113f8576113f082600301828154811061126f57fe5b6000918252602090912001546004840180546001600160a01b03909216918490811061129757fe5b90600052602060002001548460050184815481106112b157fe5b600091825260209182902001805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561133f5780601f106113145761010080835404028352916020019161133f565b820191906000526020600020905b81548152906001019060200180831161132257829003601f168201915b505050505085600601858154811061135357fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156113e15780601f106113b6576101008083540402835291602001916113e1565b820191906000526020600020905b8154815290600101906020018083116113c457829003601f168201915b5050505050866002015461287e565b600101611251565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c836040516114289190613894565b60405180910390a1505050565b6006546001600160a01b031681565b60007f8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee868660405160200161147b9392919061389d565b60405160208183030381529060405280519060200120905060007f0000000000000000000000000000000000000000000000000000000000000000826040516020016114c892919061373d565b60405160208183030381529060405280519060200120905060006001828787876040516000815260200160405260405161150594939291906138b5565b6020604051602081039080840390855afa158015611527573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661155a5760405162461bcd60e51b81526004016109cc90613d3c565b6115658189896125d7565b5050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6006546001600160a01b031633146115bd5760405162461bcd60e51b81526004016109cc90613be5565b604051634f03944760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634f03944790610a20908490600401613894565b6006546001600160a01b031633146116335760405162461bcd60e51b81526004016109cc90613be5565b60405163325da1f760e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906364bb43ee90610a2090849060040161379b565b60055481565b60015481565b6007546001600160a01b031681565b600a90565b62278d0081565b6006546001600160a01b031633146116d05760405162461bcd60e51b81526004016109cc90613be5565b604051638071198960e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638071198990610a2090849060040161379b565b6006546001600160a01b031633146117465760405162461bcd60e51b81526004016109cc90613be5565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031633146117925760405162461bcd60e51b81526004016109cc90613be5565b604051634a2ee93760e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063945dd26e90610a2090849060040161379b565b3330146117fd5760405162461bcd60e51b81526004016109cc90614310565b61271081111561181f5760405162461bcd60e51b81526004016109cc906139dc565b600155565b6007546001600160a01b0316331461184e5760405162461bcd60e51b81526004016109cc90614108565b600754600680546001600160a01b0319166001600160a01b03909216919091179055565b6006546001600160a01b0316331461189c5760405162461bcd60e51b81526004016109cc90613be5565b60405163ab033ea960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ab033ea990610a2090849060040161379b565b6201518081565b6000610c3e612710610c386001547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166344d96e956040518163ffffffff1660e01b815260040160206040518083038186803b158015610bfa57600080fd5b6006546001600160a01b031633146119805760405162461bcd60e51b81526004016109cc90613be5565b604051635b00381560e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b600702a90610a2090849060040161379b565b60005481565b6212750081565b3330146119f85760405162461bcd60e51b81526004016109cc90614310565b612710811115611a1a5760405162461bcd60e51b81526004016109cc90613ee1565b600055565b6006546001600160a01b03163314611a495760405162461bcd60e51b81526004016109cc90613be5565b60405163c3fc0e1d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c3fc0e1d90611a9790859085906004016137af565b600060405180830381600087803b158015611ab157600080fd5b505af1158015611ac5573d6000803e3d6000fd5b505050505050565b6006546001600160a01b03163314611af75760405162461bcd60e51b81526004016109cc90613be5565b60405163314662af60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5198abc90610a2090849060040161379b565b6006546001600160a01b03163314611b6d5760405162461bcd60e51b81526004016109cc90613be5565b60405163019cd41160e71b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ce6a088090611a9790859085906004016137af565b60025481565b6000611bcb6118ef565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663782d6fe133611c0643600161283c565b6040518363ffffffff1660e01b8152600401611c239291906137af565b60206040518083038186803b158015611c3b57600080fd5b505afa158015611c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c739190613536565b1015611c915760405162461bcd60e51b81526004016109cc90613aaf565b84518651148015611ca3575083518651145b8015611cb0575082518651145b611ccc5760405162461bcd60e51b81526004016109cc90613975565b8551611cea5760405162461bcd60e51b81526004016109cc90613b43565b611cf261169a565b86511115611d125760405162461bcd60e51b81526004016109cc9061408c565b336000908152600460205260409020548015611d8f576000611d3382610fc3565b90506001816007811115611d4357fe5b1415611d615760405162461bcd60e51b81526004016109cc906138fa565b6000816007811115611d6f57fe5b1415611d8d5760405162461bcd60e51b81526004016109cc90613f26565b505b611d9c8787878787612918565b979650505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611def5760405162461bcd60e51b81526004016109cc90613fa2565b60607f000000000000000000000000000000000000000000000000000000000000000081600081518110611e1f57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060606040518060400160405280600f81526020016e6164644a6f6228616464726573732960881b81525081600081518110611e7657fe5b6020026020010181905250606083604051602001611e94919061379b565b60405160208183030381529060405281600081518110611eb057fe5b60200260200101819052506060600081600081518110611ecc57fe5b602002602001018181525050611ac58482858589604051602001611ef09190613758565b604051602081830303815290604052612918565b6004611f0f82610fc3565b6007811115611f1a57fe5b14611f375760405162461bcd60e51b81526004016109cc90613cd5565b6000818152600360205260408120600554909190611f56904290612817565b905060005b60038301548110156120fe576120f6836003018281548110611f7957fe5b6000918252602090912001546004850180546001600160a01b039092169184908110611fa157fe5b9060005260206000200154856005018481548110611fbb57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156120495780601f1061201e57610100808354040283529160200191612049565b820191906000526020600020905b81548152906001019060200180831161202c57829003601f168201915b505050505086600601858154811061205d57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156120eb5780601f106120c0576101008083540402835291602001916120eb565b820191906000526020600020905b8154815290600101906020018083116120ce57829003601f168201915b505050505086612b63565b600101611f5b565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290611428908590849061449a565b6006546001600160a01b031633146121625760405162461bcd60e51b81526004016109cc90613be5565b60405163de63298d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063de63298d90611a9790859085906004016137af565b7f8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee81565b3330146121f35760405162461bcd60e51b81526004016109cc906142bf565b620151808110156122165760405162461bcd60e51b81526004016109cc90613c2e565b62278d008111156122395760405162461bcd60e51b81526004016109cc90613def565b600581905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b612274612ef4565b5060008281526003602090815260408083206001600160a01b0385168452600c018252918290208251606081018452815460ff808216151583526101009091041615159281019290925260010154918101919091525b92915050565b61271081565b6006546001600160a01b031633146123005760405162461bcd60e51b81526004016109cc90613be5565b604051630787a21360e51b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f0f4426090610a2090849060040161379b565b60086020526000908152604090205460ff1681565b6006546001600160a01b0316158061238357506006546001600160a01b031633145b61239f5760405162461bcd60e51b81526004016109cc906140d1565b60056123aa82610fc3565b60078111156123b557fe5b146123d25760405162461bcd60e51b81526004016109cc90614257565b6000818152600360205260408120600b8101805461ff001916610100179055905b600382015481101561259b5761259282600301828154811061241157fe5b6000918252602090912001546004840180546001600160a01b03909216918490811061243957fe5b906000526020600020015484600501848154811061245357fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156124e15780601f106124b6576101008083540402835291602001916124e1565b820191906000526020600020905b8154815290600101906020018083116124c457829003601f168201915b50505050508560060185815481106124f557fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156125835780601f1061255857610100808354040283529160200191612583565b820191906000526020600020905b81548152906001019060200180831161256657829003601f168201915b50505050508660020154612bd3565b506001016123f3565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f826040516125cb9190613894565b60405180910390a15050565b60016125e283610fc3565b60078111156125ed57fe5b1461260a5760405162461bcd60e51b81526004016109cc90613a27565b60008281526003602090815260408083206001600160a01b0387168452600c8101909252909120805460ff16156126535760405162461bcd60e51b81526004016109cc90613e4c565b600782015460405163782d6fe160e01b81526000916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163782d6fe1916126a8918a91906004016137af565b60206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f89190613536565b9050831561271957600983015461270f9082612817565b600984015561272e565b600a8301546127289082612817565b600a8401555b8154600160ff19909116811761ff0019166101008615150217835582018190556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c46906127849088908890889086906137c8565b60405180910390a1505050505050565b6000826127a3575060006122ca565b828202828482816127b057fe5b04146127ce5760405162461bcd60e51b81526004016109cc90613fff565b9392505050565b60006127ce83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612db9565b6000828201838110156127ce5760405162461bcd60e51b81526004016109cc90613b0c565b60006127ce83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250612df0565b600085858585856040516020016128999594939291906137f0565b60408051601f19818403018152828252805160209182012060008181526008909252919020805460ff1916905591506001600160a01b0387169082907f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf879061290890899089908990899061445d565b60405180910390a3505050505050565b60008061292d612926610fbe565b4390612817565b9050600061294361293c610a55565b8390612817565b6002805460010190559050612956612f14565b604051806101a001604052806002548152602001336001600160a01b03168152602001600081526020018a815260200189815260200188815260200187815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060036000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550604082015181600201556060820151816003019080519060200190612a39929190612f89565b5060808201518051612a55916004840191602090910190612fee565b5060a08201518051612a71916005840191602090910190613035565b5060c08201518051612a8d91600684019160209091019061308e565b5060e082015160078201556101008083015160088301556101208301516009830155610140830151600a830155610160830151600b90920180546101809094015160ff199094169215159290921761ff0019169215150291909117905580516020808301516001600160a01b03166000908152600490915260409081902091909155815190517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091612b4e9133908d908d908d908d908b908b908f90614379565b60405180910390a15198975050505050505050565b600860008686868686604051602001612b809594939291906137f0565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1615612bc65760405162461bcd60e51b81526004016109cc90613d88565b611ac58585858585612e1c565b606060008686868686604051602001612bf09594939291906137f0565b60408051601f1981840301815291815281516020928301206000818152600890935291205490915060ff16612c375760405162461bcd60e51b81526004016109cc90613e96565b82612c40612ef0565b1015612c5e5760405162461bcd60e51b81526004016109cc90613b8c565b612c6b8362127500612817565b612c73612ef0565b1115612c915760405162461bcd60e51b81526004016109cc90613a6e565b6000818152600860205260409020805460ff191690558451606090612cb7575083612ce3565b858051906020012085604051602001612cd19291906136f0565b60405160208183030381529060405290505b60006060896001600160a01b03168984604051612d009190613721565b60006040518083038185875af1925050503d8060008114612d3d576040519150601f19603f3d011682016040523d82523d6000602084013e612d42565b606091505b509150915081612d645760405162461bcd60e51b81526004016109cc90614157565b896001600160a01b0316847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051612da4949392919061445d565b60405180910390a39998505050505050505050565b60008183612dda5760405162461bcd60e51b81526004016109cc91906138e7565b506000838581612de657fe5b0495945050505050565b60008184841115612e145760405162461bcd60e51b81526004016109cc91906138e7565b505050900390565b6000612e32600554612e2c612ef0565b90612817565b821015612e515760405162461bcd60e51b81526004016109cc906141e8565b60008686868686604051602001612e6c9594939291906137f0565b60408051601f19818403018152828252805160209182012060008181526008909252919020805460ff1916600117905591506001600160a01b0388169082907f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f90612ede908a908a908a908a9061445d565b60405180910390a39695505050505050565b4290565b604080516060810182526000808252602082018190529181019190915290565b604051806101a001604052806000815260200160006001600160a01b031681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b828054828255906000526020600020908101928215612fde579160200282015b82811115612fde57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612fa9565b50612fea9291506130e7565b5090565b828054828255906000526020600020908101928215613029579160200282015b8281111561302957825182559160200191906001019061300e565b50612fea929150613106565b828054828255906000526020600020908101928215613082579160200282015b82811115613082578251805161307291849160209091019061311b565b5091602001919060010190613055565b50612fea929150613188565b8280548282559060005260206000209081019282156130db579160200282015b828111156130db57825180516130cb91849160209091019061311b565b50916020019190600101906130ae565b50612fea9291506131a5565b5b80821115612fea5780546001600160a01b03191681556001016130e8565b5b80821115612fea5760008155600101613107565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061315c57805160ff1916838001178555613029565b82800160010185558215613029579182018281111561302957825182559160200191906001019061300e565b80821115612fea57600061319c82826131c2565b50600101613188565b80821115612fea5760006131b982826131c2565b506001016131a5565b50805460018160011615610100020316600290046000825580601f106131e85750613206565b601f0160209004906000526020600020908101906132069190613106565b50565b80356001600160a01b03811681146122ca57600080fd5b600082601f830112613230578081fd5b813561324361323e826144cf565b6144a8565b81815291506020808301908481018184028601820187101561326457600080fd5b60005b8481101561328b576132798883613209565b84529282019290820190600101613267565b505050505092915050565b600082601f8301126132a6578081fd5b81356132b461323e826144cf565b818152915060208083019084810160005b8481101561328b576132dc888484358a01016133a4565b845292820192908201906001016132c5565b600082601f8301126132fe578081fd5b813561330c61323e826144cf565b818152915060208083019084810160005b8481101561328b57613334888484358a01016133a4565b8452928201929082019060010161331d565b600082601f830112613356578081fd5b813561336461323e826144cf565b81815291506020808301908481018184028601820187101561338557600080fd5b60005b8481101561328b57813584529282019290820190600101613388565b600082601f8301126133b4578081fd5b813567ffffffffffffffff8111156133ca578182fd5b6133dd601f8201601f19166020016144a8565b91508082528360208285010111156133f457600080fd5b8060208401602084013760009082016020015292915050565b60006020828403121561341e578081fd5b6127ce8383613209565b6000806040838503121561343a578081fd5b6134448484613209565b946020939093013593505050565b600080600080600060a08688031215613469578081fd5b853567ffffffffffffffff80821115613480578283fd5b61348c89838a01613220565b965060208801359150808211156134a1578283fd5b6134ad89838a01613346565b955060408801359150808211156134c2578283fd5b6134ce89838a016132ee565b945060608801359150808211156134e3578283fd5b6134ef89838a01613296565b93506080880135915080821115613504578283fd5b50613511888289016133a4565b9150509295509295909350565b60006020828403121561352f578081fd5b5035919050565b600060208284031215613547578081fd5b5051919050565b60008060408385031215613560578182fd5b823591506135718460208501613209565b90509250929050565b6000806040838503121561358c578182fd5b82359150602083013561359e8161451b565b809150509250929050565b600080600080600060a086880312156135c0578081fd5b8535945060208601356135d28161451b565b9350604086013560ff811681146135e7578182fd5b94979396509394606081013594506080013592915050565b6000815180845260208085019450808401835b838110156136375781516001600160a01b031687529582019590820190600101613612565b509495945050505050565b6000815180845260208085018081965082840281019150828601855b858110156136885782840389526136768483516136c4565b9885019893509084019060010161365e565b5091979650505050505050565b6000815180845260208085019450808401835b83811015613637578151875295820195908201906001016136a8565b600081518084526136dc8160208601602086016144ef565b601f01601f19169290920160200192915050565b6001600160e01b03198316815281516000906137138160048501602087016144ef565b919091016004019392505050565b600082516137338184602087016144ef565b9190910192915050565b61190160f01b81526002810192909252602282015260420190565b7f476f7665726e616e63653a3a70726f706f73654a6f6228293a20000000000000815260609190911b6bffffffffffffffffffffffff1916601a820152602e0190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03949094168452602084019290925215156040830152606082015260800190565b600060018060a01b038716825285602083015260a0604083015261381760a08301866136c4565b828103606084015261382981866136c4565b9150508260808301529695505050505050565b60006080825261384f60808301876135ff565b82810360208401526138618187613695565b905082810360408401526138758186613642565b90508281036060840152611d9c8185613642565b901515815260200190565b90815260200190565b92835260208301919091521515604082015260600190565b93845260ff9290921660208401526040830152606082015260800190565b60208101600883106138e157fe5b91905290565b6000602082526127ce60208301846136c4565b60208082526055908201527f476f7665726e616e63653a3a70726f706f73653a206f6e65206c69766520707260408201527f6f706f73616c207065722070726f706f7365722c20666f756e6420616e20616c6060820152741c9958591e481858dd1a5d99481c1c9bdc1bdcd85b605a1b608082015260a00190565b60208082526041908201527f476f7665726e616e63653a3a70726f706f73653a2070726f706f73616c20667560408201527f6e6374696f6e20696e666f726d6174696f6e206172697479206d69736d6174636060820152600d60fb1b608082015260a00190565b6020808252602b908201527f476f7665726e616e63653a3a7365745468726573686f6c643a2074687265736860408201526a6f6c645f203e204241534560a81b606082015260800190565b60208082526027908201527f476f7665726e616e63653a3a5f63617374566f74653a20766f74696e672069736040820152660818db1bdcd95960ca1b606082015260800190565b602080825260339082015260008051602061452a83398151915260408201527230b739b0b1ba34b7b71034b99039ba30b6329760691b606082015260800190565b6020808252603c908201527f476f7665726e616e63653a3a70726f706f73653a2070726f706f73657220766f60408201527f7465732062656c6f772070726f706f73616c207468726573686f6c6400000000606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526029908201527f476f7665726e616e63653a3a70726f706f73653a206d7573742070726f7669646040820152686520616374696f6e7360b81b606082015260800190565b602080825260459082015260008051602061452a83398151915260408201527f616e73616374696f6e206861736e2774207375727061737365642074696d65206060820152643637b1b59760d91b608082015260a00190565b60208082526029908201527f4572726f723a2063616c6c6572206973206e6f742074686520677561726469616040820152686e206164647265737360b81b606082015260800190565b60208082526034908201527f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420656040820152733c31b2b2b21036b4b734b6bab6903232b630bc9760611b606082015260800190565b60208082526033908201527f476f7665726e616e63653a3a63616e63656c3a2063616e6e6f742063616e63656040820152721b08195e1958dd5d1959081c1c9bdc1bdcd85b606a1b606082015260800190565b60208082526041908201527f476f7665726e616e63653a3a71756575653a2070726f706f73616c2063616e2060408201527f6f6e6c79206265207175657565642069662069742069732073756363656564656060820152601960fa1b608082015260a00190565b6020808252602c908201527f476f7665726e616e63653a3a63617374566f746542795369673a20696e76616c60408201526b6964207369676e617475726560a01b606082015260800190565b60208082526041908201527f476f7665726e616e63653a3a5f71756575654f725265766572743a2070726f7060408201527f6f73616c20616374696f6e20616c7265616479207175657565642061742065746060820152606160f81b608082015260a00190565b60208082526038908201527f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e60408201527f6f7420657863656564206d6178696d756d2064656c61792e0000000000000000606082015260800190565b6020808252602a908201527f476f7665726e616e63653a3a5f63617374566f74653a20766f74657220616c726040820152691958591e481d9bdd195960b21b606082015260800190565b6020808252603d9082015260008051602061452a83398151915260408201527f616e73616374696f6e206861736e2774206265656e207175657565642e000000606082015260800190565b60208082526025908201527f476f7665726e616e63653a3a73657451756f72756d3a2071756f72756d5f203e604082015264204241534560d81b606082015260800190565b60208082526056908201527f476f7665726e616e63653a3a70726f706f73653a206f6e65206c69766520707260408201527f6f706f73616c207065722070726f706f7365722c20666f756e6420616e20616c6060820152751c9958591e481c195b991a5b99c81c1c9bdc1bdcd85b60521b608082015260a00190565b60208082526037908201527f476f7665726e616e63653a3a70726f706f73654a6f623a206f6e6c7920564f5460408201527f45522063616e2070726f706f7365206e6577206a6f6273000000000000000000606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252602c908201527f476f7665726e616e63653a3a63616e63656c3a2070726f706f7365722061626f60408201526b1d99481d1a1c995cda1bdb1960a21b606082015260800190565b60208082526025908201527f476f7665726e616e63653a3a70726f706f73653a20746f6f206d616e7920616360408201526474696f6e7360d81b606082015260800190565b6020808252601d908201527f476f7665726e616e63653a657865637574653a2021677561726469616e000000604082015260600190565b6020808252602f908201527f4c6f636b3372476f7665726e616e63653a3a736574477561726469616e3a202160408201526e3832b73234b733a3bab0b93234b0b760891b606082015260800190565b6020808252603d9082015260008051602061452a83398151915260408201527f616e73616374696f6e20657865637574696f6e2072657665727465642e000000606082015260800190565b60208082526026908201527f476f7665726e616e63653a3a73746174653a20696e76616c69642070726f706f6040820152651cd85b081a5960d21b606082015260800190565b60208082526049908201527f54696d656c6f636b3a3a71756575655472616e73616374696f6e3a204573746960408201527f6d6174656420657865637574696f6e20626c6f636b206d757374207361746973606082015268333c903232b630bc9760b91b608082015260a00190565b60208082526042908201527f476f7665726e616e63653a3a657865637574653a2070726f706f73616c20636160408201527f6e206f6e6c792062652065786563757465642069662069742069732071756575606082015261195960f21b608082015260a00190565b60208082526031908201527f54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f60408201527036b290333937b6902a34b6b2b637b1b59760791b606082015260800190565b60208082526024908201527f476f7665726e616e63653a3a73657451756f72756d3a2074696d656c6f636b206040820152636f6e6c7960e01b606082015260800190565b8151151581526020808301511515908201526040918201519181019190915260600190565b8981526001600160a01b0389166020820152610120604082018190526000906143a48382018b6135ff565b905082810360608401526143b8818a613695565b905082810360808401526143cc8189613642565b905082810360a08401526143e08188613642565b90508560c08401528460e084015282810361010084015261440181856136c4565b9c9b505050505050505050505050565b9889526001600160a01b0397909716602089015260408801959095526060870193909352608086019190915260a085015260c0840152151560e083015215156101008201526101200190565b60008582526080602083015261447660808301866136c4565b828103604084015261448881866136c4565b91505082606083015295945050505050565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156144c757600080fd5b604052919050565b600067ffffffffffffffff8211156144e5578081fd5b5060209081020190565b60005b8381101561450a5781810151838201526020016144f2565b83811115610b8d5750506000910152565b801515811461320657600080fdfe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472a2646970667358221220e26d14812bd7047b9022752c3956b6b7f57feb2214a65fbc77855c5dfbc5a41e64736f6c634300060c0033000000000000000000000000e3f3869ddd41c23eff3630f58e5bfa584c770d67

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

000000000000000000000000e3f3869ddd41c23eff3630f58e5bfa584c770d67

-----Decoded View---------------
Arg [0] : token_ (address): 0xe3f3869ddd41c23eff3630f58e5bfa584c770d67

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000e3f3869ddd41c23eff3630f58e5bfa584c770d67


Deployed ByteCode Sourcemap

9827:18750:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12735:43;;;;;;;;;;-1:-1:-1;12735:43:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;25191:114;;;;;;;;;;-1:-1:-1;25191:114:0;;;;;:::i;:::-;;:::i;:::-;;11581:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;9927:52::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;21040:117::-;;;;;;;;;;-1:-1:-1;21040:117:0;;;;;:::i;:::-;;:::i;13106:40::-;;;;;;;;;;;;;:::i;12842:50::-;;;;;;;;;;-1:-1:-1;12842:50:0;;;;;:::i;:::-;;:::i;12965:122::-;;;;;;;;;;;;;:::i;24862:91::-;;;;;;;;;;;;;:::i;10621:122::-;;;;;;;;;;;;;:::i;25435:132::-;;;;;;;;;;-1:-1:-1;25435:132:0;;;;;:::i;:::-;;:::i;19459:287::-;;;;;;;;;;-1:-1:-1;19459:287:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;25078:107::-;;;;;;;;;;-1:-1:-1;25078:107:0;;;;;:::i;:::-;;:::i;11434:63::-;;;;;;;;;;;;;:::i;19914:1118::-;;;;;;;;;;-1:-1:-1;19914:1118:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;18690:761::-;;;;;;;;;;-1:-1:-1;18690:761:0;;;;;:::i;:::-;;:::i;23285:23::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;21165:487::-;;;;;;;;;;-1:-1:-1;21165:487:0;;;;;:::i;:::-;;:::i;11754:29::-;;;;;;;;;;;;;:::i;25311:118::-;;;;;;;;;;-1:-1:-1;25311:118:0;;;;;:::i;:::-;;:::i;24319:115::-;;;;;;;;;;-1:-1:-1;24319:115:0;;;;;:::i;:::-;;:::i;23239:33::-;;;;;;;;;;;;;:::i;10279:37::-;;;;;;;;;;;;;:::i;23315:30::-;;;;;;;;;;;;;:::i;11253:74::-;;;;;;;;;;;;;:::i;23186:44::-;;;;;;;;;;;;;:::i;24531:91::-;;;;;;;;;;-1:-1:-1;24531:91:0;;;;;:::i;:::-;;:::i;23509:107::-;;;;;;;;;;-1:-1:-1;23509:107:0;;;;;:::i;:::-;;:::i;24628:::-;;;;;;;;;;-1:-1:-1;24628:107:0;;;;;:::i;:::-;;:::i;10893:270::-;;;;;;;;;;-1:-1:-1;10893:270:0;;;;;:::i;:::-;;:::i;23628:184::-;;;;;;;;;;;;;:::i;24741:115::-;;;;;;;;;;-1:-1:-1;24741:115:0;;;;;:::i;:::-;;:::i;23136:43::-;;;;;;;;;;;;;:::i;10751:134::-;;;;;;;;;;;;;:::i;24196:117::-;;;;;;;;;;-1:-1:-1;24196:117:0;;;;;:::i;:::-;;:::i;10121:31::-;;;;;;;;;;;;;:::i;23086:43::-;;;;;;;;;;;;;:::i;10367:246::-;;;;;;;;;;-1:-1:-1;10367:246:0;;;;;:::i;:::-;;:::i;24070:120::-;;;;;;;;;;-1:-1:-1;24070:120:0;;;;;:::i;:::-;;:::i;24440:85::-;;;;;;;;;;-1:-1:-1;24440:85:0;;;;;:::i;:::-;;:::i;23944:120::-;;;;;;;;;;-1:-1:-1;23944:120:0;;;;;:::i;:::-;;:::i;11839:25::-;;;;;;;;;;;;;:::i;14695:1322::-;;;;;;;;;;-1:-1:-1;14695:1322:0;;;;;:::i;:::-;;:::i;14121:566::-;;;;;;;;;;-1:-1:-1;14121:566:0;;;;;:::i;:::-;;:::i;17112:559::-;;;;;;;;;;-1:-1:-1;17112:559:0;;;;;:::i;:::-;;:::i;23824:114::-;;;;;;;;;;-1:-1:-1;23824:114:0;;;;;:::i;:::-;;:::i;13236:94::-;;;;;;;;;;;;;:::i;25915:406::-;;;;;;;;;;-1:-1:-1;25915:406:0;;;;;:::i;:::-;;:::i;19754:152::-;;;;;;;;;;-1:-1:-1;19754:152:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;10325:33::-;;;;;;;;;;;;;:::i;24959:107::-;;;;;;;;;;-1:-1:-1;24959:107:0;;;;;:::i;:::-;;:::i;25581:51::-;;;;;;;;;;-1:-1:-1;25581:51:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;18043:639::-;;;;;;:::i;:::-;;:::i;12735:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12735:43:0;;;;;;;;;;;;;;;;;;;;;;:::o;25191:114::-;23422:8;;-1:-1:-1;;;;;23422:8:0;23408:10;:22;23400:77;;;;-1:-1:-1;;;23400:77:0;;;;;;;:::i;:::-;;;;;;;;;25267:30:::1;::::0;-1:-1:-1;;;25267:30:0;;-1:-1:-1;;;;;25267:4:0::1;:20;::::0;::::1;::::0;:30:::1;::::0;25288:8;;25267:30:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25191:114:::0;:::o;11581:69::-;11641:6;11581:69;:::o;9927:52::-;;;;;;;;;;;;;;-1:-1:-1;;;9927:52:0;;;;:::o;21040:117::-;21107:42;21117:10;21129;21141:7;21107:9;:42::i;:::-;21040:117;;:::o;13106:40::-;;;:::o;12842:50::-;;;;;;;;;;;;;:::o;12965:122::-;13007:80;12965:122;:::o;24862:91::-;23422:8;;-1:-1:-1;;;;;23422:8:0;23408:10;:22;23400:77;;;;-1:-1:-1;;;23400:77:0;;;;;;;:::i;:::-;24922:4:::1;-1:-1:-1::0;;;;;24922:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24862:91::o:0;10621:122::-;10665:4;10689:46;10353:5;10689:36;10712:12;;10689:4;-1:-1:-1;;;;;10689:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:22;;:36::i;:::-;:40;;:46::i;:::-;10682:53;;10621:122;:::o;25435:132::-;23422:8;;-1:-1:-1;;;;;23422:8:0;23408:10;:22;23400:77;;;;-1:-1:-1;;;23400:77:0;;;;;;;:::i;:::-;25520:39:::1;::::0;-1:-1:-1;;;25520:39:0;;-1:-1:-1;;;;;25520:4:0::1;:29;::::0;::::1;::::0;:39:::1;::::0;25550:8;;25520:39:::1;;;:::i;19459:287::-:0;19517:24;19543:20;19565:26;19593:24;19630:18;19651:9;:21;19661:10;19651:21;;;;;;;;;;;19630:42;;19691:1;:9;;19702:1;:8;;19712:1;:12;;19726:1;:11;;19683:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19683:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19683:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19683:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19459:287;;;;;:::o;25078:107::-;23422:8;;-1:-1:-1;;;;;23422:8:0;23408:10;:22;23400:77;;;;-1:-1:-1;;;23400:77:0;;;;;;;:::i;:::-;25149:28:::1;::::0;-1:-1:-1;;;25149:28:0;;-1:-1:-1;;;;;25149:4:0::1;:20;::::0;::::1;::::0;:28:::1;::::0;25170:6;;25149:28:::1;;;:::i;11434:63::-:0;11493:1;11434:63;:::o;19914:1118::-;19967:13;20018:10;20001:13;;:27;;:45;;;;;20045:1;20032:10;:14;20001:45;19993:96;;;;-1:-1:-1;;;19993:96:0;;;;;;;:::i;:::-;20100:25;20128:21;;;:9;:21;;;;;20164:17;;;;;;20160:865;;;20205:22;20198:29;;;;;20160:865;20265:8;:19;;;20249:12;:35;20245:780;;20308:21;20301:28;;;;;20245:780;20367:8;:17;;;20351:12;:33;20347:678;;20408:20;20401:27;;;;;20347:678;20497:13;:11;:13::i;:::-;20472:21;;;;20450:17;;;;:44;;:21;:44::i;:::-;:60;20446:579;;;20534:22;20527:29;;;;;20446:579;20599:8;:21;;;20578:8;:17;;;:42;20574:451;;20644:22;20637:29;;;;;20574:451;20688:12;;;;20684:341;;20729:23;20722:30;;;;;20684:341;20774:17;;;;;;;;;20770:255;;;20815:22;20808:29;;;;;20770:255;20878:12;;;;:30;;23122:7;20878:16;:30::i;:::-;20859:15;:49;20855:170;;20932:21;20925:28;;;;;20855:170;20993:20;20986:27;;;19914:1118;;;;:::o;18690:761::-;18741:19;18763:17;18769:10;18763:5;:17::i;:::-;18741:39;-1:-1:-1;18808:22:0;18799:5;:31;;;;;;;;;;18791:95;;;;-1:-1:-1;;;18791:95:0;;;;;;;:::i;:::-;18899:25;18927:21;;;:9;:21;;;;;18967:17;;;;18996:4;-1:-1:-1;;;;;18967:34:0;;;:17;;:34;;;;:136;;;19084:19;:17;:19::i;:::-;19042:17;;;;;-1:-1:-1;;;;;19023:4:0;:18;;;;;19042:17;;;;19061:19;;:12;;:16;:19::i;:::-;19023:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:80;18967:136;18959:193;;;;-1:-1:-1;;;18959:193:0;;;;;;;:::i;:::-;19165:17;;;:24;;-1:-1:-1;;19165:24:0;19185:4;19165:24;;;:17;19200:198;19221:16;;;:23;19217:27;;19200:198;;;19266:120;19285:8;:16;;19302:1;19285:19;;;;;;;;;;;;;;;;;;19306:15;;;:18;;-1:-1:-1;;;;;19285:19:0;;;;19322:1;;19306:18;;;;;;;;;;;;;;19326:8;:19;;19346:1;19326:22;;;;;;;;;;;;;;;;;;19266:120;;;;;;;-1:-1:-1;;19266:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19326:22;19266:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19350:8;:18;;19369:1;19350:21;;;;;;;;;;;;;;;;;;19266:120;;;;;;;-1:-1:-1;;19266:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19350:21;19266:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19373:8;:12;;;19266:18;:120::i;:::-;19246:3;;19200:198;;;;19415:28;19432:10;19415:28;;;;;;:::i;:::-;;;;;;;;18690:761;;;:::o;23285:23::-;;;-1:-1:-1;;;;;23285:23:0;;:::o;21165:487::-;21268:18;13278:52;21327:10;21339:7;21299:48;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21289:59;;;;;;21268:80;;21359:14;21415:15;21432:10;21386:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21376:68;;;;;;21359:85;;21455:17;21475:26;21485:6;21493:1;21496;21499;21475:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21475:26:0;;-1:-1:-1;;21475:26:0;;;-1:-1:-1;;;;;;;21520:23:0;;21512:80;;;;-1:-1:-1;;;21512:80:0;;;;;;;:::i;:::-;21603:41;21613:9;21624:10;21636:7;21603:9;:41::i;:::-;21165:487;;;;;;;;:::o;11754:29::-;;;:::o;25311:118::-;23422:8;;-1:-1:-1;;;;;23422:8:0;23408:10;:22;23400:77;;;;-1:-1:-1;;;23400:77:0;;;;;;;:::i;:::-;25389:32:::1;::::0;-1:-1:-1;;;25389:32:0;;-1:-1:-1;;;;;25389:4:0::1;:22;::::0;::::1;::::0;:32:::1;::::0;25412:8;;25389:32:::1;;;:::i;24319:115::-:0;23422:8;;-1:-1:-1;;;;;23422:8:0;23408:10;:22;23400:77;;;;-1:-1:-1;;;23400:77:0;;;;;;;:::i;:::-;24395:31:::1;::::0;-1:-1:-1;;;24395:31:0;;-1:-1:-1;;;;;24395:4:0::1;:20;::::0;::::1;::::0;:31:::1;::::0;24416:9;;24395:31:::1;;;:::i;23239:33::-:0;;;;:::o;10279:37::-;;;;:::o;23315:30::-;;;-1:-1:-1;;;;;23315:30:0;;:::o;11253:74::-;11322:2;11253:74;:::o;23186:44::-;23223:7;23186:44;:::o;24531:91::-;23422:8;;-1:-1:-1;;;;;23422:8:0;23408:10;:22;23400:77;;;;-1:-1:-1;;;23400:77:0;;;;;;;:::i;:::-;24595:19:::1;::::0;-1:-1:-1;;;24595:19:0;;-1:-1:-1;;;;;24595:4:0::1;:14;::::0;::::1;::::0;:19:::1;::::0;24610:3;;24595:19:::1;;;:::i;23509:107::-:0;23422:8;;-1:-1:-1;;;;;23422:8:0;23408:10;:22;23400:77;;;;-1:-1:-1;;;23400:77:0;;;;;;;:::i;:::-;23581:15:::1;:27:::0;;-1:-1:-1;;;;;;23581:27:0::1;-1:-1:-1::0;;;;;23581:27:0;;;::::1;::::0;;;::::1;::::0;;23509:107::o;24628:::-;23422:8;;-1:-1:-1;;;;;23422:8:0;23408:10;:22;23400:77;;;;-1:-1:-1;;;23400:77:0;;;;;;;:::i;:::-;24700:27:::1;::::0;-1:-1:-1;;;24700:27:0;;-1:-1:-1;;;;;24700:4:0::1;:20;::::0;::::1;::::0;:27:::1;::::0;24721:5;;24700:27:::1;;;:::i;10893:270::-:0;10960:10;10982:4;10960:27;10952:76;;;;-1:-1:-1;;;10952:76:0;;;;;;;:::i;:::-;10353:5;11047:10;:18;;11039:74;;;;-1:-1:-1;;;11039:74:0;;;;;;;:::i;:::-;11124:18;:31;10893:270::o;23628:184::-;23700:15;;-1:-1:-1;;;;;23700:15:0;23686:10;:29;23678:89;;;;-1:-1:-1;;;23678:89:0;;;;;;;:::i;:::-;23789:15;;23778:8;:26;;-1:-1:-1;;;;;;23778:26:0;-1:-1:-1;;;;;23789:15:0;;;23778:26;;;;;;23628:184::o;24741:115::-;23422:8;;-1:-1:-1;;;;;23422:8:0;23408:10;:22;23400:77;;;;-1:-1:-1;;;23400:77:0;;;;;;;:::i;:::-;24817:31:::1;::::0;-1:-1:-1;;;24817:31:0;;-1:-1:-1;;;;;24817:4:0::1;:18;::::0;::::1;::::0;:31:::1;::::0;24836:11;;24817:31:::1;;;:::i;23136:43::-:0;23173:6;23136:43;:::o;10751:134::-;10801:4;10825:52;10353:5;10825:42;10848:18;;10825:4;-1:-1:-1;;;;;10825:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24196:117;23422:8;;-1:-1:-1;;;;;23422:8:0;23408:10;:22;23400:77;;;;-1:-1:-1;;;23400:77:0;;;;;;;:::i;:::-;24273:32:::1;::::0;-1:-1:-1;;;24273:32:0;;-1:-1:-1;;;;;24273:4:0::1;:21;::::0;::::1;::::0;:32:::1;::::0;24295:9;;24273:32:::1;;;:::i;10121:31::-:0;;;;:::o;23086:43::-;23122:7;23086:43;:::o;10367:246::-;10428:10;10450:4;10428:27;10420:76;;;;-1:-1:-1;;;10420:76:0;;;;;;;:::i;:::-;10353:5;10515:7;:15;;10507:65;;;;-1:-1:-1;;;10507:65:0;;;;;;;:::i;:::-;10583:12;:22;10367:246::o;24070:120::-;23422:8;;-1:-1:-1;;;;;23422:8:0;23408:10;:22;23400:77;;;;-1:-1:-1;;;23400:77:0;;;;;;;:::i;:::-;24151:31:::1;::::0;-1:-1:-1;;;24151:31:0;;-1:-1:-1;;;;;24151:4:0::1;:18;::::0;::::1;::::0;:31:::1;::::0;24170:3;;24175:6;;24151:31:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24070:120:::0;;:::o;24440:85::-;23422:8;;-1:-1:-1;;;;;23422:8:0;23408:10;:22;23400:77;;;;-1:-1:-1;;;23400:77:0;;;;;;;:::i;:::-;24501:16:::1;::::0;-1:-1:-1;;;24501:16:0;;-1:-1:-1;;;;;24501:4:0::1;:11;::::0;::::1;::::0;:16:::1;::::0;24513:3;;24501:16:::1;;;:::i;23944:120::-:0;23422:8;;-1:-1:-1;;;;;23422:8:0;23408:10;:22;23400:77;;;;-1:-1:-1;;;23400:77:0;;;;;;;:::i;:::-;24025:31:::1;::::0;-1:-1:-1;;;24025:31:0;;-1:-1:-1;;;;;24025:4:0::1;:16;::::0;::::1;::::0;:31:::1;::::0;24042:5;;24049:6;;24025:31:::1;;;:::i;11839:25::-:0;;;;:::o;14695:1322::-;14857:4;14937:19;:17;:19::i;:::-;-1:-1:-1;;;;;14882:4:0;:18;;14901:10;14913:19;:12;14930:1;14913:16;:19::i;:::-;14882:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:74;;14874:147;;;;-1:-1:-1;;;14874:147:0;;;;;;;:::i;:::-;15058:6;:13;15040:7;:14;:31;:70;;;;;15093:10;:17;15075:7;:14;:35;15040:70;:108;;;;;15132:9;:16;15114:7;:14;:34;15040:108;15032:186;;;;-1:-1:-1;;;15032:186:0;;;;;;;:::i;:::-;15237:14;;15229:73;;;;-1:-1:-1;;;15229:73:0;;;;;;;:::i;:::-;15339:23;:21;:23::i;:::-;15321:7;:14;:41;;15313:91;;;;-1:-1:-1;;;15313:91:0;;;;;;;:::i;:::-;15459:10;15417:21;15441:29;;;:17;:29;;;;;;15485:21;;15481:448;;15521:42;15566:23;15572:16;15566:5;:23::i;:::-;15521:68;-1:-1:-1;15642:20:0;15610:28;:52;;;;;;;;;;15602:150;;;;-1:-1:-1;;;15602:150:0;;;;;;;:::i;:::-;15805:21;15773:28;:53;;;;;;;;;;15765:152;;;;-1:-1:-1;;;15765:152:0;;;;;;;:::i;:::-;15481:448;;15948:61;15957:7;15966:6;15974:10;15986:9;15997:11;15948:8;:61::i;:::-;15941:68;14695:1322;-1:-1:-1;;;;;;;14695:1322:0:o;14121:566::-;14180:10;-1:-1:-1;;;;;14202:4:0;14180:27;;14172:95;;;;-1:-1:-1;;;14172:95:0;;;;;;;:::i;:::-;14278:24;14334:4;14313:7;14321:1;14313:10;;;;;;;;;;;;;:26;-1:-1:-1;;;;;14313:26:0;;;-1:-1:-1;;;;;14313:26:0;;;;;14352;14389:33;;;;;;;;;;;;;-1:-1:-1;;;14389:33:0;;;:10;14400:1;14389:13;;;;;;;;;;;;;:33;;;;14435:24;14496:3;14485:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;14470:9;14480:1;14470:12;;;;;;;;;;;;;:30;;;;14513:20;14556:1;14544:6;14551:1;14544:9;;;;;;;;;;;;;:13;;;;;14570:109;14579:7;14588:6;14596:10;14608:9;14673:3;14626:51;;;;;;;;:::i;:::-;;;;;;;;;;;;;14570:8;:109::i;17112:559::-;17191:23;17170:17;17176:10;17170:5;:17::i;:::-;:44;;;;;;;;;17162:122;;;;-1:-1:-1;;;17162:122:0;;;;;;;:::i;:::-;17295:25;17323:21;;;:9;:21;;;;;17386:5;;17323:21;;17295:25;17366:26;;:15;;:19;:26::i;:::-;17355:37;;17408:6;17403:185;17424:16;;;:23;17420:27;;17403:185;;;17469:107;17484:8;:16;;17501:1;17484:19;;;;;;;;;;;;;;;;;;17505:15;;;:18;;-1:-1:-1;;;;;17484:19:0;;;;17521:1;;17505:18;;;;;;;;;;;;;;17525:8;:19;;17545:1;17525:22;;;;;;;;;;;;;;;;;;17469:107;;;;;;;-1:-1:-1;;17469:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17525:22;17469:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17549:8;:18;;17568:1;17549:21;;;;;;;;;;;;;;;;;;17469:107;;;;;;;-1:-1:-1;;17469:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17549:21;17469:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17572:3;17469:14;:107::i;:::-;17449:3;;17403:185;;;-1:-1:-1;17598:12:0;;;:18;;;17632:31;;;;;;17647:10;;17613:3;;17632:31;:::i;23824:114::-;23422:8;;-1:-1:-1;;;;;23422:8:0;23408:10;:22;23400:77;;;;-1:-1:-1;;;23400:77:0;;;;;;;:::i;:::-;23902:28:::1;::::0;-1:-1:-1;;;23902:28:0;;-1:-1:-1;;;;;23902:4:0::1;:13;::::0;::::1;::::0;:28:::1;::::0;23916:5;;23923:6;;23902:28:::1;;;:::i;13236:94::-:0;13278:52;13236:94;:::o;25915:406::-;25972:10;25994:4;25972:27;25964:89;;;;-1:-1:-1;;;25964:89:0;;;;;;;:::i;:::-;23173:6;26072;:23;;26064:88;;;;-1:-1:-1;;;26064:88:0;;;;;;;:::i;:::-;23223:7;26171:6;:23;;26163:92;;;;-1:-1:-1;;;26163:92:0;;;;;;;:::i;:::-;26266:5;:14;;;26298:15;;26274:6;;26298:15;;;;;25915:406;:::o;19754:152::-;19827:14;;:::i;:::-;-1:-1:-1;19861:21:0;;;;:9;:21;;;;;;;;-1:-1:-1;;;;;19861:37:0;;;;:30;;:37;;;;;;19854:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19754:152;;;;;:::o;10325:33::-;10353:5;10325:33;:::o;24959:107::-;23422:8;;-1:-1:-1;;;;;23422:8:0;23408:10;:22;23400:77;;;;-1:-1:-1;;;23400:77:0;;;;;;;:::i;:::-;25031:27:::1;::::0;-1:-1:-1;;;25031:27:0;;-1:-1:-1;;;;;25031:4:0::1;:16;::::0;::::1;::::0;:27:::1;::::0;25048:9;;25031:27:::1;;;:::i;25581:51::-:0;;;;;;;;;;;;;;;:::o;18043:639::-;18111:8;;-1:-1:-1;;;;;18111:8:0;:24;;:50;;-1:-1:-1;18153:8:0;;-1:-1:-1;;;;;18153:8:0;18139:10;:22;18111:50;18103:92;;;;-1:-1:-1;;;18103:92:0;;;;;;;:::i;:::-;18235:20;18214:17;18220:10;18214:5;:17::i;:::-;:41;;;;;;;;;18206:120;;;;-1:-1:-1;;;18206:120:0;;;;;;;:::i;:::-;18337:25;18365:21;;;:9;:21;;;;;18397:17;;;:24;;-1:-1:-1;;18397:24:0;;;;;18365:21;18432:199;18453:16;;;:23;18449:27;;18432:199;;;18498:121;18518:8;:16;;18535:1;18518:19;;;;;;;;;;;;;;;;;;18539:15;;;:18;;-1:-1:-1;;;;;18518:19:0;;;;18555:1;;18539:18;;;;;;;;;;;;;;18559:8;:19;;18579:1;18559:22;;;;;;;;;;;;;;;;;;18498:121;;;;;;;-1:-1:-1;;18498:121:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18559:22;18498:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18583:8;:18;;18602:1;18583:21;;;;;;;;;;;;;;;;;;18498:121;;;;;;;-1:-1:-1;;18498:121:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18583:21;18498:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18606:8;:12;;;18498:19;:121::i;:::-;-1:-1:-1;18478:3:0;;18432:199;;;;18646:28;18663:10;18646:28;;;;;;:::i;:::-;;;;;;;;18043:639;;:::o;21660:822::-;21774:20;21753:17;21759:10;21753:5;:17::i;:::-;:41;;;;;;;;;21745:93;;;;-1:-1:-1;;;21745:93:0;;;;;;;:::i;:::-;21849:25;21877:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;21935:24:0;;;;:17;;;:24;;;;;;21978:16;;;;:25;21970:80;;;;-1:-1:-1;;;21970:80:0;;;;;;;:::i;:::-;22100:19;;;;22074:46;;-1:-1:-1;;;22074:46:0;;22061:10;;-1:-1:-1;;;;;22074:4:0;:18;;;;:46;;22093:5;;22100:19;22074:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22061:59;;22137:7;22133:177;;;22181:17;;;;:28;;22203:5;22181:21;:28::i;:::-;22161:17;;;:48;22133:177;;;22266:21;;;;:32;;22292:5;22266:25;:32::i;:::-;22242:21;;;:56;22133:177;22322:23;;22341:4;-1:-1:-1;;22322:23:0;;;;;-1:-1:-1;;22356:25:0;22322:23;22356:25;;;;;;;22392:13;;:21;;;22431:43;;;;;;22440:5;;22447:10;;22356:25;;22392:21;;22431:43;:::i;:::-;;;;;;;;21660:822;;;;;;:::o;4779:471::-;4837:7;5082:6;5078:47;;-1:-1:-1;5112:1:0;5105:8;;5078:47;5149:5;;;5153:1;5149;:5;:1;5173:5;;;;;:10;5165:56;;;;-1:-1:-1;;;5165:56:0;;;;;;;:::i;:::-;5241:1;4779:471;-1:-1:-1;;;4779:471:0:o;6437:132::-;6495:7;6522:39;6526:1;6529;6522:39;;;;;;;;;;;;;;;;;:3;:39::i;3025:181::-;3083:7;3115:5;;;3139:6;;;;3131:46;;;;-1:-1:-1;;;3131:46:0;;;;;;;:::i;3918:137::-;3976:7;4003:44;4007:1;4010;4003:44;;;;;;;;;;;;;;;;;:3;:44::i;26848:338::-;26978:14;27016:6;27024:5;27031:9;27042:4;27048:3;27005:47;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;27005:47:0;;;;;;;;;26995:58;;27005:47;26995:58;;;;27093:5;27064:26;;;:18;:26;;;;;;:34;;-1:-1:-1;;27064:34:0;;;26995:58;-1:-1:-1;;;;;;27116:62:0;;;26995:58;;27116:62;;;;27150:5;;27157:9;;27168:4;;27174:3;;27116:62;:::i;:::-;;;;;;;;26848:338;;;;;;:::o;16025:1079::-;16190:4;16207:15;16225:31;16242:13;:11;:13::i;:::-;16225:12;;:16;:31::i;:::-;16207:49;;16267:13;16283:30;16298:14;:12;:14::i;:::-;16283:10;;:14;:30::i;:::-;16326:13;:15;;;;;;16267:46;-1:-1:-1;16352:27:0;;:::i;:::-;16382:427;;;;;;;;16410:13;;16382:427;;;;16448:10;-1:-1:-1;;;;;16382:427:0;;;;;16478:1;16382:427;;;;16503:7;16382:427;;;;16533:6;16382:427;;;;16566:10;16382:427;;;;16602:9;16382:427;;;;16638:10;16382:427;;;;16673:8;16382:427;;;;16706:1;16382:427;;;;16736:1;16382:427;;;;16762:5;16382:427;;;;;;16792:5;16382:427;;;;;16352:457;;16850:11;16822:9;:25;16832:11;:14;;;16822:25;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16822:39:0;;;;;-1:-1:-1;;;;;16822:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;16822:39:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;16822:39:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;16822:39:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;16822:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16822:39:0;;;;;;;;;;-1:-1:-1;;16822:39:0;;;;;;;;;;;16914:14;;16890:20;;;;;-1:-1:-1;;;;;16872:39:0;-1:-1:-1;16872:39:0;;;:17;:39;;;;;;;;:56;;;;16962:14;;16946:118;;;;;;16978:10;;16990:7;;16999:6;;17007:10;;17019:9;;17030:10;;17042:8;;17052:11;;16946:118;:::i;:::-;;;;;;;;17082:14;;16025:1079;-1:-1:-1;;;;;;;;16025:1079:0:o;17679:356::-;17814:18;:78;17854:6;17862:5;17869:9;17880:4;17886:3;17843:47;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;17843:47:0;;;;;;;;;17833:58;;17843:47;17833:58;;;;17814:78;;;;;;;;;;-1:-1:-1;17814:78:0;;;;17813:79;17805:157;;;;-1:-1:-1;;;17805:157:0;;;;;;;:::i;:::-;17973:54;17991:6;17999:5;18006:9;18017:4;18023:3;17973:17;:54::i;27194:1210::-;27323:12;27348:14;27386:6;27394:5;27401:9;27412:4;27418:3;27375:47;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;27375:47:0;;;;;;;;;27365:58;;27375:47;27365:58;;;;27442:26;;;;:18;:26;;;;;;27365:58;;-1:-1:-1;27442:26:0;;27434:100;;;;-1:-1:-1;;;27434:100:0;;;;;;;:::i;:::-;27576:3;27553:19;:17;:19::i;:::-;:26;;27545:108;;;;-1:-1:-1;;;27545:108:0;;;;;;;:::i;:::-;27695:21;:3;23122:7;27695;:21::i;:::-;27672:19;:17;:19::i;:::-;:44;;27664:108;;;;-1:-1:-1;;;27664:108:0;;;;;;;:::i;:::-;27814:5;27785:26;;;:18;:26;;;;;:34;;-1:-1:-1;;27785:34:0;;;27870:23;;27832:21;;27866:179;;-1:-1:-1;27926:4:0;27866:179;;;28014:9;27998:27;;;;;;28028:4;27974:59;;;;;;;;;:::i;:::-;;;;;;;;;;;;;27963:70;;27866:179;28118:12;28132:23;28159:6;-1:-1:-1;;;;;28159:11:0;28177:5;28184:8;28159:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28117:76;;;;28212:7;28204:81;;;;-1:-1:-1;;;28204:81:0;;;;;;;:::i;:::-;28330:6;-1:-1:-1;;;;;28303:63:0;28322:6;28303:63;28338:5;28345:9;28356:4;28362:3;28303:63;;;;;;;;;:::i;:::-;;;;;;;;28386:10;27194:1210;-1:-1:-1;;;;;;;;;27194:1210:0:o;7057:345::-;7143:7;7245:12;7238:5;7230:28;;;;-1:-1:-1;;;7230:28:0;;;;;;;;:::i;:::-;;7269:9;7285:1;7281;:5;;;;;;;7057:345;-1:-1:-1;;;;;7057:345:0:o;4344:192::-;4430:7;4466:12;4458:6;;;;4450:29;;;;-1:-1:-1;;;4450:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;4502:5:0;;;4344:192::o;26329:511::-;26456:7;26491:30;26515:5;;26491:19;:17;:19::i;:::-;:23;;:30::i;:::-;26484:3;:37;;26476:123;;;;-1:-1:-1;;;26476:123:0;;;;;;;:::i;:::-;26610:14;26648:6;26656:5;26663:9;26674:4;26680:3;26637:47;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;26637:47:0;;;;;;;;;26627:58;;26637:47;26627:58;;;;26696:26;;;;:18;:26;;;;;;:33;;-1:-1:-1;;26696:33:0;26725:4;26696:33;;;26627:58;-1:-1:-1;;;;;;26747:61:0;;;26627:58;;26747:61;;;;26780:5;;26787:9;;26798:4;;26804:3;;26747:61;:::i;:::-;;;;;;;;26826:6;26329:511;-1:-1:-1;;;;;;26329:511:0:o;28412:162::-;28551:15;28412:162;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;5:130::-;72:20;;-1:-1;;;;;63498:54;;65716:35;;65706:2;;65765:1;;65755:12;160:707;;277:3;270:4;262:6;258:17;254:27;244:2;;-1:-1;;285:12;244:2;332:6;319:20;354:80;369:64;426:6;369:64;:::i;:::-;354:80;:::i;:::-;462:21;;;345:89;-1:-1;506:4;519:14;;;;494:17;;;608;;;599:27;;;;596:36;-1:-1;593:2;;;645:1;;635:12;593:2;670:1;655:206;680:6;677:1;674:13;655:206;;;760:37;793:3;781:10;760:37;:::i;:::-;748:50;;812:14;;;;840;;;;702:1;695:9;655:206;;;659:14;;;;;237:630;;;;:::o;891:705::-;;1017:3;1010:4;1002:6;998:17;994:27;984:2;;-1:-1;;1025:12;984:2;1072:6;1059:20;1094:89;1109:73;1175:6;1109:73;:::i;1094:89::-;1211:21;;;1085:98;-1:-1;1255:4;1268:14;;;;1243:17;;;1363:1;1348:242;1373:6;1370:1;1367:13;1348:242;;;1480:46;1522:3;1255:4;1456:3;1443:17;1247:6;1431:30;;1480:46;:::i;:::-;1468:59;;1541:14;;;;1569;;;;1395:1;1388:9;1348:242;;1621:708;;1748:3;1741:4;1733:6;1729:17;1725:27;1715:2;;-1:-1;;1756:12;1715:2;1803:6;1790:20;1825:90;1840:74;1907:6;1840:74;:::i;1825:90::-;1943:21;;;1816:99;-1:-1;1987:4;2000:14;;;;1975:17;;;2095:1;2080:243;2105:6;2102:1;2099:13;2080:243;;;2212:47;2255:3;1987:4;2188:3;2175:17;1979:6;2163:30;;2212:47;:::i;:::-;2200:60;;2274:14;;;;2302;;;;2127:1;2120:9;2080:243;;2355:707;;2472:3;2465:4;2457:6;2453:17;2449:27;2439:2;;-1:-1;;2480:12;2439:2;2527:6;2514:20;2549:80;2564:64;2621:6;2564:64;:::i;2549:80::-;2657:21;;;2540:89;-1:-1;2701:4;2714:14;;;;2689:17;;;2803;;;2794:27;;;;2791:36;-1:-1;2788:2;;;2840:1;;2830:12;2788:2;2865:1;2850:206;2875:6;2872:1;2869:13;2850:206;;;4305:20;;2943:50;;3007:14;;;;3035;;;;2897:1;2890:9;2850:206;;3339:440;;3440:3;3433:4;3425:6;3421:17;3417:27;3407:2;;-1:-1;;3448:12;3407:2;3495:6;3482:20;58633:18;58625:6;58622:30;58619:2;;;-1:-1;;58655:12;58619:2;3517:64;58728:9;58709:17;;-1:-1;;58705:33;58796:4;58786:15;3517:64;:::i;:::-;3508:73;;3601:6;3594:5;3587:21;3705:3;58796:4;3696:6;3629;3687:16;;3684:25;3681:2;;;3722:1;;3712:12;3681:2;64627:6;58796:4;3629:6;3625:17;58796:4;3663:5;3659:16;64604:30;64683:1;64665:16;;;58796:4;64665:16;64658:27;3663:5;3400:379;-1:-1;;3400:379::o;4649:241::-;;4753:2;4741:9;4732:7;4728:23;4724:32;4721:2;;;-1:-1;;4759:12;4721:2;4821:53;4866:7;4842:22;4821:53;:::i;4897:366::-;;;5018:2;5006:9;4997:7;4993:23;4989:32;4986:2;;;-1:-1;;5024:12;4986:2;5086:53;5131:7;5107:22;5086:53;:::i;:::-;5076:63;5176:2;5215:22;;;;4305:20;;-1:-1;;;4980:283::o;5270:1431::-;;;;;;5571:3;5559:9;5550:7;5546:23;5542:33;5539:2;;;-1:-1;;5578:12;5539:2;5636:17;5623:31;5674:18;;5666:6;5663:30;5660:2;;;-1:-1;;5696:12;5660:2;5726:78;5796:7;5787:6;5776:9;5772:22;5726:78;:::i;:::-;5716:88;;5869:2;5858:9;5854:18;5841:32;5827:46;;5674:18;5885:6;5882:30;5879:2;;;-1:-1;;5915:12;5879:2;5945:78;6015:7;6006:6;5995:9;5991:22;5945:78;:::i;:::-;5935:88;;6088:2;6077:9;6073:18;6060:32;6046:46;;5674:18;6104:6;6101:30;6098:2;;;-1:-1;;6134:12;6098:2;6164:88;6244:7;6235:6;6224:9;6220:22;6164:88;:::i;:::-;6154:98;;6317:2;6306:9;6302:18;6289:32;6275:46;;5674:18;6333:6;6330:30;6327:2;;;-1:-1;;6363:12;6327:2;6393:87;6472:7;6463:6;6452:9;6448:22;6393:87;:::i;:::-;6383:97;;6545:3;6534:9;6530:19;6517:33;6503:47;;5674:18;6562:6;6559:30;6556:2;;;-1:-1;;6592:12;6556:2;;6622:63;6677:7;6668:6;6657:9;6653:22;6622:63;:::i;:::-;6612:73;;;5533:1168;;;;;;;;:::o;6708:241::-;;6812:2;6800:9;6791:7;6787:23;6783:32;6780:2;;;-1:-1;;6818:12;6780:2;-1:-1;3268:20;;6774:175;-1:-1;6774:175::o;7204:263::-;;7319:2;7307:9;7298:7;7294:23;7290:32;7287:2;;;-1:-1;;7325:12;7287:2;-1:-1;4453:13;;7281:186;-1:-1;7281:186::o;7474:366::-;;;7595:2;7583:9;7574:7;7570:23;7566:32;7563:2;;;-1:-1;;7601:12;7563:2;4318:6;4305:20;7653:63;;7771:53;7816:7;7753:2;7796:9;7792:22;7771:53;:::i;:::-;7761:63;;7557:283;;;;;:::o;7847:360::-;;;7965:2;7953:9;7944:7;7940:23;7936:32;7933:2;;;-1:-1;;7971:12;7933:2;4318:6;4305:20;8023:63;;8123:2;8163:9;8159:22;3134:20;3159:30;3183:5;3159:30;:::i;:::-;8131:60;;;;7927:280;;;;;:::o;8214:733::-;;;;;;8381:3;8369:9;8360:7;8356:23;8352:33;8349:2;;;-1:-1;;8388:12;8349:2;4318:6;4305:20;8440:63;;8540:2;8580:9;8576:22;3134:20;3159:30;3183:5;3159:30;:::i;:::-;8548:60;-1:-1;8645:2;8682:22;;4581:20;63714:4;63703:16;;66204:33;;66194:2;;-1:-1;;66241:12;66194:2;8343:604;;;;-1:-1;8653:61;;8751:2;8790:22;;3268:20;;-1:-1;8859:3;8899:22;3268:20;;8343:604;-1:-1;;8343:604::o;10287:690::-;;10480:5;59901:12;61260:6;61255:3;61248:19;61297:4;;61292:3;61288:14;10492:93;;61297:4;10656:5;59262:14;-1:-1;10695:260;10720:6;10717:1;10714:13;10695:260;;;10781:13;;-1:-1;;;;;63498:54;9928:37;;9108:14;;;;60739;;;;63509:42;10735:9;10695:260;;;-1:-1;10961:10;;10411:566;-1:-1;;;;;10411:566::o;11012:920::-;;11232:5;59901:12;61260:6;61255:3;61248:19;61297:4;;61292:3;61288:14;11244:102;;;;61297:4;11403:6;11399:17;11394:3;11390:27;11378:39;;61297:4;11497:5;59262:14;-1:-1;11536:357;11561:6;11558:1;11555:13;11536:357;;;11623:9;11617:4;11613:20;11608:3;11601:33;9256:64;9316:3;11668:6;11662:13;9256:64;:::i;:::-;11872:14;;;;11682:90;-1:-1;60739:14;;;;11583:1;11576:9;11536:357;;;-1:-1;11916:10;;11154:778;-1:-1;;;;;;;11154:778::o;12936:690::-;;13129:5;59901:12;61260:6;61255:3;61248:19;61297:4;;61292:3;61288:14;13141:93;;61297:4;13305:5;59262:14;-1:-1;13344:260;13369:6;13366:1;13363:13;13344:260;;;13430:13;;13917:37;;9690:14;;;;60739;;;;13391:1;13384:9;13344:260;;14280:323;;14412:5;59901:12;61260:6;61255:3;61248:19;14495:52;14540:6;61297:4;61292:3;61288:14;61297:4;14521:5;14517:16;14495:52;:::i;:::-;58728:9;65403:14;-1:-1;;65399:28;14559:39;;;;61297:4;14559:39;;14360:243;-1:-1;;14360:243::o;31093:405::-;-1:-1;;;;;;63199:78;;14212:56;;59901:12;;31093:405;;15231:52;59901:12;31360:1;31351:11;;15264:4;15253:16;;15231:52;:::i;:::-;15295:16;;;;31360:1;15295:16;;31253:245;-1:-1;;;31253:245::o;31505:271::-;;15120:5;59901:12;15231:52;15276:6;15271:3;15264:4;15257:5;15253:16;15231:52;:::i;:::-;15295:16;;;;;31639:137;-1:-1;;31639:137::o;31783:659::-;-1:-1;;;19106:87;;19091:1;19212:11;;13917:37;;;;32294:12;;;13917:37;32405:12;;;32028:414::o;32449:520::-;25226:28;25206:49;;65514:2;65510:14;;;;-1:-1;;65510:14;25190:2;25274:12;;10186:58;32932:12;;;32666:303::o;32976:222::-;-1:-1;;;;;63498:54;;;;9928:37;;33103:2;33088:18;;33074:124::o;33205:349::-;-1:-1;;;;;63498:54;;;;9797:58;;33540:2;33525:18;;13917:37;33368:2;33353:18;;33339:215::o;33901:544::-;-1:-1;;;;;63498:54;;;;9928:37;;34271:2;34256:18;;13917:37;;;;63033:13;63026:21;34348:2;34333:18;;13689:34;34431:2;34416:18;;13917:37;34106:3;34091:19;;34077:368::o;34452:840::-;;63509:42;;;;;62949:5;63498:54;9935:3;9928:37;13947:5;34894:2;34883:9;34879:18;13917:37;34729:3;34931:2;34920:9;34916:18;34909:48;34971:78;34729:3;34718:9;34714:19;35035:6;34971:78;:::i;:::-;35097:9;35091:4;35087:20;35082:2;35071:9;35067:18;35060:48;35122:76;35193:4;35184:6;35122:76;:::i;:::-;35114:84;;;13947:5;35277:3;35266:9;35262:19;13917:37;34700:592;;;;;;;;:::o;35299:1224::-;;35748:3;35770:17;35763:47;35824:108;35748:3;35737:9;35733:19;35918:6;35824:108;:::i;:::-;35980:9;35974:4;35970:20;35965:2;35954:9;35950:18;35943:48;36005:108;36108:4;36099:6;36005:108;:::i;:::-;35997:116;;36161:9;36155:4;36151:20;36146:2;36135:9;36131:18;36124:48;36186:128;36309:4;36300:6;36186:128;:::i;:::-;36178:136;;36362:9;36356:4;36352:20;36347:2;36336:9;36332:18;36325:48;36387:126;36508:4;36499:6;36387:126;:::i;36530:210::-;63033:13;;63026:21;13689:34;;36651:2;36636:18;;36622:118::o;36747:222::-;13917:37;;;36874:2;36859:18;;36845:124::o;36976:432::-;13917:37;;;37317:2;37302:18;;13917:37;;;;63033:13;63026:21;37394:2;37379:18;;13689:34;37153:2;37138:18;;37124:284::o;37415:548::-;13917:37;;;63714:4;63703:16;;;;37783:2;37768:18;;31046:35;37866:2;37851:18;;13917:37;37949:2;37934:18;;13917:37;37622:3;37607:19;;37593:370::o;38229:252::-;38371:2;38356:18;;65628:1;65618:12;;65608:2;;65634:9;65608:2;15572:65;;;38342:139;:::o;38488:310::-;;38635:2;38656:17;38649:47;38710:78;38635:2;38624:9;38620:18;38774:6;38710:78;:::i;38805:416::-;39005:2;39019:47;;;16562:2;38990:18;;;61248:19;16598:34;61288:14;;;16578:55;16667:34;16653:12;;;16646:56;-1:-1;;;16722:12;;;16715:45;16779:12;;;38976:245::o;39228:416::-;39428:2;39442:47;;;17030:2;39413:18;;;61248:19;17066:34;61288:14;;;17046:55;17135:34;17121:12;;;17114:56;-1:-1;;;17190:12;;;17183:25;17227:12;;;39399:245::o;39651:416::-;39851:2;39865:47;;;17478:2;39836:18;;;61248:19;17514:34;61288:14;;;17494:55;-1:-1;;;17569:12;;;17562:35;17616:12;;;39822:245::o;40074:416::-;40274:2;40288:47;;;17867:2;40259:18;;;61248:19;17903:34;61288:14;;;17883:55;-1:-1;;;17958:12;;;17951:31;18001:12;;;40245:245::o;40497:416::-;40697:2;40711:47;;;18252:2;40682:18;;;61248:19;-1:-1;;;;;;;;;;;61288:14;;;18268:55;-1:-1;;;18343:12;;;18336:43;18398:12;;;40668:245::o;40920:416::-;41120:2;41134:47;;;18649:2;41105:18;;;61248:19;18685:34;61288:14;;;18665:55;18754:30;18740:12;;;18733:52;18804:12;;;41091:245::o;41343:416::-;41543:2;41557:47;;;19462:2;41528:18;;;61248:19;19498:29;61288:14;;;19478:50;19547:12;;;41514:245::o;41766:416::-;41966:2;41980:47;;;19798:2;41951:18;;;61248:19;19834:34;61288:14;;;19814:55;-1:-1;;;19889:12;;;19882:33;19934:12;;;41937:245::o;42189:416::-;42389:2;42403:47;;;20185:2;42374:18;;;61248:19;-1:-1;;;;;;;;;;;61288:14;;;20201:55;20290:34;20276:12;;;20269:56;-1:-1;;;20345:12;;;20338:29;20386:12;;;42360:245::o;42612:416::-;42812:2;42826:47;;;20637:2;42797:18;;;61248:19;20673:34;61288:14;;;20653:55;-1:-1;;;20728:12;;;20721:33;20773:12;;;42783:245::o;43035:416::-;43235:2;43249:47;;;21024:2;43220:18;;;61248:19;21060:34;61288:14;;;21040:55;-1:-1;;;21115:12;;;21108:44;21171:12;;;43206:245::o;43458:416::-;43658:2;43672:47;;;21422:2;43643:18;;;61248:19;21458:34;61288:14;;;21438:55;-1:-1;;;21513:12;;;21506:43;21568:12;;;43629:245::o;43881:416::-;44081:2;44095:47;;;21819:2;44066:18;;;61248:19;21855:34;61288:14;;;21835:55;21924:34;21910:12;;;21903:56;-1:-1;;;21979:12;;;21972:25;22016:12;;;44052:245::o;44304:416::-;44504:2;44518:47;;;22267:2;44489:18;;;61248:19;22303:34;61288:14;;;22283:55;-1:-1;;;22358:12;;;22351:36;22406:12;;;44475:245::o;44727:416::-;44927:2;44941:47;;;22657:2;44912:18;;;61248:19;22693:34;61288:14;;;22673:55;22762:34;22748:12;;;22741:56;-1:-1;;;22817:12;;;22810:25;22854:12;;;44898:245::o;45150:416::-;45350:2;45364:47;;;23105:2;45335:18;;;61248:19;23141:34;61288:14;;;23121:55;23210:26;23196:12;;;23189:48;23256:12;;;45321:245::o;45573:416::-;45773:2;45787:47;;;23507:2;45758:18;;;61248:19;23543:34;61288:14;;;23523:55;-1:-1;;;23598:12;;;23591:34;23644:12;;;45744:245::o;45996:416::-;46196:2;46210:47;;;23895:2;46181:18;;;61248:19;-1:-1;;;;;;;;;;;61288:14;;;23911:55;24000:31;23986:12;;;23979:53;24051:12;;;46167:245::o;46419:416::-;46619:2;46633:47;;;24302:2;46604:18;;;61248:19;24338:34;61288:14;;;24318:55;-1:-1;;;24393:12;;;24386:29;24434:12;;;46590:245::o;46842:416::-;47042:2;47056:47;;;24685:2;47027:18;;;61248:19;24721:34;61288:14;;;24701:55;24790:34;24776:12;;;24769:56;-1:-1;;;24845:12;;;24838:46;24903:12;;;47013:245::o;47265:416::-;47465:2;47479:47;;;25525:2;47450:18;;;61248:19;25561:34;61288:14;;;25541:55;25630:25;25616:12;;;25609:47;25675:12;;;47436:245::o;47688:416::-;47888:2;47902:47;;;25926:2;47873:18;;;61248:19;25962:34;61288:14;;;25942:55;-1:-1;;;26017:12;;;26010:25;26054:12;;;47859:245::o;48111:416::-;48311:2;48325:47;;;26305:2;48296:18;;;61248:19;26341:34;61288:14;;;26321:55;-1:-1;;;26396:12;;;26389:36;26444:12;;;48282:245::o;48534:416::-;48734:2;48748:47;;;26695:2;48719:18;;;61248:19;26731:34;61288:14;;;26711:55;-1:-1;;;26786:12;;;26779:29;26827:12;;;48705:245::o;48957:416::-;49157:2;49171:47;;;27078:2;49142:18;;;61248:19;27114:31;61288:14;;;27094:52;27165:12;;;49128:245::o;49380:416::-;49580:2;49594:47;;;27416:2;49565:18;;;61248:19;27452:34;61288:14;;;27432:55;-1:-1;;;27507:12;;;27500:39;27558:12;;;49551:245::o;49803:416::-;50003:2;50017:47;;;27809:2;49988:18;;;61248:19;-1:-1;;;;;;;;;;;61288:14;;;27825:55;27914:31;27900:12;;;27893:53;27965:12;;;49974:245::o;50226:416::-;50426:2;50440:47;;;28216:2;50411:18;;;61248:19;28252:34;61288:14;;;28232:55;-1:-1;;;28307:12;;;28300:30;28349:12;;;50397:245::o;50649:416::-;50849:2;50863:47;;;28600:2;50834:18;;;61248:19;28636:34;61288:14;;;28616:55;28705:34;28691:12;;;28684:56;-1:-1;;;28760:12;;;28753:33;28805:12;;;50820:245::o;51072:416::-;51272:2;51286:47;;;29056:2;51257:18;;;61248:19;29092:34;61288:14;;;29072:55;29161:34;29147:12;;;29140:56;-1:-1;;;29216:12;;;29209:26;29254:12;;;51243:245::o;51495:416::-;51695:2;51709:47;;;29505:2;51680:18;;;61248:19;29541:34;61288:14;;;29521:55;-1:-1;;;29596:12;;;29589:41;29649:12;;;51666:245::o;51918:416::-;52118:2;52132:47;;;29900:2;52103:18;;;61248:19;29936:34;61288:14;;;29916:55;-1:-1;;;29991:12;;;29984:28;30031:12;;;52089:245::o;52341:318::-;30329:23;;63033:13;63026:21;13689:34;;30497:4;30486:16;;;30480:23;63033:13;63026:21;30551:14;;;13689:34;30646:4;30635:16;;;30629:23;30706:14;;;13917:37;;;;52516:2;52501:18;;52487:172::o;52895:1888::-;13917:37;;;-1:-1;;;;;63498:54;;53685:2;53670:18;;9797:58;53512:3;53722:2;53707:18;;53700:48;;;52895:1888;;53762:108;53497:19;;;53856:6;53762:108;:::i;:::-;53754:116;;53918:9;53912:4;53908:20;53903:2;53892:9;53888:18;53881:48;53943:108;54046:4;54037:6;53943:108;:::i;:::-;53935:116;;54100:9;54094:4;54090:20;54084:3;54073:9;54069:19;54062:49;54125:128;54248:4;54239:6;54125:128;:::i;:::-;54117:136;;54302:9;54296:4;54292:20;54286:3;54275:9;54271:19;54264:49;54327:126;54448:4;54439:6;54327:126;:::i;:::-;54319:134;;13947:5;54532:3;54521:9;54517:19;13917:37;13947:5;54616:3;54605:9;54601:19;13917:37;54670:9;54664:4;54660:20;54654:3;54643:9;54639:19;54632:49;54695:78;54768:4;54759:6;54695:78;:::i;:::-;54687:86;53483:1300;-1:-1;;;;;;;;;;;;53483:1300::o;54790:1092::-;13917:37;;;-1:-1;;;;;63498:54;;;;55294:2;55279:18;;9928:37;55377:2;55362:18;;13917:37;;;;55460:2;55445:18;;13917:37;;;;55543:3;55528:19;;13917:37;;;;63509:42;55612:19;;13917:37;55711:3;55696:19;;13917:37;63033:13;63026:21;55789:3;55774:19;;13689:34;63033:13;63026:21;55867:3;55852:19;;13689:34;55129:3;55114:19;;55100:782::o;55889:728::-;;13947:5;13924:3;13917:37;56138:3;56257:2;56246:9;56242:18;56235:48;56297:78;56138:3;56127:9;56123:19;56361:6;56297:78;:::i;:::-;56423:9;56417:4;56413:20;56408:2;56397:9;56393:18;56386:48;56448:76;56519:4;56510:6;56448:76;:::i;:::-;56440:84;;;13947:5;56603:2;56592:9;56588:18;13917:37;56109:508;;;;;;;:::o;56624:333::-;13917:37;;;56943:2;56928:18;;13917:37;56779:2;56764:18;;56750:207::o;56964:256::-;57026:2;57020:9;57052:17;;;57127:18;57112:34;;57148:22;;;57109:62;57106:2;;;57184:1;;57174:12;57106:2;57026;57193:22;57004:216;;-1:-1;57004:216::o;57227:304::-;;57386:18;57378:6;57375:30;57372:2;;;-1:-1;;57408:12;57372:2;-1:-1;57453:4;57441:17;;;57506:15;;57309:222::o;64700:268::-;64765:1;64772:101;64786:6;64783:1;64780:13;64772:101;;;64853:11;;;64847:18;64834:11;;;64827:39;64808:2;64801:10;64772:101;;;64888:6;64885:1;64882:13;64879:2;;;-1:-1;;64765:1;64935:16;;64928:27;64749:219::o;65781:111::-;65862:5;63033:13;63026:21;65840:5;65837:32;65827:2;;65883:1;;65873:12

Swarm Source

ipfs://e26d14812bd7047b9022752c3956b6b7f57feb2214a65fbc77855c5dfbc5a41e
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.