Contract 0xbCd23d62a2ABa3bB4006bD05da6D41F78182D2C9

 

Contract Overview

Keep3rb Network: Governance
Balance:
0 BNB

BNB Value:
$0.00

Token:
Txn Hash
Block
From
To
Value [Txn Fee]
0x1164b823f2f950d05bc0108ee48b8c2f37d35d146acc7d5a7a3da32cd9dcf76c57877572021-03-18 12:03:5652 days 19 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.00049278
0x83898b7dc07dc62487b182034fa53608fce952760395edfc86798f52be7df6d157877482021-03-18 12:03:2952 days 19 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0004929
0x9992c94b772953e3da21f5334f51f41b91dac90c0d3d7803835cec8631005bc657877422021-03-18 12:03:1152 days 19 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0004929
0xe013797a18317dc7bc00101290ea28dd7fa34f2de9a6b0ca8444249b37daa98f57877332021-03-18 12:02:4452 days 19 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0004929
0x6cb7d07b23dc98d26e08cbe4c4bfc3be2c20075c371cb7869cfc0ac8262ddb6d57877262021-03-18 12:02:2352 days 19 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0004929
0x67edc5b1c59a1f4be6fe2fcc7478596201b12a596c15b52c171efcc3e6aee82e57877182021-03-18 12:01:5952 days 19 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0004929
0x11e1e813cd6a6b449c50950b348e6dd6965e143662df99d85157a6de3a7207e157877112021-03-18 12:01:3852 days 19 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0004929
0x9fb3c578b1b68ce549b51a18cd1baa880af8120e71b1c5ae896cfd6edff292ff57877032021-03-18 12:01:1452 days 19 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0004929
0xd103e3962e6745fe2fbbafb20b1dbfbe40433186cedbbe23154b8e03738fb0da57876942021-03-18 12:00:4752 days 19 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0004929
0x045f3d6d6e7529269e89c2448abba1f87a209d462db77130d7e642982ec885ed57876842021-03-18 12:00:1752 days 19 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0004929
0x7045476c99007a1b7d71b49f202882597fb242be5afe147e51ec2746c103237157876772021-03-18 11:59:5652 days 19 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0004929
0x8aab80a2cb690631eddf30e81fb9f0af136ef75d717f9cb27f8cd2fa9f3bbd3c57876632021-03-18 11:59:1452 days 19 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0004929
0x39e64d1d40adcf6402bf58f826a122fa89e70da2fe7b8ba817303c5f488b1ba257876562021-03-18 11:58:5352 days 19 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.00049278
0x5e8aa7c9c2336388dc9e5cb5a82f6f372b20a8c4e2f98e1435667a90439e0f5757876472021-03-18 11:58:2652 days 19 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0004929
0x59535d5222f6bbea15f4b3b03a557d58ab5763d57c014f05c9273b563acf628157876402021-03-18 11:58:0552 days 19 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0004929
0xd39ca4967d966a901f8484bccaf678ea00054e9cb1fbe316a42c6e879771be2f53431722021-03-02 23:47:3668 days 7 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.00049278
0x52c9c5e9c53d286c6f3b25f5607cc832e9934bdc4576a31e070e8483117abbab53431672021-03-02 23:47:2168 days 7 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.00049278
0xaf1ef6551912d26cc00541c6057213cf22f206e19cae6e8e7b6158b48024677853431512021-03-02 23:46:3368 days 7 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0004929
0xc1bf2eb8ef0257928a518bda85cb7f1f692df0c1fa5c9ffa672860a6cd59611d53431422021-03-02 23:46:0668 days 7 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0004929
0xa4c6c7abe5e0d8420aafa2e5d5cd947feb06b78101eac13026a4bd57eb2ef13553431332021-03-02 23:45:3968 days 7 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0004929
0x41ee0e338946d19d622477c288b3d84b7936d005dce2ff5d3950de24fd1d079c53431172021-03-02 23:44:5168 days 7 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0004929
0xd669344329787b8900cd95a9b42058e3093ed7713c201a6b75f83ae8b4349bc153431082021-03-02 23:44:2468 days 7 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0004929
0x24725c4db4a5d0d3e6197671fcbaff5c74755444d2584ec43a24aff462b922c053431072021-03-02 23:44:2168 days 7 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.00048696
0x7e40a124325eaadffb365c31f44d304b1724f9a5f03df42e6f607f6d2686a1c353429632021-03-02 23:37:0968 days 7 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.00048674
0x327de4bff0a16224d2f88821f6a51cd5542afe0704be9ac320375fdceae79b1753429342021-03-02 23:35:4268 days 7 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.00028609
[ Download CSV Export 

OVERVIEW

Governance contract for Keep3r BSC Network.

Latest 13 internal transactions
Parent Txn Hash Block From To Value
0xd39ca4967d966a901f8484bccaf678ea00054e9cb1fbe316a42c6e879771be2f53431722021-03-02 23:47:3668 days 7 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0x52c9c5e9c53d286c6f3b25f5607cc832e9934bdc4576a31e070e8483117abbab53431672021-03-02 23:47:2168 days 7 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0xaf1ef6551912d26cc00541c6057213cf22f206e19cae6e8e7b6158b48024677853431512021-03-02 23:46:3368 days 7 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0xc1bf2eb8ef0257928a518bda85cb7f1f692df0c1fa5c9ffa672860a6cd59611d53431422021-03-02 23:46:0668 days 7 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0xa4c6c7abe5e0d8420aafa2e5d5cd947feb06b78101eac13026a4bd57eb2ef13553431332021-03-02 23:45:3968 days 7 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0x41ee0e338946d19d622477c288b3d84b7936d005dce2ff5d3950de24fd1d079c53431172021-03-02 23:44:5168 days 7 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0xd669344329787b8900cd95a9b42058e3093ed7713c201a6b75f83ae8b4349bc153431082021-03-02 23:44:2468 days 7 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0x24725c4db4a5d0d3e6197671fcbaff5c74755444d2584ec43a24aff462b922c053431072021-03-02 23:44:2168 days 7 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0x7e40a124325eaadffb365c31f44d304b1724f9a5f03df42e6f607f6d2686a1c353429632021-03-02 23:37:0968 days 7 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0x327de4bff0a16224d2f88821f6a51cd5542afe0704be9ac320375fdceae79b1753429342021-03-02 23:35:4268 days 7 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0xdf228a11a44af1e03034d54df21d6b1e6c77f2cf18799a6466eaff1da3f1f05f53428942021-03-02 23:33:4268 days 8 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0x52ed47efbc67691066e748cc248551df54e310c7998d2c0e29ca920fdad4a2a853426612021-03-02 23:22:0368 days 8 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0xe4395230d4b76919009c032f384533d32a617412051697e379109128646a180653424912021-03-02 23:13:1468 days 8 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
[ Download CSV Export 
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 BscScan.com on 2020-12-27
*/

// SPDX-License-Identifier: MIT


/**
 * KEEP3RB.NETWORK
 * Optimized Dapp
 * Clean & tested code
 */



/**
 * This governance contract will govern over the ecosystem. 
 * It has no mint() function. So it can't mint anything.
 * It process all proposals such a democratic way.
 */
 


pragma solidity ^0.6.12;
pragma experimental ABIEncoderV2;


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

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

        return c;
    }
 function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction underflow");
    }
 function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
       if (a == 0) {
            return 0;
        }

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

        return c;
    }
  function mul(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
      if (a == 0) {
            return 0;
        }

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

        return c;
    }
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by 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;
    }
  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
 function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

interface IKeep3rb {
    function addVotes(address voter, uint amount) external;
    function removeVotes(address voter, uint amount) external;
    function addKPRCredit(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 setKeep3rbHelper(address _kprh) external;
    function setGovernance(address _governance) external;
    function acceptGovernance() external;
    function dispute(address keeper) external;
    function slash(address bonded, address keeper, uint amount) external;
    function revoke(address keeper) external;
    function resolve(address keeper) external;
    function getPriorVotes(address account, uint blockNumber) external view returns (uint);
    function totalBonded() external view returns (uint);
}

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

    /// @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 = 50000; // % of total supply required

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

    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 KPR.totalBonded().mul(_quorumVotes).div(BASE);
    }

    function proposalThreshold() public view returns (uint) {
        return KPR.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
    IKeep3rb immutable public KPR;

    /// @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(KPR), "Governance::proposeJob: only VOTER can propose new jobs");
        address[] memory targets;
        targets[0] = address(KPR);

        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(KPR.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(KPR) && 
                KPR.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 = KPR.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 = 13 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;
    
    function setGuardian(address _guardian) external {
        require(msg.sender == guardian, "Keep3rbGovernance::setGuardian: !guardian");
        pendingGuardian = _guardian;
    }
    
    function acceptGuardianship() external {
        require(msg.sender == pendingGuardian, "Keep3rbGovernance::setGuardian: !pendingGuardian");
        guardian = pendingGuardian;
    }
    
    function addVotes(address voter, uint amount) external {
        require(msg.sender == guardian, "Keep3rbGovernance::addVotes: !guardian");
        KPR.addVotes(voter, amount);
    }
    function removeVotes(address voter, uint amount) external {
        require(msg.sender == guardian, "Keep3rbGovernance::removeVotes: !guardian");
        KPR.removeVotes(voter, amount);
    }
    function addKPRCredit(address job, uint amount) external {
        require(msg.sender == guardian, "Keep3rbGovernance::addKPRCredit: !guardian");
        KPR.addKPRCredit(job, amount);
    }
    function approveLiquidity(address liquidity) external {
        require(msg.sender == guardian, "Keep3rbGovernance::approveLiquidity: !guardian");
        KPR.approveLiquidity(liquidity);
    }
    function revokeLiquidity(address liquidity) external {
        require(msg.sender == guardian, "Keep3rbGovernance::revokeLiquidity: !guardian");
        KPR.revokeLiquidity(liquidity);
    }
    function addJob(address job) external {
        require(msg.sender == guardian, "Keep3rbGovernance::addJob: !guardian");
        KPR.addJob(job);
    }
    function removeJob(address job) external {
        require(msg.sender == guardian, "Keep3rbGovernance::removeJob: !guardian");
        KPR.removeJob(job);
    }
    function setKeep3rbHelper(address kprh) external {
        require(msg.sender == guardian, "Keep3rbGovernance::setKeep3rbHelper: !guardian");
        KPR.setKeep3rbHelper(kprh);
    }
    function setGovernance(address _governance) external {
        require(msg.sender == guardian, "Keep3rbGovernance::setGovernance: !guardian");
        KPR.setGovernance(_governance);
    }
    function acceptGovernance() external {
        require(msg.sender == guardian, "Keep3rbGovernance::acceptGovernance: !guardian");
        KPR.acceptGovernance();
    }
    function dispute(address keeper) external {
        require(msg.sender == guardian, "Keep3rbGovernance::dispute: !guardian");
        KPR.dispute(keeper);
    }
    function slash(address bonded, address keeper, uint amount) external {
        require(msg.sender == guardian, "Keep3rbGovernance::slash: !guardian");
        KPR.slash(bonded, keeper, amount);
    }
    function revoke(address keeper) external {
        require(msg.sender == guardian, "Keep3rbGovernance::revoke: !guardian");
        KPR.revoke(keeper);
    }
    function resolve(address keeper) external {
        require(msg.sender == guardian, "Keep3rbGovernance::resolve: !guardian");
        KPR.resolve(keeper);
    }

    mapping (bytes32 => bool) public queuedTransactions;

    constructor(address token_) public {
        guardian = msg.sender;
        KPR = IKeep3rb(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 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":"KPR","outputs":[{"internalType":"contract IKeep3rb","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":"addKPRCredit","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":"address","name":"keeper","type":"address"}],"name":"dispute","outputs":[],"stateMutability":"nonpayable","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":"keeper","type":"address"}],"name":"resolve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"keeper","type":"address"}],"name":"revoke","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidity","type":"address"}],"name":"revokeLiquidity","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":"address","name":"kprh","type":"address"}],"name":"setKeep3rbHelper","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":"bonded","type":"address"},{"internalType":"address","name":"keeper","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"slash","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"}]

60c060405261c35060005561c350600155620151806005553480156200002457600080fd5b5060405162004b8038038062004b8083398101604081905262000047916200011b565b600680546001600160a01b031916331790556001600160601b0319606082901b1660805260408051808201909152601081526f4b5033524220476f7665726e616e636560801b6020909101527f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667f4c5878df9254a455366bfd78227667983b57feefdc56806393c4d957b5d79738620000df62000117565b30604051602001620000f594939291906200014b565b60408051601f19818403018152919052805160209091012060a052506200016f565b4690565b6000602082840312156200012d578081fd5b81516001600160a01b038116811462000144578182fd5b9392505050565b938452602084019290925260408301526001600160a01b0316606082015260800190565b60805160601c60a05161497762000209600039806109aa5280611391525080610a285280610ae25280610b655280610c07528061102a528061107752806114aa528061152052806115a25280611633528061178952806117d5528061186d528061193652806119ac5280611a5a5280611aab5280611c885280611cc9528061204f52806121e752806122b352806125f952506149776000f3fe6080604052600436106103035760003560e01c80638a0dac4a11610190578063da35c664116100dc578063e177246e11610095578063ec342ad01161006f578063ec342ad014610899578063f2b06537146108ae578063f75f9f7b146108db578063fe0d94c1146108fb5761030a565b8063e177246e1461082c578063e23a9a521461084c578063e74f8239146108795761030a565b8063da35c66414610782578063da95691a14610797578063dc380cbb146107b7578063ddf0b009146107d7578063de63298d146107f7578063deaaa7cc146108175761030a565b8063b600702a11610149578063c1ba4e5911610123578063c1ba4e5914610702578063c5198abc14610722578063ce6a088014610742578063d8ae6faf146107625761030a565b8063b600702a146106b8578063be4a66b6146106d8578063c1a287e2146106ed5761030a565b80638a0dac4a14610619578063960bfe0414610639578063995e617a14610659578063ab033ea91461066e578063b1b43ae51461068e578063b58131b0146106a35761030a565b80633e4f49e61161024f5780636a42b8f811610208578063762c31ba116101e2578063762c31ba146105ba5780637bdbe4d0146105cf5780637d645fab146105e457806380711989146105f95761030a565b80636a42b8f8146105705780636e3827b71461058557806374a8f1031461059a5761030a565b80633e4f49e6146104ae57806340e58ee5146104db578063452a9320146104fb5780634634c61f1461051057806355ea6c471461053057806364bb43ee146105505761030a565b806319666a81116102bc57806324bc1a641161029657806324bc1a64146104325780633006018514610447578063328dd982146104695780633932abb1146104995761030a565b806319666a81146103e857806320606b7014610408578063238efcbc1461041d5761030a565b8063013cf08b1461030f57806302a251a31461034d57806306fdde031461036f57806315373e3d146103915780631778e29c146103b357806317977c61146103c85761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b5061032f61032a3660046134e5565b61090e565b604051610344999897969594939291906147f4565b60405180910390f35b34801561035957600080fd5b50610362610967565b604051610344919061387f565b34801561037b57600080fd5b5061038461096d565b60405161034491906138d2565b34801561039d57600080fd5b506103b16103ac366004613541565b610999565b005b3480156103bf57600080fd5b506103626109a8565b3480156103d457600080fd5b506103626103e3366004613394565b6109cc565b3480156103f457600080fd5b506103b1610403366004613394565b6109de565b34801561041457600080fd5b50610362610a92565b34801561042957600080fd5b506103b1610ab6565b34801561043e57600080fd5b50610362610b55565b34801561045357600080fd5b5061045c610c05565b6040516103449190613762565b34801561047557600080fd5b506104896104843660046134e5565b610c29565b6040516103449493929190613827565b3480156104a557600080fd5b50610362610eb8565b3480156104ba57600080fd5b506104ce6104c93660046134e5565b610ebd565b60405161034491906138be565b3480156104e757600080fd5b506103b16104f63660046134e5565b610fdc565b34801561050757600080fd5b5061045c61132f565b34801561051c57600080fd5b506103b161052b366004613570565b61133e565b34801561053c57600080fd5b506103b161054b366004613394565b611469565b34801561055c57600080fd5b506103b161056b366004613394565b6114df565b34801561057c57600080fd5b50610362611555565b34801561059157600080fd5b5061036261155b565b3480156105a657600080fd5b506103b16105b5366004613394565b611561565b3480156105c657600080fd5b5061045c6115d7565b3480156105db57600080fd5b506103626115e6565b3480156105f057600080fd5b506103626115eb565b34801561060557600080fd5b506103b1610614366004613394565b6115f2565b34801561062557600080fd5b506103b1610634366004613394565b611668565b34801561064557600080fd5b506103b16106543660046134e5565b6116b4565b34801561066557600080fd5b506103b16116fa565b34801561067a57600080fd5b506103b1610689366004613394565b611748565b34801561069a57600080fd5b506103626117be565b3480156106af57600080fd5b506103626117c5565b3480156106c457600080fd5b506103b16106d3366004613394565b61182c565b3480156106e457600080fd5b506103626118a2565b3480156106f957600080fd5b506103626118a8565b34801561070e57600080fd5b506103b161071d3660046134e5565b6118af565b34801561072e57600080fd5b506103b161073d366004613394565b6118f5565b34801561074e57600080fd5b506103b161075d3660046133ef565b61196b565b34801561076e57600080fd5b506103b161077d3660046133ef565b611a19565b34801561078e57600080fd5b50610362611a91565b3480156107a357600080fd5b506103626107b2366004613419565b611a97565b3480156107c357600080fd5b506103b16107d2366004613394565b611c7d565b3480156107e357600080fd5b506103b16107f23660046134e5565b611dda565b34801561080357600080fd5b506103b16108123660046133ef565b61200e565b34801561082357600080fd5b50610362612086565b34801561083857600080fd5b506103b16108473660046134e5565b6120aa565b34801561085857600080fd5b5061086c610867366004613515565b612142565b6040516103449190614737565b34801561088557600080fd5b506103b16108943660046133af565b6121a6565b3480156108a557600080fd5b50610362612257565b3480156108ba57600080fd5b506108ce6108c93660046134e5565b61225d565b6040516103449190613874565b3480156108e757600080fd5b506103b16108f6366004613394565b612272565b6103b16109093660046134e5565b6122e8565b6003602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b9097015495966001600160a01b0390951695939492939192909160ff8082169161010090041689565b619d8090565b6040518060400160405280601081526020016f4b5033524220476f7665726e616e636560801b81525081565b6109a433838361255e565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60046020526000908152604090205481565b6006546001600160a01b03163314610a115760405162461bcd60e51b8152600401610a08906140ac565b60405180910390fd5b6040516319666a8160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906319666a8190610a5d908490600401613762565b600060405180830381600087803b158015610a7757600080fd5b505af1158015610a8b573d6000803e3d6000fd5b5050505050565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6006546001600160a01b03163314610ae05760405162461bcd60e51b8152600401610a0890614206565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663238efcbc6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b3b57600080fd5b505af1158015610b4f573d6000803e3d6000fd5b50505050565b6000610c00612710610bfa6000547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166344d96e956040518163ffffffff1660e01b815260040160206040518083038186803b158015610bbc57600080fd5b505afa158015610bd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf491906134fd565b9061271b565b9061275c565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60608060608060006003600087815260200190815260200160002090508060030181600401826005018360060183805480602002602001604051908101604052809291908181526020018280548015610cab57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610c8d575b5050505050935082805480602002602001604051908101604052809291908181526020018280548015610cfd57602002820191906000526020600020905b815481526020019060010190808311610ce9575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b82821015610dd05760008481526020908190208301805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015610dbc5780601f10610d9157610100808354040283529160200191610dbc565b820191906000526020600020905b815481529060010190602001808311610d9f57829003601f168201915b505050505081526020019060010190610d25565b50505050915080805480602002602001604051908101604052809291908181526020016000905b82821015610ea25760008481526020908190208301805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015610e8e5780601f10610e6357610100808354040283529160200191610e8e565b820191906000526020600020905b815481529060010190602001808311610e7157829003601f168201915b505050505081526020019060010190610df7565b5050505090509450945094509450509193509193565b600190565b60008160025410158015610ed15750600082115b610eed5760405162461bcd60e51b8152600401610a089061449a565b6000828152600360205260409020600b81015460ff1615610f12576002915050610fd7565b80600701544311610f27576000915050610fd7565b80600801544311610f3c576001915050610fd7565b610f44610b55565b600a8201546009830154610f579161279e565b1015610f67576003915050610fd7565b80600a0154816009015411610f80576003915050610fd7565b6002810154610f93576004915050610fd7565b600b810154610100900460ff1615610faf576007915050610fd7565b6002810154610fc1906211238061279e565b4210610fd1576006915050610fd7565b60059150505b919050565b6000610fe782610ebd565b90506007816007811115610ff757fe5b14156110155760405162461bcd60e51b8152600401610a0890613d7d565b600082815260036020526040902060018101547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161480159061111d57506110676117c5565b6001808301546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263782d6fe192909116906110ae9043906127c3565b6040518363ffffffff1660e01b81526004016110cb929190613776565b60206040518083038186803b1580156110e357600080fd5b505afa1580156110f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111b91906134fd565b105b6111395760405162461bcd60e51b8152600401610a089061433c565b600b8101805460ff1916600117905560005b60038201548110156112f2576112ea82600301828154811061116957fe5b6000918252602090912001546004840180546001600160a01b03909216918490811061119157fe5b90600052602060002001548460050184815481106111ab57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156112395780601f1061120e57610100808354040283529160200191611239565b820191906000526020600020905b81548152906001019060200180831161121c57829003601f168201915b505050505085600601858154811061124d57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156112db5780601f106112b0576101008083540402835291602001916112db565b820191906000526020600020905b8154815290600101906020018083116112be57829003601f168201915b50505050508660020154612805565b60010161114b565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051611322919061387f565b60405180910390a1505050565b6006546001600160a01b031681565b60007f8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee868660405160200161137593929190613888565b60405160208183030381529060405280519060200120905060007f0000000000000000000000000000000000000000000000000000000000000000826040516020016113c2929190613704565b6040516020818303038152906040528051906020012090506000600182878787604051600081526020016040526040516113ff94939291906138a0565b6020604051602081039080840390855afa158015611421573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166114545760405162461bcd60e51b8152600401610a0890613e80565b61145f81898961255e565b5050505050505050565b6006546001600160a01b031633146114935760405162461bcd60e51b8152600401610a08906138e5565b6040516355ea6c4760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906355ea6c4790610a5d908490600401613762565b6006546001600160a01b031633146115095760405162461bcd60e51b8152600401610a08906144e0565b60405163325da1f760e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906364bb43ee90610a5d908490600401613762565b60055481565b60015481565b6006546001600160a01b0316331461158b5760405162461bcd60e51b8152600401610a0890613c46565b6040516374a8f10360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906374a8f10390610a5d908490600401613762565b6007546001600160a01b031681565b600a90565b62278d0081565b6006546001600160a01b0316331461161c5760405162461bcd60e51b8152600401610a08906139a5565b604051638071198960e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638071198990610a5d908490600401613762565b6006546001600160a01b031633146116925760405162461bcd60e51b8152600401610a0890613f33565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b3330146116d35760405162461bcd60e51b8152600401610a08906146f3565b6127108111156116f55760405162461bcd60e51b8152600401610a0890613a53565b600155565b6007546001600160a01b031633146117245760405162461bcd60e51b8152600401610a08906146a3565b600754600680546001600160a01b0319166001600160a01b03909216919091179055565b6006546001600160a01b031633146117725760405162461bcd60e51b8152600401610a0890614404565b60405163ab033ea960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ab033ea990610a5d908490600401613762565b6201518081565b6000610c00612710610bfa6001547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166344d96e956040518163ffffffff1660e01b815260040160206040518083038186803b158015610bbc57600080fd5b6006546001600160a01b031633146118565760405162461bcd60e51b8152600401610a0890614604565b604051635b00381560e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b600702a90610a5d908490600401613762565b60005481565b6211238081565b3330146118ce5760405162461bcd60e51b8152600401610a08906146f3565b6127108111156118f05760405162461bcd60e51b8152600401610a0890614145565b600055565b6006546001600160a01b0316331461191f5760405162461bcd60e51b8152600401610a0890613f7c565b60405163314662af60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5198abc90610a5d908490600401613762565b6006546001600160a01b031633146119955760405162461bcd60e51b8152600401610a0890613dd0565b60405163019cd41160e71b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ce6a0880906119e39085908590600401613776565b600060405180830381600087803b1580156119fd57600080fd5b505af1158015611a11573d6000803e3d6000fd5b505050505050565b6006546001600160a01b03163314611a435760405162461bcd60e51b8152600401610a08906142f2565b60405163d8ae6faf60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d8ae6faf906119e39085908590600401613776565b60025481565b6000611aa16117c5565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663782d6fe133611adc4360016127c3565b6040518363ffffffff1660e01b8152600401611af9929190613776565b60206040518083038186803b158015611b1157600080fd5b505afa158015611b25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4991906134fd565b1015611b675760405162461bcd60e51b8152600401610a0890613b69565b84518651148015611b79575083518651145b8015611b86575082518651145b611ba25760405162461bcd60e51b8152600401610a08906139ec565b8551611bc05760405162461bcd60e51b8152600401610a0890613bfd565b611bc86115e6565b86511115611be85760405162461bcd60e51b8152600401610a0890614388565b336000908152600460205260409020548015611c65576000611c0982610ebd565b90506001816007811115611c1957fe5b1415611c375760405162461bcd60e51b8152600401610a089061392a565b6000816007811115611c4557fe5b1415611c635760405162461bcd60e51b8152600401610a089061418a565b505b611c72878787878761289f565b979650505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611cc55760405162461bcd60e51b8152600401610a0890614254565b60607f000000000000000000000000000000000000000000000000000000000000000081600081518110611cf557fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060606040518060400160405280600f81526020016e6164644a6f6228616464726573732960881b81525081600081518110611d4c57fe5b6020026020010181905250606083604051602001611d6a9190613762565b60405160208183030381529060405281600081518110611d8657fe5b60200260200101819052506060600081600081518110611da257fe5b602002602001018181525050611a118482858589604051602001611dc6919061371f565b60405160208183030381529060405261289f565b6004611de582610ebd565b6007811115611df057fe5b14611e0d5760405162461bcd60e51b8152600401610a0890613e19565b6000818152600360205260408120600554909190611e2c90429061279e565b905060005b6003830154811015611fd457611fcc836003018281548110611e4f57fe5b6000918252602090912001546004850180546001600160a01b039092169184908110611e7757fe5b9060005260206000200154856005018481548110611e9157fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611f1f5780601f10611ef457610100808354040283529160200191611f1f565b820191906000526020600020905b815481529060010190602001808311611f0257829003601f168201915b5050505050866006018581548110611f3357fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611fc15780601f10611f9657610100808354040283529160200191611fc1565b820191906000526020600020905b815481529060010190602001808311611fa457829003601f168201915b505050505086612aea565b600101611e31565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290611322908590849061487d565b6006546001600160a01b031633146120385760405162461bcd60e51b8152600401610a0890613ce3565b60405163de63298d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063de63298d906119e39085908590600401613776565b7f8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee81565b3330146120c95760405162461bcd60e51b8152600401610a0890614652565b620151808110156120ec5760405162461bcd60e51b8152600401610a0890613d29565b62278d0081111561210f5760405162461bcd60e51b8152600401610a0890614005565b600581905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b61214a612e7b565b5060008281526003602090815260408083206001600160a01b0385168452600c018252918290208251606081018452815460ff808216151583526101009091041615159281019290925260010154918101919091525b92915050565b6006546001600160a01b031633146121d05760405162461bcd60e51b8152600401610a0890613ae5565b60405163e74f823960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e74f8239906122209086908690869060040161378f565b600060405180830381600087803b15801561223a57600080fd5b505af115801561224e573d6000803e3d6000fd5b50505050505050565b61271081565b60086020526000908152604090205460ff1681565b6006546001600160a01b0316331461229c5760405162461bcd60e51b8152600401610a0890613fc0565b60405163f75f9f7b60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f75f9f7b90610a5d908490600401613762565b6006546001600160a01b0316158061230a57506006546001600160a01b031633145b6123265760405162461bcd60e51b8152600401610a08906143cd565b600561233182610ebd565b600781111561233c57fe5b146123595760405162461bcd60e51b8152600401610a089061459c565b6000818152600360205260408120600b8101805461ff001916610100179055905b60038201548110156125225761251982600301828154811061239857fe5b6000918252602090912001546004840180546001600160a01b0390921691849081106123c057fe5b90600052602060002001548460050184815481106123da57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156124685780601f1061243d57610100808354040283529160200191612468565b820191906000526020600020905b81548152906001019060200180831161244b57829003601f168201915b505050505085600601858154811061247c57fe5b600091825260209182902001805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561250a5780601f106124df5761010080835404028352916020019161250a565b820191906000526020600020905b8154815290600101906020018083116124ed57829003601f168201915b50505050508660020154612b5a565b5060010161237a565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f82604051612552919061387f565b60405180910390a15050565b600161256983610ebd565b600781111561257457fe5b146125915760405162461bcd60e51b8152600401610a0890613a9e565b60008281526003602090815260408083206001600160a01b0387168452600c8101909252909120805460ff16156125da5760405162461bcd60e51b8152600401610a0890614062565b600782015460405163782d6fe160e01b81526000916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163782d6fe19161262f918a9190600401613776565b60206040518083038186803b15801561264757600080fd5b505afa15801561265b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267f91906134fd565b905083156126a0576009830154612696908261279e565b60098401556126b5565b600a8301546126af908261279e565b600a8401555b8154600160ff19909116811761ff0019166101008615150217835582018190556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c469061270b9088908890889086906137b3565b60405180910390a1505050505050565b60008261272a575060006121a0565b8282028284828161273757fe5b04146127555760405162461bcd60e51b8152600401610a08906142b1565b9392505050565b600061275583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d40565b6000828201838110156127555760405162461bcd60e51b8152600401610a0890613bc6565b600061275583836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250612d77565b600085858585856040516020016128209594939291906137db565b60408051601f19818403018152828252805160209182012060008181526008909252919020805460ff1916905591506001600160a01b0387169082907f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf879061288f908990899089908990614840565b60405180910390a3505050505050565b6000806128b46128ad610eb8565b439061279e565b905060006128ca6128c3610967565b839061279e565b60028054600101905590506128dd612e9b565b604051806101a001604052806002548152602001336001600160a01b03168152602001600081526020018a815260200189815260200188815260200187815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060036000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506040820151816002015560608201518160030190805190602001906129c0929190612f10565b50608082015180516129dc916004840191602090910190612f75565b5060a082015180516129f8916005840191602090910190612fbc565b5060c08201518051612a14916006840191602090910190613015565b5060e082015160078201556101008083015160088301556101208301516009830155610140830151600a830155610160830151600b90920180546101809094015160ff199094169215159290921761ff0019169215150291909117905580516020808301516001600160a01b03166000908152600490915260409081902091909155815190517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091612ad59133908d908d908d908d908b908b908f9061475c565b60405180910390a15198975050505050505050565b600860008686868686604051602001612b079594939291906137db565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1615612b4d5760405162461bcd60e51b8152600401610a0890613ecc565b611a118585858585612da3565b606060008686868686604051602001612b779594939291906137db565b60408051601f1981840301815291815281516020928301206000818152600890935291205490915060ff16612bbe5760405162461bcd60e51b8152600401610a08906140fa565b82612bc7612e77565b1015612be55760405162461bcd60e51b8152600401610a0890613c8a565b612bf2836211238061279e565b612bfa612e77565b1115612c185760405162461bcd60e51b8152600401610a0890613b28565b6000818152600860205260409020805460ff191690558451606090612c3e575083612c6a565b858051906020012085604051602001612c589291906136b7565b60405160208183030381529060405290505b60006060896001600160a01b03168984604051612c8791906136e8565b60006040518083038185875af1925050503d8060008114612cc4576040519150601f19603f3d011682016040523d82523d6000602084013e612cc9565b606091505b509150915081612ceb5760405162461bcd60e51b8152600401610a089061444f565b896001600160a01b0316847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051612d2b9493929190614840565b60405180910390a39998505050505050505050565b60008183612d615760405162461bcd60e51b8152600401610a0891906138d2565b506000838581612d6d57fe5b0495945050505050565b60008184841115612d9b5760405162461bcd60e51b8152600401610a0891906138d2565b505050900390565b6000612db9600554612db3612e77565b9061279e565b821015612dd85760405162461bcd60e51b8152600401610a089061452d565b60008686868686604051602001612df39594939291906137db565b60408051601f19818403018152828252805160209182012060008181526008909252919020805460ff1916600117905591506001600160a01b0388169082907f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f90612e65908a908a908a908a90614840565b60405180910390a39695505050505050565b4290565b604080516060810182526000808252602082018190529181019190915290565b604051806101a001604052806000815260200160006001600160a01b031681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b828054828255906000526020600020908101928215612f65579160200282015b82811115612f6557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612f30565b50612f7192915061306e565b5090565b828054828255906000526020600020908101928215612fb0579160200282015b82811115612fb0578251825591602001919060010190612f95565b50612f7192915061308d565b828054828255906000526020600020908101928215613009579160200282015b828111156130095782518051612ff99184916020909101906130a2565b5091602001919060010190612fdc565b50612f7192915061310f565b828054828255906000526020600020908101928215613062579160200282015b8281111561306257825180516130529184916020909101906130a2565b5091602001919060010190613035565b50612f7192915061312c565b5b80821115612f715780546001600160a01b031916815560010161306f565b5b80821115612f71576000815560010161308e565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106130e357805160ff1916838001178555612fb0565b82800160010185558215612fb05791820182811115612fb0578251825591602001919060010190612f95565b80821115612f715760006131238282613149565b5060010161310f565b80821115612f715760006131408282613149565b5060010161312c565b50805460018160011615610100020316600290046000825580601f1061316f575061318d565b601f01602090049060005260206000209081019061318d919061308d565b50565b80356001600160a01b03811681146121a057600080fd5b600082601f8301126131b7578081fd5b81356131ca6131c5826148b2565b61488b565b8181529150602080830190848101818402860182018710156131eb57600080fd5b60005b84811015613212576132008883613190565b845292820192908201906001016131ee565b505050505092915050565b600082601f83011261322d578081fd5b813561323b6131c5826148b2565b818152915060208083019084810160005b8481101561321257613263888484358a010161332b565b8452928201929082019060010161324c565b600082601f830112613285578081fd5b81356132936131c5826148b2565b818152915060208083019084810160005b84811015613212576132bb888484358a010161332b565b845292820192908201906001016132a4565b600082601f8301126132dd578081fd5b81356132eb6131c5826148b2565b81815291506020808301908481018184028601820187101561330c57600080fd5b60005b848110156132125781358452928201929082019060010161330f565b600082601f83011261333b578081fd5b813567ffffffffffffffff811115613351578182fd5b613364601f8201601f191660200161488b565b915080825283602082850101111561337b57600080fd5b8060208401602084013760009082016020015292915050565b6000602082840312156133a5578081fd5b6127558383613190565b6000806000606084860312156133c3578182fd5b83356133ce816148fe565b925060208401356133de816148fe565b929592945050506040919091013590565b60008060408385031215613401578182fd5b61340b8484613190565b946020939093013593505050565b600080600080600060a08688031215613430578081fd5b853567ffffffffffffffff80821115613447578283fd5b61345389838a016131a7565b96506020880135915080821115613468578283fd5b61347489838a016132cd565b95506040880135915080821115613489578283fd5b61349589838a01613275565b945060608801359150808211156134aa578283fd5b6134b689838a0161321d565b935060808801359150808211156134cb578283fd5b506134d88882890161332b565b9150509295509295909350565b6000602082840312156134f6578081fd5b5035919050565b60006020828403121561350e578081fd5b5051919050565b60008060408385031215613527578182fd5b823591506135388460208501613190565b90509250929050565b60008060408385031215613553578182fd5b82359150602083013561356581614913565b809150509250929050565b600080600080600060a08688031215613587578283fd5b85359450602086013561359981614913565b9350604086013560ff811681146135ae578384fd5b94979396509394606081013594506080013592915050565b6000815180845260208085019450808401835b838110156135fe5781516001600160a01b0316875295820195908201906001016135d9565b509495945050505050565b6000815180845260208085018081965082840281019150828601855b8581101561364f57828403895261363d84835161368b565b98850198935090840190600101613625565b5091979650505050505050565b6000815180845260208085019450808401835b838110156135fe5781518752958201959082019060010161366f565b600081518084526136a38160208601602086016148d2565b601f01601f19169290920160200192915050565b6001600160e01b03198316815281516000906136da8160048501602087016148d2565b919091016004019392505050565b600082516136fa8184602087016148d2565b9190910192915050565b61190160f01b81526002810192909252602282015260420190565b7f476f7665726e616e63653a3a70726f706f73654a6f6228293a20000000000000815260609190911b6bffffffffffffffffffffffff1916601a820152602e0190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03949094168452602084019290925215156040830152606082015260800190565b600060018060a01b038716825285602083015260a0604083015261380260a083018661368b565b8281036060840152613814818661368b565b9150508260808301529695505050505050565b60006080825261383a60808301876135c6565b828103602084015261384c818761365c565b905082810360408401526138608186613609565b90508281036060840152611c728185613609565b901515815260200190565b90815260200190565b92835260208301919091521515604082015260600190565b93845260ff9290921660208401526040830152606082015260800190565b60208101600883106138cc57fe5b91905290565b600060208252612755602083018461368b565b60208082526025908201527f4b656570337262476f7665726e616e63653a3a7265736f6c76653a2021677561604082015264393234b0b760d91b606082015260800190565b60208082526055908201527f476f7665726e616e63653a3a70726f706f73653a206f6e65206c69766520707260408201527f6f706f73616c207065722070726f706f7365722c20666f756e6420616e20616c6060820152741c9958591e481858dd1a5d99481c1c9bdc1bdcd85b605a1b608082015260a00190565b60208082526027908201527f4b656570337262476f7665726e616e63653a3a72656d6f76654a6f623a2021676040820152663ab0b93234b0b760c91b606082015260800190565b60208082526041908201527f476f7665726e616e63653a3a70726f706f73653a2070726f706f73616c20667560408201527f6e6374696f6e20696e666f726d6174696f6e206172697479206d69736d6174636060820152600d60fb1b608082015260a00190565b6020808252602b908201527f476f7665726e616e63653a3a7365745468726573686f6c643a2074687265736860408201526a6f6c645f203e204241534560a81b606082015260800190565b60208082526027908201527f476f7665726e616e63653a3a5f63617374566f74653a20766f74696e672069736040820152660818db1bdcd95960ca1b606082015260800190565b60208082526023908201527f4b656570337262476f7665726e616e63653a3a736c6173683a2021677561726460408201526234b0b760e91b606082015260800190565b602080825260339082015260008051602061492283398151915260408201527230b739b0b1ba34b7b71034b99039ba30b6329760691b606082015260800190565b6020808252603c908201527f476f7665726e616e63653a3a70726f706f73653a2070726f706f73657220766f60408201527f7465732062656c6f772070726f706f73616c207468726573686f6c6400000000606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526029908201527f476f7665726e616e63653a3a70726f706f73653a206d7573742070726f7669646040820152686520616374696f6e7360b81b606082015260800190565b60208082526024908201527f4b656570337262476f7665726e616e63653a3a7265766f6b653a2021677561726040820152633234b0b760e11b606082015260800190565b602080825260459082015260008051602061492283398151915260408201527f616e73616374696f6e206861736e2774207375727061737365642074696d65206060820152643637b1b59760d91b608082015260a00190565b60208082526026908201527f4b656570337262476f7665726e616e63653a3a616464566f7465733a2021677560408201526530b93234b0b760d11b606082015260800190565b60208082526034908201527f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420656040820152733c31b2b2b21036b4b734b6bab6903232b630bc9760611b606082015260800190565b60208082526033908201527f476f7665726e616e63653a3a63616e63656c3a2063616e6e6f742063616e63656040820152721b08195e1958dd5d1959081c1c9bdc1bdcd85b606a1b606082015260800190565b60208082526029908201527f4b656570337262476f7665726e616e63653a3a72656d6f7665566f7465733a2060408201526810b3bab0b93234b0b760b91b606082015260800190565b60208082526041908201527f476f7665726e616e63653a3a71756575653a2070726f706f73616c2063616e2060408201527f6f6e6c79206265207175657565642069662069742069732073756363656564656060820152601960fa1b608082015260a00190565b6020808252602c908201527f476f7665726e616e63653a3a63617374566f746542795369673a20696e76616c60408201526b6964207369676e617475726560a01b606082015260800190565b60208082526041908201527f476f7665726e616e63653a3a5f71756575654f725265766572743a2070726f7060408201527f6f73616c20616374696f6e20616c7265616479207175657565642061742065746060820152606160f81b608082015260a00190565b60208082526029908201527f4b656570337262476f7665726e616e63653a3a736574477561726469616e3a2060408201526810b3bab0b93234b0b760b91b606082015260800190565b60208082526024908201527f4b656570337262476f7665726e616e63653a3a6164644a6f623a2021677561726040820152633234b0b760e11b606082015260800190565b60208082526025908201527f4b656570337262476f7665726e616e63653a3a646973707574653a2021677561604082015264393234b0b760d91b606082015260800190565b60208082526038908201527f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e60408201527f6f7420657863656564206d6178696d756d2064656c61792e0000000000000000606082015260800190565b6020808252602a908201527f476f7665726e616e63653a3a5f63617374566f74653a20766f74657220616c726040820152691958591e481d9bdd195960b21b606082015260800190565b6020808252602e908201527f4b656570337262476f7665726e616e63653a3a7365744b65657033726248656c60408201526d3832b91d1010b3bab0b93234b0b760911b606082015260800190565b6020808252603d9082015260008051602061492283398151915260408201527f616e73616374696f6e206861736e2774206265656e207175657565642e000000606082015260800190565b60208082526025908201527f476f7665726e616e63653a3a73657451756f72756d3a2071756f72756d5f203e604082015264204241534560d81b606082015260800190565b60208082526056908201527f476f7665726e616e63653a3a70726f706f73653a206f6e65206c69766520707260408201527f6f706f73616c207065722070726f706f7365722c20666f756e6420616e20616c6060820152751c9958591e481c195b991a5b99c81c1c9bdc1bdcd85b60521b608082015260a00190565b6020808252602e908201527f4b656570337262476f7665726e616e63653a3a616363657074476f7665726e6160408201526d3731b29d1010b3bab0b93234b0b760911b606082015260800190565b60208082526037908201527f476f7665726e616e63653a3a70726f706f73654a6f623a206f6e6c7920564f5460408201527f45522063616e2070726f706f7365206e6577206a6f6273000000000000000000606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252602a908201527f4b656570337262476f7665726e616e63653a3a6164644b50524372656469743a6040820152691010b3bab0b93234b0b760b11b606082015260800190565b6020808252602c908201527f476f7665726e616e63653a3a63616e63656c3a2070726f706f7365722061626f60408201526b1d99481d1a1c995cda1bdb1960a21b606082015260800190565b60208082526025908201527f476f7665726e616e63653a3a70726f706f73653a20746f6f206d616e7920616360408201526474696f6e7360d81b606082015260800190565b6020808252601d908201527f476f7665726e616e63653a657865637574653a2021677561726469616e000000604082015260600190565b6020808252602b908201527f4b656570337262476f7665726e616e63653a3a736574476f7665726e616e636560408201526a1d1010b3bab0b93234b0b760a91b606082015260800190565b6020808252603d9082015260008051602061492283398151915260408201527f616e73616374696f6e20657865637574696f6e2072657665727465642e000000606082015260800190565b60208082526026908201527f476f7665726e616e63653a3a73746174653a20696e76616c69642070726f706f6040820152651cd85b081a5960d21b606082015260800190565b6020808252602d908201527f4b656570337262476f7665726e616e63653a3a7265766f6b654c69717569646960408201526c3a3c9d1010b3bab0b93234b0b760991b606082015260800190565b60208082526049908201527f54696d656c6f636b3a3a71756575655472616e73616374696f6e3a204573746960408201527f6d6174656420657865637574696f6e20626c6f636b206d757374207361746973606082015268333c903232b630bc9760b91b608082015260a00190565b60208082526042908201527f476f7665726e616e63653a3a657865637574653a2070726f706f73616c20636160408201527f6e206f6e6c792062652065786563757465642069662069742069732071756575606082015261195960f21b608082015260a00190565b6020808252602e908201527f4b656570337262476f7665726e616e63653a3a617070726f76654c697175696460408201526d34ba3c9d1010b3bab0b93234b0b760911b606082015260800190565b60208082526031908201527f54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f60408201527036b290333937b6902a34b6b2b637b1b59760791b606082015260800190565b60208082526030908201527f4b656570337262476f7665726e616e63653a3a736574477561726469616e3a2060408201526f10b832b73234b733a3bab0b93234b0b760811b606082015260800190565b60208082526024908201527f476f7665726e616e63653a3a73657451756f72756d3a2074696d656c6f636b206040820152636f6e6c7960e01b606082015260800190565b8151151581526020808301511515908201526040918201519181019190915260600190565b8981526001600160a01b0389166020820152610120604082018190526000906147878382018b6135c6565b9050828103606084015261479b818a61365c565b905082810360808401526147af8189613609565b905082810360a08401526147c38188613609565b90508560c08401528460e08401528281036101008401526147e4818561368b565b9c9b505050505050505050505050565b9889526001600160a01b0397909716602089015260408801959095526060870193909352608086019190915260a085015260c0840152151560e083015215156101008201526101200190565b600085825260806020830152614859608083018661368b565b828103604084015261486b818661368b565b91505082606083015295945050505050565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156148aa57600080fd5b604052919050565b600067ffffffffffffffff8211156148c8578081fd5b5060209081020190565b60005b838110156148ed5781810151838201526020016148d5565b83811115610b4f5750506000910152565b6001600160a01b038116811461318d57600080fd5b801515811461318d57600080fdfe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472a26469706673582212201f27d8393d4a4ffad834347885fe5af18b6ef743417c8446d8f7aaeeab66e12164736f6c634300060c00330000000000000000000000005ea29eee799aa7cc379fde5cf370bc24f2ea7c81

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

0000000000000000000000005ea29eee799aa7cc379fde5cf370bc24f2ea7c81

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000005ea29eee799aa7cc379fde5cf370bc24f2ea7c81


Deployed ByteCode Sourcemap

3361:19490:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6265:43;;;;;;;;;;-1:-1:-1;6265:43:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;5111:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3461:48::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;14548:117::-;;;;;;;;;;-1:-1:-1;14548:117:0;;;;;:::i;:::-;;:::i;:::-;;6636:40;;;;;;;;;;;;;:::i;6372:50::-;;;;;;;;;;-1:-1:-1;6372:50:0;;;;;:::i;:::-;;:::i;18576:186::-;;;;;;;;;;-1:-1:-1;18576:186:0;;;;;:::i;:::-;;:::i;6495:122::-;;;;;;;;;;;;;:::i;18965:170::-;;;;;;;;;;;;;:::i;4153:121::-;;;;;;;;;;;;;:::i;5284:29::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;12967:287::-;;;;;;;;;;-1:-1:-1;12967:287:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;4964:63::-;;;;;;;;;;;;;:::i;13422:1118::-;;;;;;;;;;-1:-1:-1;13422:1118:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;12200:759::-;;;;;;;;;;-1:-1:-1;12200:759:0;;;;;:::i;:::-;;:::i;16792:23::-;;;;;;;;;;;;;:::i;14673:487::-;;;;;;;;;;-1:-1:-1;14673:487:0;;;;;:::i;:::-;;:::i;19684:163::-;;;;;;;;;;-1:-1:-1;19684:163:0;;;;;:::i;:::-;;:::i;18048:193::-;;;;;;;;;;-1:-1:-1;18048:193:0;;;;;:::i;:::-;;:::i;16746:33::-;;;;;;;;;;;;;:::i;3810:38::-;;;;;;;;;;;;;:::i;19518:160::-;;;;;;;;;;-1:-1:-1;19518:160:0;;;;;:::i;:::-;;:::i;16822:30::-;;;;;;;;;;;;;:::i;4783:74::-;;;;;;;;;;;;;:::i;16693:44::-;;;;;;;;;;;;;:::i;18407:163::-;;;;;;;;;;-1:-1:-1;18407:163:0;;;;;:::i;:::-;;:::i;16865:182::-;;;;;;;;;;-1:-1:-1;16865:182:0;;;;;:::i;:::-;;:::i;4423:270::-;;;;;;;;;;-1:-1:-1;4423:270:0;;;;;:::i;:::-;;:::i;17059:185::-;;;;;;;;;;;;;:::i;18768:191::-;;;;;;;;;;-1:-1:-1;18768:191:0;;;;;:::i;:::-;;:::i;16643:43::-;;;;;;;;;;;;;:::i;4282:133::-;;;;;;;;;;;;;:::i;17846:196::-;;;;;;;;;;-1:-1:-1;17846:196:0;;;;;:::i;:::-;;:::i;3651:32::-;;;;;;;;;;;;;:::i;16593:43::-;;;;;;;;;;;;;:::i;3899:246::-;;;;;;;;;;-1:-1:-1;3899:246:0;;;;;:::i;:::-;;:::i;18247:154::-;;;;;;;;;;-1:-1:-1;18247:154:0;;;;;:::i;:::-;;:::i;17447:194::-;;;;;;;;;;-1:-1:-1;17447:194:0;;;;;:::i;:::-;;:::i;17647:193::-;;;;;;;;;;-1:-1:-1;17647:193:0;;;;;:::i;:::-;;:::i;5369:25::-;;;;;;;;;;;;;:::i;8206:1321::-;;;;;;;;;;-1:-1:-1;8206:1321:0;;;;;:::i;:::-;;:::i;7634:564::-;;;;;;;;;;-1:-1:-1;7634:564:0;;;;;:::i;:::-;;:::i;10622:559::-;;;;;;;;;;-1:-1:-1;10622:559:0;;;;;:::i;:::-;;:::i;17256:185::-;;;;;;;;;;-1:-1:-1;17256:185:0;;;;;:::i;:::-;;:::i;6766:94::-;;;;;;;;;;;;;:::i;20189:406::-;;;;;;;;;;-1:-1:-1;20189:406:0;;;;;:::i;:::-;;:::i;13262:152::-;;;;;;;;;;-1:-1:-1;13262:152:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;19310:202::-;;;;;;;;;;-1:-1:-1;19310:202:0;;;;;:::i;:::-;;:::i;3857:33::-;;;;;;;;;;;;;:::i;19855:51::-;;;;;;;;;;-1:-1:-1;19855:51:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;19141:163::-;;;;;;;;;;-1:-1:-1;19141:163:0;;;;;:::i;:::-;;:::i;11553:639::-;;;;;;:::i;:::-;;:::i;6265:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6265:43:0;;;;;;;;;;;;;;;;;;;;;;:::o;5111:69::-;5171:6;5111:69;:::o;3461:48::-;;;;;;;;;;;;;;-1:-1:-1;;;3461:48:0;;;;:::o;14548:117::-;14615:42;14625:10;14637;14649:7;14615:9;:42::i;:::-;14548:117;;:::o;6636:40::-;;;:::o;6372:50::-;;;;;;;;;;;;;:::o;18576:186::-;18658:8;;-1:-1:-1;;;;;18658:8:0;18644:10;:22;18636:81;;;;-1:-1:-1;;;18636:81:0;;;;;;;:::i;:::-;;;;;;;;;18728:26;;-1:-1:-1;;;18728:26:0;;-1:-1:-1;;;;;18728:3:0;:20;;;;:26;;18749:4;;18728:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18576:186;:::o;6495:122::-;6537:80;6495:122;:::o;18965:170::-;19035:8;;-1:-1:-1;;;;;19035:8:0;19021:10;:22;19013:81;;;;-1:-1:-1;;;19013:81:0;;;;;;;:::i;:::-;19105:3;-1:-1:-1;;;;;19105:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18965:170::o;4153:121::-;4197:4;4221:45;3885:5;4221:35;4243:12;;4221:3;-1:-1:-1;;;;;4221:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:21;;:35::i;:::-;:39;;:45::i;:::-;4214:52;;4153:121;:::o;5284:29::-;;;:::o;12967:287::-;13025:24;13051:20;13073:26;13101:24;13138:18;13159:9;:21;13169:10;13159:21;;;;;;;;;;;13138:42;;13199:1;:9;;13210:1;:8;;13220:1;:12;;13234:1;:11;;13191:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13191:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13191:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13191:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12967:287;;;;;:::o;4964:63::-;5023:1;4964:63;:::o;13422:1118::-;13475:13;13526:10;13509:13;;:27;;:45;;;;;13553:1;13540:10;:14;13509:45;13501:96;;;;-1:-1:-1;;;13501:96:0;;;;;;;:::i;:::-;13608:25;13636:21;;;:9;:21;;;;;13672:17;;;;;;13668:865;;;13713:22;13706:29;;;;;13668:865;13773:8;:19;;;13757:12;:35;13753:780;;13816:21;13809:28;;;;;13753:780;13875:8;:17;;;13859:12;:33;13855:678;;13916:20;13909:27;;;;;13855:678;14005:13;:11;:13::i;:::-;13980:21;;;;13958:17;;;;:44;;:21;:44::i;:::-;:60;13954:579;;;14042:22;14035:29;;;;;13954:579;14107:8;:21;;;14086:8;:17;;;:42;14082:451;;14152:22;14145:29;;;;;14082:451;14196:12;;;;14192:341;;14237:23;14230:30;;;;;14192:341;14282:17;;;;;;;;;14278:255;;;14323:22;14316:29;;;;;14278:255;14386:12;;;;:30;;16629:7;14386:16;:30::i;:::-;14367:15;:49;14363:170;;14440:21;14433:28;;;;;14363:170;14501:20;14494:27;;;13422:1118;;;;:::o;12200:759::-;12251:19;12273:17;12279:10;12273:5;:17::i;:::-;12251:39;-1:-1:-1;12318:22:0;12309:5;:31;;;;;;;;;;12301:95;;;;-1:-1:-1;;;12301:95:0;;;;;;;:::i;:::-;12409:25;12437:21;;;:9;:21;;;;;12477:17;;;;12506:3;-1:-1:-1;;;;;12477:33:0;;;:17;;:33;;;;:134;;;12592:19;:17;:19::i;:::-;12550:17;;;;;-1:-1:-1;;;;;12532:3:0;:17;;;;;12550;;;;12569:19;;:12;;:16;:19::i;:::-;12532:57;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:79;12477:134;12469:191;;;;-1:-1:-1;;;12469:191:0;;;;;;;:::i;:::-;12673:17;;;:24;;-1:-1:-1;;12673:24:0;12693:4;12673:24;;;:17;12708:198;12729:16;;;:23;12725:27;;12708:198;;;12774:120;12793:8;:16;;12810:1;12793:19;;;;;;;;;;;;;;;;;;12814:15;;;:18;;-1:-1:-1;;;;;12793:19:0;;;;12830:1;;12814:18;;;;;;;;;;;;;;12834:8;:19;;12854:1;12834:22;;;;;;;;;;;;;;;;;;12774:120;;;;;;;-1:-1:-1;;12774:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12834:22;12774:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12858:8;:18;;12877:1;12858:21;;;;;;;;;;;;;;;;;;12774:120;;;;;;;-1:-1:-1;;12774:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12858:21;12774:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12881:8;:12;;;12774:18;:120::i;:::-;12754:3;;12708:198;;;;12923:28;12940:10;12923:28;;;;;;:::i;:::-;;;;;;;;12200:759;;;:::o;16792:23::-;;;-1:-1:-1;;;;;16792:23:0;;:::o;14673:487::-;14776:18;6808:52;14835:10;14847:7;14807:48;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14797:59;;;;;;14776:80;;14867:14;14923:15;14940:10;14894:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14884:68;;;;;;14867:85;;14963:17;14983:26;14993:6;15001:1;15004;15007;14983:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14983:26:0;;-1:-1:-1;;14983:26:0;;;-1:-1:-1;;;;;;;15028:23:0;;15020:80;;;;-1:-1:-1;;;15020:80:0;;;;;;;:::i;:::-;15111:41;15121:9;15132:10;15144:7;15111:9;:41::i;:::-;14673:487;;;;;;;;:::o;19684:163::-;19759:8;;-1:-1:-1;;;;;19759:8:0;19745:10;:22;19737:72;;;;-1:-1:-1;;;19737:72:0;;;;;;;:::i;:::-;19820:19;;-1:-1:-1;;;19820:19:0;;-1:-1:-1;;;;;19820:3:0;:11;;;;:19;;19832:6;;19820:19;;;:::i;18048:193::-;18134:8;;-1:-1:-1;;;;;18134:8:0;18120:10;:22;18112:80;;;;-1:-1:-1;;;18112:80:0;;;;;;;:::i;:::-;18203:30;;-1:-1:-1;;;18203:30:0;;-1:-1:-1;;;;;18203:3:0;:19;;;;:30;;18223:9;;18203:30;;;:::i;16746:33::-;;;;:::o;3810:38::-;;;;:::o;19518:160::-;19592:8;;-1:-1:-1;;;;;19592:8:0;19578:10;:22;19570:71;;;;-1:-1:-1;;;19570:71:0;;;;;;;:::i;:::-;19652:18;;-1:-1:-1;;;19652:18:0;;-1:-1:-1;;;;;19652:3:0;:10;;;;:18;;19663:6;;19652:18;;;:::i;16822:30::-;;;-1:-1:-1;;;;;16822:30:0;;:::o;4783:74::-;4852:2;4783:74;:::o;16693:44::-;16730:7;16693:44;:::o;18407:163::-;18481:8;;-1:-1:-1;;;;;18481:8:0;18467:10;:22;18459:74;;;;-1:-1:-1;;;18459:74:0;;;;;;;:::i;:::-;18544:18;;-1:-1:-1;;;18544:18:0;;-1:-1:-1;;;;;18544:3:0;:13;;;;:18;;18558:3;;18544:18;;;:::i;16865:182::-;16947:8;;-1:-1:-1;;;;;16947:8:0;16933:10;:22;16925:76;;;;-1:-1:-1;;;16925:76:0;;;;;;;:::i;:::-;17012:15;:27;;-1:-1:-1;;;;;;17012:27:0;-1:-1:-1;;;;;17012:27:0;;;;;;;;;;16865:182::o;4423:270::-;4490:10;4512:4;4490:27;4482:76;;;;-1:-1:-1;;;4482:76:0;;;;;;;:::i;:::-;3885:5;4577:10;:18;;4569:74;;;;-1:-1:-1;;;4569:74:0;;;;;;;:::i;:::-;4654:18;:31;4423:270::o;17059:185::-;17131:15;;-1:-1:-1;;;;;17131:15:0;17117:10;:29;17109:90;;;;-1:-1:-1;;;17109:90:0;;;;;;;:::i;:::-;17221:15;;17210:8;:26;;-1:-1:-1;;;;;;17210:26:0;-1:-1:-1;;;;;17221:15:0;;;17210:26;;;;;;17059:185::o;18768:191::-;18854:8;;-1:-1:-1;;;;;18854:8:0;18840:10;:22;18832:78;;;;-1:-1:-1;;;18832:78:0;;;;;;;:::i;:::-;18921:30;;-1:-1:-1;;;18921:30:0;;-1:-1:-1;;;;;18921:3:0;:17;;;;:30;;18939:11;;18921:30;;;:::i;16643:43::-;16680:6;16643:43;:::o;4282:133::-;4332:4;4356:51;3885:5;4356:41;4378:18;;4356:3;-1:-1:-1;;;;;4356:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17846:196;17933:8;;-1:-1:-1;;;;;17933:8:0;17919:10;:22;17911:81;;;;-1:-1:-1;;;17911:81:0;;;;;;;:::i;:::-;18003:31;;-1:-1:-1;;;18003:31:0;;-1:-1:-1;;;;;18003:3:0;:20;;;;:31;;18024:9;;18003:31;;;:::i;3651:32::-;;;;:::o;16593:43::-;16629:7;16593:43;:::o;3899:246::-;3960:10;3982:4;3960:27;3952:76;;;;-1:-1:-1;;;3952:76:0;;;;;;;:::i;:::-;3885:5;4047:7;:15;;4039:65;;;;-1:-1:-1;;;4039:65:0;;;;;;;:::i;:::-;4115:12;:22;3899:246::o;18247:154::-;18318:8;;-1:-1:-1;;;;;18318:8:0;18304:10;:22;18296:71;;;;-1:-1:-1;;;18296:71:0;;;;;;;:::i;:::-;18378:15;;-1:-1:-1;;;18378:15:0;;-1:-1:-1;;;;;18378:3:0;:10;;;;:15;;18389:3;;18378:15;;;:::i;17447:194::-;17538:8;;-1:-1:-1;;;;;17538:8:0;17524:10;:22;17516:76;;;;-1:-1:-1;;;17516:76:0;;;;;;;:::i;:::-;17603:30;;-1:-1:-1;;;17603:30:0;;-1:-1:-1;;;;;17603:3:0;:15;;;;:30;;17619:5;;17626:6;;17603:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17447:194;;:::o;17647:193::-;17737:8;;-1:-1:-1;;;;;17737:8:0;17723:10;:22;17715:77;;;;-1:-1:-1;;;17715:77:0;;;;;;;:::i;:::-;17803:29;;-1:-1:-1;;;17803:29:0;;-1:-1:-1;;;;;17803:3:0;:16;;;;:29;;17820:3;;17825:6;;17803:29;;;:::i;5369:25::-;;;;:::o;8206:1321::-;8368:4;8447:19;:17;:19::i;:::-;-1:-1:-1;;;;;8393:3:0;:17;;8411:10;8423:19;:12;8440:1;8423:16;:19::i;:::-;8393:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:73;;8385:146;;;;-1:-1:-1;;;8385:146:0;;;;;;;:::i;:::-;8568:6;:13;8550:7;:14;:31;:70;;;;;8603:10;:17;8585:7;:14;:35;8550:70;:108;;;;;8642:9;:16;8624:7;:14;:34;8550:108;8542:186;;;;-1:-1:-1;;;8542:186:0;;;;;;;:::i;:::-;8747:14;;8739:73;;;;-1:-1:-1;;;8739:73:0;;;;;;;:::i;:::-;8849:23;:21;:23::i;:::-;8831:7;:14;:41;;8823:91;;;;-1:-1:-1;;;8823:91:0;;;;;;;:::i;:::-;8969:10;8927:21;8951:29;;;:17;:29;;;;;;8995:21;;8991:448;;9031:42;9076:23;9082:16;9076:5;:23::i;:::-;9031:68;-1:-1:-1;9152:20:0;9120:28;:52;;;;;;;;;;9112:150;;;;-1:-1:-1;;;9112:150:0;;;;;;;:::i;:::-;9315:21;9283:28;:53;;;;;;;;;;9275:152;;;;-1:-1:-1;;;9275:152:0;;;;;;;:::i;:::-;8991:448;;9458:61;9467:7;9476:6;9484:10;9496:9;9507:11;9458:8;:61::i;:::-;9451:68;8206:1321;-1:-1:-1;;;;;;;8206:1321:0:o;7634:564::-;7693:10;-1:-1:-1;;;;;7715:3:0;7693:26;;7685:94;;;;-1:-1:-1;;;7685:94:0;;;;;;;:::i;:::-;7790:24;7846:3;7825:7;7833:1;7825:10;;;;;;;;;;;;;:25;-1:-1:-1;;;;;7825:25:0;;;-1:-1:-1;;;;;7825:25:0;;;;;7863:26;7900:33;;;;;;;;;;;;;-1:-1:-1;;;7900:33:0;;;:10;7911:1;7900:13;;;;;;;;;;;;;:33;;;;7946:24;8007:3;7996:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;7981:9;7991:1;7981:12;;;;;;;;;;;;;:30;;;;8024:20;8067:1;8055:6;8062:1;8055:9;;;;;;;;;;;;;:13;;;;;8081:109;8090:7;8099:6;8107:10;8119:9;8184:3;8137:51;;;;;;;;:::i;:::-;;;;;;;;;;;;;8081:8;:109::i;10622:559::-;10701:23;10680:17;10686:10;10680:5;:17::i;:::-;:44;;;;;;;;;10672:122;;;;-1:-1:-1;;;10672:122:0;;;;;;;:::i;:::-;10805:25;10833:21;;;:9;:21;;;;;10896:5;;10833:21;;10805:25;10876:26;;:15;;:19;:26::i;:::-;10865:37;;10918:6;10913:185;10934:16;;;:23;10930:27;;10913:185;;;10979:107;10994:8;:16;;11011:1;10994:19;;;;;;;;;;;;;;;;;;11015:15;;;:18;;-1:-1:-1;;;;;10994:19:0;;;;11031:1;;11015:18;;;;;;;;;;;;;;11035:8;:19;;11055:1;11035:22;;;;;;;;;;;;;;;;;;10979:107;;;;;;;-1:-1:-1;;10979:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11035:22;10979:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11059:8;:18;;11078:1;11059:21;;;;;;;;;;;;;;;;;;10979:107;;;;;;;-1:-1:-1;;10979:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11059:21;10979:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11082:3;10979:14;:107::i;:::-;10959:3;;10913:185;;;-1:-1:-1;11108:12:0;;;:18;;;11142:31;;;;;;11157:10;;11123:3;;11142:31;:::i;17256:185::-;17344:8;;-1:-1:-1;;;;;17344:8:0;17330:10;:22;17322:73;;;;-1:-1:-1;;;17322:73:0;;;;;;;:::i;:::-;17406:27;;-1:-1:-1;;;17406:27:0;;-1:-1:-1;;;;;17406:3:0;:12;;;;:27;;17419:5;;17426:6;;17406:27;;;:::i;6766:94::-;6808:52;6766:94;:::o;20189:406::-;20246:10;20268:4;20246:27;20238:89;;;;-1:-1:-1;;;20238:89:0;;;;;;;:::i;:::-;16680:6;20346;:23;;20338:88;;;;-1:-1:-1;;;20338:88:0;;;;;;;:::i;:::-;16730:7;20445:6;:23;;20437:92;;;;-1:-1:-1;;;20437:92:0;;;;;;;:::i;:::-;20540:5;:14;;;20572:15;;20548:6;;20572:15;;;;;20189:406;:::o;13262:152::-;13335:14;;:::i;:::-;-1:-1:-1;13369:21:0;;;;:9;:21;;;;;;;;-1:-1:-1;;;;;13369:37:0;;;;:30;;:37;;;;;;13362:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13262:152;;;;;:::o;19310:202::-;19412:8;;-1:-1:-1;;;;;19412:8:0;19398:10;:22;19390:70;;;;-1:-1:-1;;;19390:70:0;;;;;;;:::i;:::-;19471:33;;-1:-1:-1;;;19471:33:0;;-1:-1:-1;;;;;19471:3:0;:9;;;;:33;;19481:6;;19489;;19497;;19471:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19310:202;;;:::o;3857:33::-;3885:5;3857:33;:::o;19855:51::-;;;;;;;;;;;;;;;:::o;19141:163::-;19216:8;;-1:-1:-1;;;;;19216:8:0;19202:10;:22;19194:72;;;;-1:-1:-1;;;19194:72:0;;;;;;;:::i;:::-;19277:19;;-1:-1:-1;;;19277:19:0;;-1:-1:-1;;;;;19277:3:0;:11;;;;:19;;19289:6;;19277:19;;;:::i;11553:639::-;11621:8;;-1:-1:-1;;;;;11621:8:0;:24;;:50;;-1:-1:-1;11663:8:0;;-1:-1:-1;;;;;11663:8:0;11649:10;:22;11621:50;11613:92;;;;-1:-1:-1;;;11613:92:0;;;;;;;:::i;:::-;11745:20;11724:17;11730:10;11724:5;:17::i;:::-;:41;;;;;;;;;11716:120;;;;-1:-1:-1;;;11716:120:0;;;;;;;:::i;:::-;11847:25;11875:21;;;:9;:21;;;;;11907:17;;;:24;;-1:-1:-1;;11907:24:0;;;;;11875:21;11942:199;11963:16;;;:23;11959:27;;11942:199;;;12008:121;12028:8;:16;;12045:1;12028:19;;;;;;;;;;;;;;;;;;12049:15;;;:18;;-1:-1:-1;;;;;12028:19:0;;;;12065:1;;12049:18;;;;;;;;;;;;;;12069:8;:19;;12089:1;12069:22;;;;;;;;;;;;;;;;;;12008:121;;;;;;;-1:-1:-1;;12008:121:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12069:22;12008:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12093:8;:18;;12112:1;12093:21;;;;;;;;;;;;;;;;;;12008:121;;;;;;;-1:-1:-1;;12008:121:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12093:21;12008:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12116:8;:12;;;12008:19;:121::i;:::-;-1:-1:-1;11988:3:0;;11942:199;;;;12156:28;12173:10;12156:28;;;;;;:::i;:::-;;;;;;;;11553:639;;:::o;15168:821::-;15282:20;15261:17;15267:10;15261:5;:17::i;:::-;:41;;;;;;;;;15253:93;;;;-1:-1:-1;;;15253:93:0;;;;;;;:::i;:::-;15357:25;15385:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;15443:24:0;;;;:17;;;:24;;;;;;15486:16;;;;:25;15478:80;;;;-1:-1:-1;;;15478:80:0;;;;;;;:::i;:::-;15607:19;;;;15582:45;;-1:-1:-1;;;15582:45:0;;15569:10;;-1:-1:-1;;;;;15582:3:0;:17;;;;:45;;15600:5;;15607:19;15582:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15569:58;;15644:7;15640:177;;;15688:17;;;;:28;;15710:5;15688:21;:28::i;:::-;15668:17;;;:48;15640:177;;;15773:21;;;;:32;;15799:5;15773:25;:32::i;:::-;15749:21;;;:56;15640:177;15829:23;;15848:4;-1:-1:-1;;15829:23:0;;;;;-1:-1:-1;;15863:25:0;15829:23;15863:25;;;;;;;15899:13;;:21;;;15938:43;;;;;;15947:5;;15954:10;;15863:25;;15899:21;;15938:43;:::i;:::-;;;;;;;;15168:821;;;;;;:::o;1109:249::-;1167:7;1190:6;1186:47;;-1:-1:-1;1220:1:0;1213:8;;1186:47;1257:5;;;1261:1;1257;:5;:1;1281:5;;;;;:10;1273:56;;;;-1:-1:-1;;;1273:56:0;;;;;;;:::i;:::-;1349:1;1109:249;-1:-1:-1;;;1109:249:0:o;1619:132::-;1677:7;1704:39;1708:1;1711;1704:39;;;;;;;;;;;;;;;;;:3;:39::i;394:181::-;452:7;484:5;;;508:6;;;;500:46;;;;-1:-1:-1;;;500:46:0;;;;;;;:::i;773:137::-;831:7;858:44;862:1;865;858:44;;;;;;;;;;;;;;;;;:3;:44::i;21122:338::-;21252:14;21290:6;21298:5;21305:9;21316:4;21322:3;21279:47;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;21279:47:0;;;;;;;;;21269:58;;21279:47;21269:58;;;;21367:5;21338:26;;;:18;:26;;;;;;:34;;-1:-1:-1;;21338:34:0;;;21269:58;-1:-1:-1;;;;;;21390:62:0;;;21269:58;;21390:62;;;;21424:5;;21431:9;;21442:4;;21448:3;;21390:62;:::i;:::-;;;;;;;;21122:338;;;;;;:::o;9535:1079::-;9700:4;9717:15;9735:31;9752:13;:11;:13::i;:::-;9735:12;;:16;:31::i;:::-;9717:49;;9777:13;9793:30;9808:14;:12;:14::i;:::-;9793:10;;:14;:30::i;:::-;9836:13;:15;;;;;;9777:46;-1:-1:-1;9862:27:0;;:::i;:::-;9892:427;;;;;;;;9920:13;;9892:427;;;;9958:10;-1:-1:-1;;;;;9892:427:0;;;;;9988:1;9892:427;;;;10013:7;9892:427;;;;10043:6;9892:427;;;;10076:10;9892:427;;;;10112:9;9892:427;;;;10148:10;9892:427;;;;10183:8;9892:427;;;;10216:1;9892:427;;;;10246:1;9892:427;;;;10272:5;9892:427;;;;;;10302:5;9892:427;;;;;9862:457;;10360:11;10332:9;:25;10342:11;:14;;;10332:25;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10332:39:0;;;;;-1:-1:-1;;;;;10332:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10332:39:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10332:39:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10332:39:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10332:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10332:39:0;;;;;;;;;;-1:-1:-1;;10332:39:0;;;;;;;;;;;10424:14;;10400:20;;;;;-1:-1:-1;;;;;10382:39:0;-1:-1:-1;10382:39:0;;;:17;:39;;;;;;;;:56;;;;10472:14;;10456:118;;;;;;10488:10;;10500:7;;10509:6;;10517:10;;10529:9;;10540:10;;10552:8;;10562:11;;10456:118;:::i;:::-;;;;;;;;10592:14;;9535:1079;-1:-1:-1;;;;;;;;9535:1079:0:o;11189:356::-;11324:18;:78;11364:6;11372:5;11379:9;11390:4;11396:3;11353:47;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11353:47:0;;;;;;;;;11343:58;;11353:47;11343:58;;;;11324:78;;;;;;;;;;-1:-1:-1;11324:78:0;;;;11323:79;11315:157;;;;-1:-1:-1;;;11315:157:0;;;;;;;:::i;:::-;11483:54;11501:6;11509:5;11516:9;11527:4;11533:3;11483:17;:54::i;21468:1210::-;21597:12;21622:14;21660:6;21668:5;21675:9;21686:4;21692:3;21649:47;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;21649:47:0;;;;;;;;;21639:58;;21649:47;21639:58;;;;21716:26;;;;:18;:26;;;;;;21639:58;;-1:-1:-1;21716:26:0;;21708:100;;;;-1:-1:-1;;;21708:100:0;;;;;;;:::i;:::-;21850:3;21827:19;:17;:19::i;:::-;:26;;21819:108;;;;-1:-1:-1;;;21819:108:0;;;;;;;:::i;:::-;21969:21;:3;16629:7;21969;:21::i;:::-;21946:19;:17;:19::i;:::-;:44;;21938:108;;;;-1:-1:-1;;;21938:108:0;;;;;;;:::i;:::-;22088:5;22059:26;;;:18;:26;;;;;:34;;-1:-1:-1;;22059:34:0;;;22144:23;;22106:21;;22140:179;;-1:-1:-1;22200:4:0;22140:179;;;22288:9;22272:27;;;;;;22302:4;22248:59;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22237:70;;22140:179;22392:12;22406:23;22433:6;-1:-1:-1;;;;;22433:11:0;22451:5;22458:8;22433:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22391:76;;;;22486:7;22478:81;;;;-1:-1:-1;;;22478:81:0;;;;;;;:::i;:::-;22604:6;-1:-1:-1;;;;;22577:63:0;22596:6;22577:63;22612:5;22619:9;22630:4;22636:3;22577:63;;;;;;;;;:::i;:::-;;;;;;;;22660:10;21468:1210;-1:-1:-1;;;;;;;;;21468:1210:0:o;1754:345::-;1840:7;1942:12;1935:5;1927:28;;;;-1:-1:-1;;;1927:28:0;;;;;;;;:::i;:::-;;1966:9;1982:1;1978;:5;;;;;;;1754:345;-1:-1:-1;;;;;1754:345:0:o;913:192::-;999:7;1035:12;1027:6;;;;1019:29;;;;-1:-1:-1;;;1019:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1071:5:0;;;913:192::o;20603:511::-;20730:7;20765:30;20789:5;;20765:19;:17;:19::i;:::-;:23;;:30::i;:::-;20758:3;:37;;20750:123;;;;-1:-1:-1;;;20750:123:0;;;;;;;:::i;:::-;20884:14;20922:6;20930:5;20937:9;20948:4;20954:3;20911:47;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;20911:47:0;;;;;;;;;20901:58;;20911:47;20901:58;;;;20970:26;;;;:18;:26;;;;;;:33;;-1:-1:-1;;20970:33:0;20999:4;20970:33;;;20901:58;-1:-1:-1;;;;;;21021:61:0;;;20901:58;;21021:61;;;;21054:5;;21061:9;;21072:4;;21078:3;;21021:61;:::i;:::-;;;;;;;;21100:6;20603:511;-1:-1:-1;;;;;;20603:511:0:o;22686:162::-;22825:15;22686:162;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;5:130::-;72:20;;-1:-1;;;;;75785:54;;78006:35;;77996:2;;78055:1;;78045: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;70920:18;70912:6;70909:30;70906:2;;;-1:-1;;70942:12;70906:2;3517:64;71015:9;70996:17;;-1:-1;;70992:33;71083:4;71073:15;3517:64;:::i;:::-;3508:73;;3601:6;3594:5;3587:21;3705:3;71083:4;3696:6;3629;3687:16;;3684:25;3681:2;;;3722:1;;3712:12;3681:2;76917:6;71083:4;3629:6;3625:17;71083:4;3663:5;3659:16;76894:30;76973:1;76955:16;;;71083:4;76955:16;76948: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:491::-;;;;5035:2;5023:9;5014:7;5010:23;5006:32;5003:2;;;-1:-1;;5041:12;5003:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5093:63;-1:-1;5193:2;5232:22;;72:20;97:33;72:20;97:33;:::i;:::-;4997:391;;5201:63;;-1:-1;;;5301:2;5340:22;;;;4305:20;;4997:391::o;5395:366::-;;;5516:2;5504:9;5495:7;5491:23;5487:32;5484:2;;;-1:-1;;5522:12;5484:2;5584:53;5629:7;5605:22;5584:53;:::i;:::-;5574:63;5674:2;5713:22;;;;4305:20;;-1:-1;;;5478:283::o;5768:1431::-;;;;;;6069:3;6057:9;6048:7;6044:23;6040:33;6037:2;;;-1:-1;;6076:12;6037:2;6134:17;6121:31;6172:18;;6164:6;6161:30;6158:2;;;-1:-1;;6194:12;6158:2;6224:78;6294:7;6285:6;6274:9;6270:22;6224:78;:::i;:::-;6214:88;;6367:2;6356:9;6352:18;6339:32;6325:46;;6172:18;6383:6;6380:30;6377:2;;;-1:-1;;6413:12;6377:2;6443:78;6513:7;6504:6;6493:9;6489:22;6443:78;:::i;:::-;6433:88;;6586:2;6575:9;6571:18;6558:32;6544:46;;6172:18;6602:6;6599:30;6596:2;;;-1:-1;;6632:12;6596:2;6662:88;6742:7;6733:6;6722:9;6718:22;6662:88;:::i;:::-;6652:98;;6815:2;6804:9;6800:18;6787:32;6773:46;;6172:18;6831:6;6828:30;6825:2;;;-1:-1;;6861:12;6825:2;6891:87;6970:7;6961:6;6950:9;6946:22;6891:87;:::i;:::-;6881:97;;7043:3;7032:9;7028:19;7015:33;7001:47;;6172:18;7060:6;7057:30;7054:2;;;-1:-1;;7090:12;7054:2;;7120:63;7175:7;7166:6;7155:9;7151:22;7120:63;:::i;:::-;7110:73;;;6031:1168;;;;;;;;:::o;7206:241::-;;7310:2;7298:9;7289:7;7285:23;7281:32;7278:2;;;-1:-1;;7316:12;7278:2;-1:-1;3268:20;;7272:175;-1:-1;7272:175::o;7702:263::-;;7817:2;7805:9;7796:7;7792:23;7788:32;7785:2;;;-1:-1;;7823:12;7785:2;-1:-1;4453:13;;7779:186;-1:-1;7779:186::o;7972:366::-;;;8093:2;8081:9;8072:7;8068:23;8064:32;8061:2;;;-1:-1;;8099:12;8061:2;4318:6;4305:20;8151:63;;8269:53;8314:7;8251:2;8294:9;8290:22;8269:53;:::i;:::-;8259:63;;8055:283;;;;;:::o;8345:360::-;;;8463:2;8451:9;8442:7;8438:23;8434:32;8431:2;;;-1:-1;;8469:12;8431:2;4318:6;4305:20;8521:63;;8621:2;8661:9;8657:22;3134:20;3159:30;3183:5;3159:30;:::i;:::-;8629:60;;;;8425:280;;;;;:::o;8712:733::-;;;;;;8879:3;8867:9;8858:7;8854:23;8850:33;8847:2;;;-1:-1;;8886:12;8847:2;4318:6;4305:20;8938:63;;9038:2;9078:9;9074:22;3134:20;3159:30;3183:5;3159:30;:::i;:::-;9046:60;-1:-1;9143:2;9180:22;;4581:20;76001:4;75990:16;;78494:33;;78484:2;;-1:-1;;78531:12;78484:2;8841:604;;;;-1:-1;9151:61;;9249:2;9288:22;;3268:20;;-1:-1;9357:3;9397:22;3268:20;;8841:604;-1:-1;;8841:604::o;10785:690::-;;10978:5;72188:12;73547:6;73542:3;73535:19;73584:4;;73579:3;73575:14;10990:93;;73584:4;11154:5;71549:14;-1:-1;11193:260;11218:6;11215:1;11212:13;11193:260;;;11279:13;;-1:-1;;;;;75785:54;10426:37;;9606:14;;;;73026;;;;75796:42;11233:9;11193:260;;;-1:-1;11459:10;;10909:566;-1:-1;;;;;10909:566::o;11510:920::-;;11730:5;72188:12;73547:6;73542:3;73535:19;73584:4;;73579:3;73575:14;11742:102;;;;73584:4;11901:6;11897:17;11892:3;11888:27;11876:39;;73584:4;11995:5;71549:14;-1:-1;12034:357;12059:6;12056:1;12053:13;12034:357;;;12121:9;12115:4;12111:20;12106:3;12099:33;9754:64;9814:3;12166:6;12160:13;9754:64;:::i;:::-;12370:14;;;;12180:90;-1:-1;73026:14;;;;12081:1;12074:9;12034:357;;;-1:-1;12414:10;;11652:778;-1:-1;;;;;;;11652:778::o;13434:690::-;;13627:5;72188:12;73547:6;73542:3;73535:19;73584:4;;73579:3;73575:14;13639:93;;73584:4;13803:5;71549:14;-1:-1;13842:260;13867:6;13864:1;13861:13;13842:260;;;13928:13;;14415:37;;10188:14;;;;73026;;;;13889:1;13882:9;13842:260;;14778:323;;14910:5;72188:12;73547:6;73542:3;73535:19;14993:52;15038:6;73584:4;73579:3;73575:14;73584:4;15019:5;15015:16;14993:52;:::i;:::-;71015:9;77693:14;-1:-1;;77689:28;15057:39;;;;73584:4;15057:39;;14858:243;-1:-1;;14858:243::o;37005:405::-;-1:-1;;;;;;75486:78;;14710:56;;72188:12;;37005:405;;15729:52;72188:12;37272:1;37263:11;;15762:4;15751:16;;15729:52;:::i;:::-;15793:16;;;;37272:1;15793:16;;37165:245;-1:-1;;;37165:245::o;37417:271::-;;15618:5;72188:12;15729:52;15774:6;15769:3;15762:4;15755:5;15751:16;15729:52;:::i;:::-;15793:16;;;;;37551:137;-1:-1;;37551:137::o;37695:659::-;-1:-1;;;20755:87;;20740:1;20861:11;;14415:37;;;;38206:12;;;14415:37;38317:12;;;37940:414::o;38361:520::-;29185:28;29165:49;;77804:2;77800:14;;;;-1:-1;;77800:14;29149:2;29233:12;;10684:58;38844:12;;;38578:303::o;38888:222::-;-1:-1;;;;;75785:54;;;;10426:37;;39015:2;39000:18;;38986:124::o;39117:349::-;-1:-1;;;;;75785:54;;;;10295:58;;39452:2;39437:18;;14415:37;39280:2;39265:18;;39251:215::o;39473:444::-;-1:-1;;;;;75785:54;;;10426:37;;75785:54;;;;39820:2;39805:18;;10426:37;39903:2;39888:18;;14415:37;;;;39656:2;39641:18;;39627:290::o;40264:544::-;-1:-1;;;;;75785:54;;;;10426:37;;40634:2;40619:18;;14415:37;;;;75320:13;75313:21;40711:2;40696:18;;14187:34;40794:2;40779:18;;14415:37;40469:3;40454:19;;40440:368::o;40815:840::-;;75796:42;;;;;75236:5;75785:54;10433:3;10426:37;14445:5;41257:2;41246:9;41242:18;14415:37;41092:3;41294:2;41283:9;41279:18;41272:48;41334:78;41092:3;41081:9;41077:19;41398:6;41334:78;:::i;:::-;41460:9;41454:4;41450:20;41445:2;41434:9;41430:18;41423:48;41485:76;41556:4;41547:6;41485:76;:::i;:::-;41477:84;;;14445:5;41640:3;41629:9;41625:19;14415:37;41063:592;;;;;;;;:::o;41662:1224::-;;42111:3;42133:17;42126:47;42187:108;42111:3;42100:9;42096:19;42281:6;42187:108;:::i;:::-;42343:9;42337:4;42333:20;42328:2;42317:9;42313:18;42306:48;42368:108;42471:4;42462:6;42368:108;:::i;:::-;42360:116;;42524:9;42518:4;42514:20;42509:2;42498:9;42494:18;42487:48;42549:128;42672:4;42663:6;42549:128;:::i;:::-;42541:136;;42725:9;42719:4;42715:20;42710:2;42699:9;42695:18;42688:48;42750:126;42871:4;42862:6;42750:126;:::i;42893:210::-;75320:13;;75313:21;14187:34;;43014:2;42999:18;;42985:118::o;43110:222::-;14415:37;;;43237:2;43222:18;;43208:124::o;43339:432::-;14415:37;;;43680:2;43665:18;;14415:37;;;;75320:13;75313:21;43757:2;43742:18;;14187:34;43516:2;43501:18;;43487:284::o;43778:548::-;14415:37;;;76001:4;75990:16;;;;44146:2;44131:18;;36958:35;44229:2;44214:18;;14415:37;44312:2;44297:18;;14415:37;43985:3;43970:19;;43956:370::o;44594:252::-;44736:2;44721:18;;77918:1;77908:12;;77898:2;;77924:9;77898:2;16072:65;;;44707:139;:::o;44853:310::-;;45000:2;45021:17;45014:47;45075:78;45000:2;44989:9;44985:18;45139:6;45075:78;:::i;45170:416::-;45370:2;45384:47;;;17062:2;45355:18;;;73535:19;17098:34;73575:14;;;17078:55;-1:-1;;;17153:12;;;17146:29;17194:12;;;45341:245::o;45593:416::-;45793:2;45807:47;;;17445:2;45778:18;;;73535:19;17481:34;73575:14;;;17461:55;17550:34;17536:12;;;17529:56;-1:-1;;;17605:12;;;17598:45;17662:12;;;45764:245::o;46016:416::-;46216:2;46230:47;;;17913:2;46201:18;;;73535:19;17949:34;73575:14;;;17929:55;-1:-1;;;18004:12;;;17997:31;18047:12;;;46187:245::o;46439:416::-;46639:2;46653:47;;;18298:2;46624:18;;;73535:19;18334:34;73575:14;;;18314:55;18403:34;18389:12;;;18382:56;-1:-1;;;18458:12;;;18451:25;18495:12;;;46610:245::o;46862:416::-;47062:2;47076:47;;;18746:2;47047:18;;;73535:19;18782:34;73575:14;;;18762:55;-1:-1;;;18837:12;;;18830:35;18884:12;;;47033:245::o;47285:416::-;47485:2;47499:47;;;19135:2;47470:18;;;73535:19;19171:34;73575:14;;;19151:55;-1:-1;;;19226:12;;;19219:31;19269:12;;;47456:245::o;47708:416::-;47908:2;47922:47;;;19520:2;47893:18;;;73535:19;19556:34;73575:14;;;19536:55;-1:-1;;;19611:12;;;19604:27;19650:12;;;47879:245::o;48131:416::-;48331:2;48345:47;;;19901:2;48316:18;;;73535:19;-1:-1;;;;;;;;;;;73575:14;;;19917:55;-1:-1;;;19992:12;;;19985:43;20047:12;;;48302:245::o;48554:416::-;48754:2;48768:47;;;20298:2;48739:18;;;73535:19;20334:34;73575:14;;;20314:55;20403:30;20389:12;;;20382:52;20453:12;;;48725:245::o;48977:416::-;49177:2;49191:47;;;21111:2;49162:18;;;73535:19;21147:29;73575:14;;;21127:50;21196:12;;;49148:245::o;49400:416::-;49600:2;49614:47;;;21447:2;49585:18;;;73535:19;21483:34;73575:14;;;21463:55;-1:-1;;;21538:12;;;21531:33;21583:12;;;49571:245::o;49823:416::-;50023:2;50037:47;;;21834:2;50008:18;;;73535:19;21870:34;73575:14;;;21850:55;-1:-1;;;21925:12;;;21918:28;21965:12;;;49994:245::o;50246:416::-;50446:2;50460:47;;;22216:2;50431:18;;;73535:19;-1:-1;;;;;;;;;;;73575:14;;;22232:55;22321:34;22307:12;;;22300:56;-1:-1;;;22376:12;;;22369:29;22417:12;;;50417:245::o;50669:416::-;50869:2;50883:47;;;22668:2;50854:18;;;73535:19;22704:34;73575:14;;;22684:55;-1:-1;;;22759:12;;;22752:30;22801:12;;;50840:245::o;51092:416::-;51292:2;51306:47;;;23052:2;51277:18;;;73535:19;23088:34;73575:14;;;23068:55;-1:-1;;;23143:12;;;23136:44;23199:12;;;51263:245::o;51515:416::-;51715:2;51729:47;;;23450:2;51700:18;;;73535:19;23486:34;73575:14;;;23466:55;-1:-1;;;23541:12;;;23534:43;23596:12;;;51686:245::o;51938:416::-;52138:2;52152:47;;;23847:2;52123:18;;;73535:19;23883:34;73575:14;;;23863:55;-1:-1;;;23938:12;;;23931:33;23983:12;;;52109:245::o;52361:416::-;52561:2;52575:47;;;24234:2;52546:18;;;73535:19;24270:34;73575:14;;;24250:55;24339:34;24325:12;;;24318:56;-1:-1;;;24394:12;;;24387:25;24431:12;;;52532:245::o;52784:416::-;52984:2;52998:47;;;24682:2;52969:18;;;73535:19;24718:34;73575:14;;;24698:55;-1:-1;;;24773:12;;;24766:36;24821:12;;;52955:245::o;53207:416::-;53407:2;53421:47;;;25072:2;53392:18;;;73535:19;25108:34;73575:14;;;25088:55;25177:34;25163:12;;;25156:56;-1:-1;;;25232:12;;;25225:25;25269:12;;;53378:245::o;53630:416::-;53830:2;53844:47;;;25520:2;53815:18;;;73535:19;25556:34;73575:14;;;25536:55;-1:-1;;;25611:12;;;25604:33;25656:12;;;53801:245::o;54053:416::-;54253:2;54267:47;;;25907:2;54238:18;;;73535:19;25943:34;73575:14;;;25923:55;-1:-1;;;25998:12;;;25991:28;26038:12;;;54224:245::o;54476:416::-;54676:2;54690:47;;;26289:2;54661:18;;;73535:19;26325:34;73575:14;;;26305:55;-1:-1;;;26380:12;;;26373:29;26421:12;;;54647:245::o;54899:416::-;55099:2;55113:47;;;26672:2;55084:18;;;73535:19;26708:34;73575:14;;;26688:55;26777:26;26763:12;;;26756:48;26823:12;;;55070:245::o;55322:416::-;55522:2;55536:47;;;27074:2;55507:18;;;73535:19;27110:34;73575:14;;;27090:55;-1:-1;;;27165:12;;;27158:34;27211:12;;;55493:245::o;55745:416::-;55945:2;55959:47;;;27462:2;55930:18;;;73535:19;27498:34;73575:14;;;27478:55;-1:-1;;;27553:12;;;27546:38;27603:12;;;55916:245::o;56168:416::-;56368:2;56382:47;;;27854:2;56353:18;;;73535:19;-1:-1;;;;;;;;;;;73575:14;;;27870:55;27959:31;27945:12;;;27938:53;28010:12;;;56339:245::o;56591:416::-;56791:2;56805:47;;;28261:2;56776:18;;;73535:19;28297:34;73575:14;;;28277:55;-1:-1;;;28352:12;;;28345:29;28393:12;;;56762:245::o;57014:416::-;57214:2;57228:47;;;28644:2;57199:18;;;73535:19;28680:34;73575:14;;;28660:55;28749:34;28735:12;;;28728:56;-1:-1;;;28804:12;;;28797:46;28862:12;;;57185:245::o;57437:416::-;57637:2;57651:47;;;29484:2;57622:18;;;73535:19;29520:34;73575:14;;;29500:55;-1:-1;;;29575:12;;;29568:38;29625:12;;;57608:245::o;57860:416::-;58060:2;58074:47;;;29876:2;58045:18;;;73535:19;29912:34;73575:14;;;29892:55;29981:25;29967:12;;;29960:47;30026:12;;;58031:245::o;58283:416::-;58483:2;58497:47;;;30277:2;58468:18;;;73535:19;30313:34;73575:14;;;30293:55;-1:-1;;;30368:12;;;30361:25;30405:12;;;58454:245::o;58706:416::-;58906:2;58920:47;;;30656:2;58891:18;;;73535:19;30692:34;73575:14;;;30672:55;-1:-1;;;30747:12;;;30740:34;30793:12;;;58877:245::o;59129:416::-;59329:2;59343:47;;;31044:2;59314:18;;;73535:19;31080:34;73575:14;;;31060:55;-1:-1;;;31135:12;;;31128:36;31183:12;;;59300:245::o;59552:416::-;59752:2;59766:47;;;31434:2;59737:18;;;73535:19;31470:34;73575:14;;;31450:55;-1:-1;;;31525:12;;;31518:29;31566:12;;;59723:245::o;59975:416::-;60175:2;60189:47;;;31817:2;60160:18;;;73535:19;31853:31;73575:14;;;31833:52;31904:12;;;60146:245::o;60398:416::-;60598:2;60612:47;;;32155:2;60583:18;;;73535:19;32191:34;73575:14;;;32171:55;-1:-1;;;32246:12;;;32239:35;32293:12;;;60569:245::o;60821:416::-;61021:2;61035:47;;;32544:2;61006:18;;;73535:19;-1:-1;;;;;;;;;;;73575:14;;;32560:55;32649:31;32635:12;;;32628:53;32700:12;;;60992:245::o;61244:416::-;61444:2;61458:47;;;32951:2;61429:18;;;73535:19;32987:34;73575:14;;;32967:55;-1:-1;;;33042:12;;;33035:30;33084:12;;;61415:245::o;61667:416::-;61867:2;61881:47;;;33335:2;61852:18;;;73535:19;33371:34;73575:14;;;33351:55;-1:-1;;;33426:12;;;33419:37;33475:12;;;61838:245::o;62090:416::-;62290:2;62304:47;;;33726:2;62275:18;;;73535:19;33762:34;73575:14;;;33742:55;33831:34;33817:12;;;33810:56;-1:-1;;;33886:12;;;33879:33;33931:12;;;62261:245::o;62513:416::-;62713:2;62727:47;;;34182:2;62698:18;;;73535:19;34218:34;73575:14;;;34198:55;34287:34;34273:12;;;34266:56;-1:-1;;;34342:12;;;34335:26;34380:12;;;62684:245::o;62936:416::-;63136:2;63150:47;;;34631:2;63121:18;;;73535:19;34667:34;73575:14;;;34647:55;-1:-1;;;34722:12;;;34715:38;34772:12;;;63107:245::o;63359:416::-;63559:2;63573:47;;;35023:2;63544:18;;;73535:19;35059:34;73575:14;;;35039:55;-1:-1;;;35114:12;;;35107:41;35167:12;;;63530:245::o;63782:416::-;63982:2;63996:47;;;35418:2;63967:18;;;73535:19;35454:34;73575:14;;;35434:55;-1:-1;;;35509:12;;;35502:40;35561:12;;;63953:245::o;64205:416::-;64405:2;64419:47;;;35812:2;64390:18;;;73535:19;35848:34;73575:14;;;35828:55;-1:-1;;;35903:12;;;35896:28;35943:12;;;64376:245::o;64628:318::-;36241:23;;75320:13;75313:21;14187:34;;36409:4;36398:16;;;36392:23;75320:13;75313:21;36463:14;;;14187:34;36558:4;36547:16;;;36541:23;36618:14;;;14415:37;;;;64803:2;64788:18;;64774:172::o;65182:1888::-;14415:37;;;-1:-1;;;;;75785:54;;65972:2;65957:18;;10295:58;65799:3;66009:2;65994:18;;65987:48;;;65182:1888;;66049:108;65784:19;;;66143:6;66049:108;:::i;:::-;66041:116;;66205:9;66199:4;66195:20;66190:2;66179:9;66175:18;66168:48;66230:108;66333:4;66324:6;66230:108;:::i;:::-;66222:116;;66387:9;66381:4;66377:20;66371:3;66360:9;66356:19;66349:49;66412:128;66535:4;66526:6;66412:128;:::i;:::-;66404:136;;66589:9;66583:4;66579:20;66573:3;66562:9;66558:19;66551:49;66614:126;66735:4;66726:6;66614:126;:::i;:::-;66606:134;;14445:5;66819:3;66808:9;66804:19;14415:37;14445:5;66903:3;66892:9;66888:19;14415:37;66957:9;66951:4;66947:20;66941:3;66930:9;66926:19;66919:49;66982:78;67055:4;67046:6;66982:78;:::i;:::-;66974:86;65770:1300;-1:-1;;;;;;;;;;;;65770:1300::o;67077:1092::-;14415:37;;;-1:-1;;;;;75785:54;;;;67581:2;67566:18;;10426:37;67664:2;67649:18;;14415:37;;;;67747:2;67732:18;;14415:37;;;;67830:3;67815:19;;14415:37;;;;75796:42;67899:19;;14415:37;67998:3;67983:19;;14415:37;75320:13;75313:21;68076:3;68061:19;;14187:34;75320:13;75313:21;68154:3;68139:19;;14187:34;67416:3;67401:19;;67387:782::o;68176:728::-;;14445:5;14422:3;14415:37;68425:3;68544:2;68533:9;68529:18;68522:48;68584:78;68425:3;68414:9;68410:19;68648:6;68584:78;:::i;:::-;68710:9;68704:4;68700:20;68695:2;68684:9;68680:18;68673:48;68735:76;68806:4;68797:6;68735:76;:::i;:::-;68727:84;;;14445:5;68890:2;68879:9;68875:18;14415:37;68396:508;;;;;;;:::o;68911:333::-;14415:37;;;69230:2;69215:18;;14415:37;69066:2;69051:18;;69037:207::o;69251:256::-;69313:2;69307:9;69339:17;;;69414:18;69399:34;;69435:22;;;69396:62;69393:2;;;69471:1;;69461:12;69393:2;69313;69480:22;69291:216;;-1:-1;69291:216::o;69514:304::-;;69673:18;69665:6;69662:30;69659:2;;;-1:-1;;69695:12;69659:2;-1:-1;69740:4;69728:17;;;69793:15;;69596:222::o;76990:268::-;77055:1;77062:101;77076:6;77073:1;77070:13;77062:101;;;77143:11;;;77137:18;77124:11;;;77117:39;77098:2;77091:10;77062:101;;;77178:6;77175:1;77172:13;77169:2;;;-1:-1;;77055:1;77225:16;;77218:27;77039:219::o;77947:117::-;-1:-1;;;;;75785:54;;78006:35;;77996:2;;78055:1;;78045:12;78071:111;78152:5;75320:13;75313:21;78130:5;78127:32;78117:2;;78173:1;;78163:12

Swarm Source

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