Contract 0xbcd82b459063ab80518b391a7e2a054f022dca67

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x5fa2137393170f2e434329e63797c7d8496e216a0324fa9e17214fe43376b2cbApprove112059152021-09-24 22:50:411 day 7 hrs ago0x057c1328ea18652770a4ace16c15dfad9b2d1dc9 IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.00022516
0xa6e5dd6c00561a60b4ebab157ccd0dbdfb516e49dba3608a9413cffa3fb0d185Deposit112037952021-09-24 21:04:361 day 9 hrs ago0x27ae592f4237402a98f93e4e8facd181d691b6ea IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.005373105
0xa895299782750f904ad9d296466ae00173ebdf2df9fb3cc726b7e6f734ca7a35Harvest Reward111842242021-09-24 4:42:372 days 1 hr ago0x07713db8bf16aaa318e226c63c459a3d91cb552b IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.00325783
0x22aa24ca9381295f57100df649f7f2a774dbfb23e3659127a2be039ea6fe589dApprove111389412021-09-22 14:42:473 days 15 hrs ago0xeb8f9a12e137adde283bf66d9a4cb8556d8a5fca IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.00022516
0x6536512e3b5f6130fd93aea008c8f8d0d585f5965b1a622f31d224730ca3383eDeposit111030022021-09-21 8:33:284 days 22 hrs ago0x24f62c2df1d9c321985a3581561f8ba22961635c IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.00453165
0x2d0cfde525e3840bc780d0c5a79c69bb029aeb8454808442c202c331f32c55ebHarvest Reward110997552021-09-21 5:51:055 days 46 mins ago0x07713db8bf16aaa318e226c63c459a3d91cb552b IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.00325783
0x597b6dac69bc738fc9f528c8ba56ad25a3b2601ab2e8e48ab70d8a8a56447859Harvest Reward110824812021-09-20 15:24:415 days 15 hrs ago0x8c1271bd580c224b378c0df97ee8cc07070f28bc IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.00362354
0xb9efe891042cfab78a86fdde25d1301ad0bde8f01719c01521ea16bd5c85b451Harvest Reward110694302021-09-20 4:29:456 days 2 hrs ago0x07713db8bf16aaa318e226c63c459a3d91cb552b IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.00307507
0x2a216f7f6c83c01d079ff1d06ae38907d4d1a9a0a13648ae3a17976af55b6e68Approve110596722021-09-19 20:21:486 days 10 hrs ago0xe136ca313f994abab77a8479ea5bdbfd76eca1c8 IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.00022516
0xb06458f67385184cd4d0d41dd39da9c014565bea8358903ade87be501c7f179cHarvest Reward109932622021-09-17 12:41:418 days 17 hrs ago0x07713db8bf16aaa318e226c63c459a3d91cb552b IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.003806485
0xc9d0ee4a9e9e97e5ec8247afbff735dd9b366d4318c77a9f87049afe36a9dc36Harvest Reward109718172021-09-16 18:48:389 days 11 hrs ago0x60fa94cd6b184e97c9bd631f8417e6302b881553 IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.00417256
0x0e5d96268244f710f8c7a6a86d5e865dd72025288b8ead84aa616810666db673Harvest Reward109465862021-09-15 21:43:5310 days 8 hrs ago0x8c1271bd580c224b378c0df97ee8cc07070f28bc IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.00417256
0x6039f97f0fa8a169b8d9944ff8d42a44286b4be39f300621dc0900a2a7aa8312Transfer Multipl...109369382021-09-15 13:41:2810 days 16 hrs ago0xdec6ba1d2c15be2aed134b49fb3b795334832f21 IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.000741035
0x3a92e794d191804d78428dae48d7cad72d1189e2f91f6d2b7e7e10f21b22c3e5Transfer109359512021-09-15 12:52:0710 days 17 hrs ago0xf953f058d8be5111ce0828b37666751b84a55606 IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.000188005
0x905f92b1d2acdc2efedd8a172e8f588460399db5bd690c6deb456843a8108f2fDeposit109321142021-09-15 9:38:5810 days 20 hrs ago0x24f62c2df1d9c321985a3581561f8ba22961635c IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.00489805
0x0a0dd4d9740a19700dfd5b655468bc400e809ba289b411ccfccbefdc5dcd5df6Harvest Reward108882142021-09-13 20:55:2212 days 9 hrs ago0x361772671297a0db13fe84967ff1d0d792305a2a IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.01165608
0x6af43d3dc7bb1969e8759688f12941aef2f43a7b87ecc08b0029bbdba708f3a2Harvest Reward108700702021-09-13 5:45:0913 days 52 mins ago0x07713db8bf16aaa318e226c63c459a3d91cb552b IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.003806485
0x0e109adbbaccae28435299c81a5595a7055807de235d5e20512d68724bac498fDeposit108692712021-09-13 5:05:1213 days 1 hr ago0x27ae592f4237402a98f93e4e8facd181d691b6ea IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.0088696
0xbc2dab44b99f5ead01a11bc65fcb10ac9d8cb4c7aee1557609ce29fd22b90349Harvest Reward108664822021-09-13 2:45:4413 days 3 hrs ago0x9c03d1b1b48f91e240ce31bf10c90a37a297311a IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.00354854
0x8d8637c6b53d8621f17cec7bb7835f2932863b1de9e3f446f0561d409f915fc4Harvest Reward108552992021-09-12 17:25:4513 days 13 hrs ago0x60fa94cd6b184e97c9bd631f8417e6302b881553 IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.00417256
0x3fe4f15152f062c70e0cf085b0c632bab60716e03ddbd0e7fdd370a1d83f8efaApprove108490432021-09-12 12:12:4513 days 18 hrs ago0x8cc7bc33f5188b1fb683bedc4dbffa77b136833b IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.00022372
0xa584caad779ee6e644765ee7aae28127e2f09ac36bc15839383dc516c88b3634Harvest Reward108271092021-09-11 17:50:2114 days 12 hrs ago0x8c1271bd580c224b378c0df97ee8cc07070f28bc IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.003806485
0xd82548ddeb0dc3c41c18110a98740e823473994a19c0fb418245e516d420ae25Approve108249022021-09-11 15:59:3614 days 14 hrs ago0x03f829d2c57389e3eb35a839fee3c28f83ba1eda IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.000270192
0x546e3e162c87e5b5ec9bf91f9d0866a2d768addf6a07b2cf9ee0b9ba996ab177Harvest Reward108154642021-09-11 8:03:5714 days 22 hrs ago0x07713db8bf16aaa318e226c63c459a3d91cb552b IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.003440655
0x6e634ecc83293cbf1db366f1154d56193a2dd3f8831f3ab5ef29fcf8f1d99f7eHarvest Reward108025762021-09-10 21:11:2815 days 9 hrs ago0x9c03d1b1b48f91e240ce31bf10c90a37a297311a IN  0xbcd82b459063ab80518b391a7e2a054f022dca670 BNB0.00409756
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MiningPool

Compiler Version
v0.8.3+commit.8d00100c

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-04-02
*/

// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.3;

interface IERC20 {
    function balanceOf(address account) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function totalSupply() external view returns (uint256);

    function burn(uint256 value) external returns (bool);

    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function token0() external view returns (address);
    function token1() external view returns (address);
}

abstract contract PoolRewardToken {
    mapping (address => uint256) public _balanceOf;

//    string public constant name = "test pool token";
//    string public constant symbol = "tstprt";
    string public constant name = "Modern Liquidity Token";
    string public constant symbol = "MLT";
    uint8 public constant decimals = 18;
    uint256 public totalSupply = 0;
    mapping(address => mapping(address => uint256)) private _allowances;

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    function balanceOf(address account) external view returns (uint256 value) {
        return _balanceOf[account];
    }

    function transfer(address to, uint256 value) external returns (bool success) {
        require(_balanceOf[msg.sender] >= value);

        _balanceOf[msg.sender] -= value;  // deduct from sender's balance
        _balanceOf[to] += value;          // add to recipient's balance
        emit Transfer(msg.sender, to, value);
        return true;
    }

    function transferMultiple(address[] memory to, uint256[] memory values) external returns (bool success) {
        require(to.length == values.length);

        for (uint256 i = 0; i < to.length; i++) {
            require(_balanceOf[msg.sender] >= values[i]);

            _balanceOf[msg.sender] -= values[i];
            _balanceOf[to[i]] += values[i];
            emit Transfer(msg.sender, to[i], values[i]);
        }
        return true;
    }

    function allowance(address owner, address spender) external view returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 value) external returns (bool success) {
        _allowances[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }

    function transferFrom(address from, address to, uint256 value) external returns (bool success) {
        require(value <= _balanceOf[from]);
        require(value <= _allowances[from][msg.sender]);

        _balanceOf[from] -= value;
        _balanceOf[to] += value;
        _allowances[from][msg.sender] -= value;
        emit Transfer(from, to, value);
        return true;
    }

    function mint(address to, uint256 value) internal {
        totalSupply += value;
        _balanceOf[to] += value;
        emit Transfer(address(0), to, value);
    }
}

abstract contract Ownable {
    address public owner;
    address public newOwner;

    event OwnershipTransferred(address indexed _from, address indexed _to);

    constructor() {
        owner = msg.sender;
    }

    modifier onlyOwner() {
        if (msg.sender == owner)
            _;
    }

    function transferOwnership(address newOwner_) onlyOwner external {
        require(newOwner_ != address(0));
        newOwner = newOwner_;
    }

    function acceptOwnership() external {
        require(msg.sender == newOwner);
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
        newOwner = address(0);
    }
}

contract MiningPool is PoolRewardToken, Ownable {
    uint256 public constant MAX_SUPPLY = 35000000 * 10**18;
    uint8 public constant INITIAL_BLOCK_STEP = 10;

    struct Investor {
        uint256[14] deposits;
        uint256 lastZeroPtr;
        uint256[14] depositUnlockTime;
        bool initialized;
    }

    struct BlockInfo {
        uint256[14] totalDeposits;
        uint256[14] poolRewards;
        uint8 blockStep;
        uint256 pointLength;
        uint256 pointBlock;
        uint256 pointStartEthereumBlock;
        uint256 pointEndEthereumBlock;
    }

    uint8 public BLOCK_STEP = INITIAL_BLOCK_STEP;
    uint256 public deployBlock;
    uint256 public lastRecordedBlock;
    mapping (uint256 => BlockInfo) public history;
    uint256 public arrayPointer;
    mapping (address => Investor) public investors;
    bool public miningFinished = false;
    uint256 public feesBalance;

    IERC20[14] public tokens;
    uint256 public feeAmount = 25714285714285717;  // 1.26 / .98 * .02
    uint256[14] public poolRewards = [10**18 * 12 / 10, 10**18 * 6 / 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];  // total: 1.26 tkns
    uint256[14] public totalDeposits = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
    uint256[14] public lockDurations = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
    uint256[14] public minDeposits = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];


    event Deposit(address indexed investor, uint256 indexed token, uint256 value);
    event Harvest(address indexed investor, uint256 value);
    event Withdraw(address indexed investor, uint256 indexed token, uint256 value);
    event FeesSpent(address indexed to, uint256 value);
    event StepChanged(uint8 newValue);
    event LockDurationChanged(uint256[14] values);
    event PoolRewardsChanged(uint256[14] values);
    event MinDepositsChanged(uint256[14] values);

    constructor() {
        deployBlock = block.number;
        emit StepChanged(BLOCK_STEP);
        emit LockDurationChanged(lockDurations);

        history[0].poolRewards = poolRewards;
        history[0].blockStep = BLOCK_STEP;
        history[0].pointStartEthereumBlock = history[0].pointEndEthereumBlock = deployBlock;

        arrayPointer++;
    }

    function setTokenAddress(uint index, address token) external onlyOwner {
        require(address(tokens[index]) == address(0), "Address was already set");
        tokens[index] = IERC20(token);
    }

    function setBlockStep(uint8 value) external onlyOwner {
        recordHistory();
        BLOCK_STEP = value;
        emit StepChanged(value);
    }

    function setLockDurations(uint256[14] memory v) external onlyOwner {
        lockDurations = v;
        emit LockDurationChanged(v);
    }

    function setMinDeposits(uint256[14] memory v) external onlyOwner {
        minDeposits = v;
        emit MinDepositsChanged(v);
    }

    // subtract 2% when setting pool rewards
    function setPoolRewards(uint256[14] memory v) public onlyOwner {
        recordHistory();
        uint256 sum = v[0] + v[1] + v[2] + v[3] + v[4] + v[5] + v[6] + v[7] + v[8] + v[9] + v[10] + v[11] + v[12] + v[13];
        feeAmount = sum * 2 / 98;  // 2% from given 98%
        poolRewards = v;
        emit PoolRewardsChanged(v);
    }

    function currentBlock() public view returns (uint256) {
        BlockInfo memory prevBlock = history[arrayPointer-1];
        return prevBlock.pointBlock + (block.number - prevBlock.pointEndEthereumBlock) / BLOCK_STEP;
    }

    function getBlockTotalDeposits(uint256 ptr) public view returns (uint256[14] memory) {
        if (ptr >= arrayPointer)
            return totalDeposits;
        return history[ptr].totalDeposits;
    }

    function getPoolRewards(uint256 ptr) public view returns (uint256[14] memory) {
        if (miningFinished)
            return [uint256(0), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
        if (ptr >= arrayPointer)
            return poolRewards;
        return history[ptr].poolRewards;
    }

    function getPointLength(uint256 ptr) public view returns (uint256) {  //
        if (ptr >= arrayPointer)
            return currentBlock() - history[arrayPointer-1].pointBlock;
        return history[ptr].pointLength;
    }

    function recordHistory() public returns (bool) {
        if (recordHistoryNeeded()) {
            _recordHistory();
            return true;
        }
        return false;
    }

    function recordHistoryNeeded() public view returns (bool) {
        return !miningFinished && lastRecordedBlock < currentBlock();
    }

    function _recordHistory() internal {
        // miningFinished check is in recordHistoryNeeded();

        uint256 currentBlk = currentBlock();

        BlockInfo memory prevBlock = history[arrayPointer-1];
        uint256 pointLength = currentBlk - prevBlock.pointBlock;
        history[arrayPointer].totalDeposits = totalDeposits;
        history[arrayPointer].poolRewards = poolRewards;
        history[arrayPointer].pointLength = pointLength;
        history[arrayPointer].blockStep = BLOCK_STEP;
        history[arrayPointer].pointBlock = currentBlk;
        history[arrayPointer].pointStartEthereumBlock = prevBlock.pointEndEthereumBlock;
        history[arrayPointer].pointEndEthereumBlock = prevBlock.pointEndEthereumBlock + pointLength * BLOCK_STEP;

        feesBalance += pointLength * feeAmount;

        arrayPointer++;
        lastRecordedBlock = currentBlk;
    }

    function getRewardSum(address sender) public view returns (uint256) {
        Investor memory investor = investors[sender];

        if (!investor.initialized || !canHarvest(sender))
            return 0;

        uint256[14] memory deposits = investor.deposits;

        uint256 reward = 0;

        for (uint256 i = investor.lastZeroPtr; i <= arrayPointer; i++) {
            uint256[14] memory poolRewards_ = getPoolRewards(i);
            uint256[14] memory totalDeposits_ = getBlockTotalDeposits(i);
            uint256 pointLength = getPointLength(i);
            for (uint256 j = 0; j < 14; j++) {
                uint256 td = totalDeposits_[j];
                if (td == 0) continue;
                uint256 pr = poolRewards_[j];
                uint256 d = deposits[j];
                reward += pr * pointLength * d / td;
            }
        }

        return reward;
    }

    function _deposit(uint256 tokenIndex, uint256 amount) internal {
        require(amount > 0, "Invalid amount");
        require(amount >= minDeposits[tokenIndex] || msg.sender == owner, "Amount is too little");

        if (canHarvest(msg.sender))
            harvestReward();  // history is recorded while harvesting
        else
            recordHistory();

        require(tokens[tokenIndex].allowance(msg.sender, address(this)) >= amount, "Insufficient token allowance");
        investors[msg.sender].deposits[tokenIndex] += amount;
        totalDeposits[tokenIndex] += amount;
        tokens[tokenIndex].transferFrom(msg.sender, address(this), amount);

        investors[msg.sender].initialized = true;
        investors[msg.sender].lastZeroPtr = arrayPointer;
        investors[msg.sender].depositUnlockTime[tokenIndex] = block.timestamp + lockDurations[tokenIndex];
        emit Deposit(msg.sender, tokenIndex, amount);
    }

    function deposit(uint256 tokenIndex, uint256 amount) external {
        require(tokenIndex < 14, "Invalid token index");
        _deposit(tokenIndex, amount);
    }

    function canHarvest(address sender) public view returns (bool) {
        Investor memory investor = investors[sender];
        return investor.deposits[0] + investor.deposits[1] +
               investor.deposits[2] + investor.deposits[3] +
               investor.deposits[4] + investor.deposits[5] +
               investor.deposits[6] + investor.deposits[7] +
               investor.deposits[8] + investor.deposits[9] +
               investor.deposits[10] + investor.deposits[11] +
               investor.deposits[12] + investor.deposits[13] > 0;
    }

    function harvestReward() public returns (uint256) {
        require(canHarvest(msg.sender));

        if (miningFinished)
            return 0;

        recordHistory();

        uint256 reward = getRewardSum(msg.sender);
        if (reward > MAX_SUPPLY - totalSupply)
            reward = MAX_SUPPLY - totalSupply;

        if (reward > 0)
            mint(msg.sender, reward);
        investors[msg.sender].lastZeroPtr = arrayPointer;
        emit Harvest(msg.sender, reward);

        if (totalSupply == MAX_SUPPLY) {
            recordHistory();
            miningFinished = true;
        }

        return reward;
    }

    function _withdraw(uint256 tokenIndex) internal returns (uint256 reward, uint256 value) {
        require(investors[msg.sender].deposits[tokenIndex] > 0, "Nothing to withdraw");
        require(investors[msg.sender].depositUnlockTime[tokenIndex] < block.timestamp, "This token could not be withdrawn right now, please wait for unlock");

        reward = harvestReward();
        value = investors[msg.sender].deposits[tokenIndex];

        emit Withdraw(msg.sender, tokenIndex, value);

        totalDeposits[tokenIndex] -= value;
        investors[msg.sender].deposits[tokenIndex] = 0;
        tokens[tokenIndex].transfer(msg.sender, value);
    }

    function withdraw(uint256 tokenIndex) external {
        require(tokenIndex < 14, "Invalid token index");
        _withdraw(tokenIndex);
    }

    function sendFeeFunds(address to, uint256 amount) external onlyOwner {
        require(feesBalance >= amount, "Insufficient funds");

        _balanceOf[to] += amount;
        feesBalance -= amount;
        emit Transfer(address(this), to, amount);
        emit FeesSpent(to, amount);
    }

    function getInvestor(address addr) external view returns (uint256[14] memory deposits, uint256 lastZeroPtr, uint256[14] memory depositUnlockTime, bool initialized) {
        Investor memory investor = investors[addr];
        deposits = investor.deposits;
        lastZeroPtr = investor.lastZeroPtr;
        depositUnlockTime = investor.depositUnlockTime;
        initialized = investor.initialized;
    }

    function burn(uint256 value) external returns (bool success) {
        require(value <= _balanceOf[msg.sender]);
        totalSupply -= value;
        _balanceOf[msg.sender] -= value;
        if(miningFinished && totalSupply < MAX_SUPPLY)
            miningFinished = false;
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"investor","type":"address"},{"indexed":true,"internalType":"uint256","name":"token","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"FeesSpent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"investor","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Harvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[14]","name":"values","type":"uint256[14]"}],"name":"LockDurationChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[14]","name":"values","type":"uint256[14]"}],"name":"MinDepositsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[14]","name":"values","type":"uint256[14]"}],"name":"PoolRewardsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"newValue","type":"uint8"}],"name":"StepChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"investor","type":"address"},{"indexed":true,"internalType":"uint256","name":"token","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"BLOCK_STEP","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INITIAL_BLOCK_STEP","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"arrayPointer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"canHarvest","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deployBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feesBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ptr","type":"uint256"}],"name":"getBlockTotalDeposits","outputs":[{"internalType":"uint256[14]","name":"","type":"uint256[14]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getInvestor","outputs":[{"internalType":"uint256[14]","name":"deposits","type":"uint256[14]"},{"internalType":"uint256","name":"lastZeroPtr","type":"uint256"},{"internalType":"uint256[14]","name":"depositUnlockTime","type":"uint256[14]"},{"internalType":"bool","name":"initialized","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ptr","type":"uint256"}],"name":"getPointLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ptr","type":"uint256"}],"name":"getPoolRewards","outputs":[{"internalType":"uint256[14]","name":"","type":"uint256[14]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"getRewardSum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"harvestReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"history","outputs":[{"internalType":"uint8","name":"blockStep","type":"uint8"},{"internalType":"uint256","name":"pointLength","type":"uint256"},{"internalType":"uint256","name":"pointBlock","type":"uint256"},{"internalType":"uint256","name":"pointStartEthereumBlock","type":"uint256"},{"internalType":"uint256","name":"pointEndEthereumBlock","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"investors","outputs":[{"internalType":"uint256","name":"lastZeroPtr","type":"uint256"},{"internalType":"bool","name":"initialized","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRecordedBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lockDurations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"minDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"miningFinished","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"newOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recordHistory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recordHistoryNeeded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sendFeeFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"value","type":"uint8"}],"name":"setBlockStep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[14]","name":"v","type":"uint256[14]"}],"name":"setLockDurations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[14]","name":"v","type":"uint256[14]"}],"name":"setMinDeposits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[14]","name":"v","type":"uint256[14]"}],"name":"setPoolRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"address","name":"token","type":"address"}],"name":"setTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokens","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"totalDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"transferMultiple","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenIndex","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526000600155600a600460146101000a81548160ff021916908360ff1602179055506000600a60006101000a81548160ff021916908315150217905550665b5b01b1a72495601a55604051806101c001604052806710a741a46278000067ffffffffffffffff16815260200166d529ae9e86000067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250601b90600e62000162929190620004f3565b50604051806101c00160405280600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff16815250602990600e6200020b92919062000544565b50604051806101c00160405280600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff16815250603790600e620002b492919062000544565b50604051806101c00160405280600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff16815250604590600e6200035d92919062000544565b503480156200036b57600080fd5b5033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550436005819055507fdf9b689ccccd0af9869ac3bd73ef3efb636ade663455d33b9c1e46aa8802f75e600460149054906101000a900460ff16604051620003f49190620006b5565b60405180910390a17f4d1fffb260eb6304dffb0e0229ccb1619308617b93d226b6168c6f9f3c20526460376040516200042e919062000697565b60405180910390a1601b60076000808152602001908152602001600020600e0190600e6200045e9291906200058e565b50600460149054906101000a900460ff1660076000808152602001908152602001600020601c0160006101000a81548160ff021916908360ff1602179055506005546007600080815260200190815260200160002060200181905560076000808152602001908152602001600020601f018190555060086000815480929190620004e8906200073e565b9190505550620007dd565b82600e810192821562000531579160200282015b8281111562000530578251829067ffffffffffffffff1690559160200191906001019062000507565b5b509050620005409190620005d0565b5090565b82600e81019282156200057b579160200282015b828111156200057a578251829060ff1690559160200191906001019062000558565b5b5090506200058a9190620005d0565b5090565b82600e8101928215620005bd579182015b82811115620005bc5782548255916001019190600101906200059f565b5b509050620005cc9190620005d0565b5090565b5b80821115620005eb576000816000905550600101620005d1565b5090565b6000620005fd838362000675565b60208301905092915050565b6200061481620006dc565b620006208184620006f4565b92506200062d82620006d2565b8060005b838110156200066d576200064582620007bb565b620006518782620005ef565b96506200065e83620006e7565b92505060018101905062000631565b505050505050565b620006808162000709565b82525050565b620006918162000713565b82525050565b60006101c082019050620006af600083018462000609565b92915050565b6000602082019050620006cc600083018462000686565b92915050565b6000819050919050565b6000600e9050919050565b6000600182019050919050565b600081905092915050565b6000819050919050565b6000819050919050565b600060ff82169050919050565b6000620007376200073183620007d0565b620006ff565b9050919050565b60006200074b8262000709565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156200078157620007806200078c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007c9825462000720565b9050919050565b60008160001c9050919050565b614feb80620007ed6000396000f3fe608060405234801561001057600080fd5b50600436106102d65760003560e01c80637de14fe911610182578063a9059cbb116100e9578063d9b195d9116100a2578063e2bbb1581161007c578063e2bbb1581461097b578063e800128814610997578063f2fde38b146109c7578063fb70261a146109e3576102d6565b8063d9b195d9146108fd578063dd62ed3e1461092d578063e12ed13c1461095d576102d6565b8063a9059cbb14610817578063bb3f730514610847578063c716680114610863578063cca3e83214610893578063d3d7ed42146108c3578063d4ee1d90146108df576102d6565b80639b211f501161013b5780639b211f5014610729578063a053b90e14610747578063a05fccef14610765578063a3ec191a14610795578063a7a38f0b146107b3578063a849cef8146107e7576102d6565b80637de14fe91461063e5780637e4132451461065a57806382b0617d1461068a5780638da5cb5b146106ba5780638f35a75e146106d857806395d89b411461070b576102d6565b8063372af1b5116102415780636640da47116101fa5780636f7bc9be116101d45780636f7bc9be146105b557806370a08231146105e65780637518c9651461061657806379ba509714610634576102d6565b80636640da471461055d578063668126971461057957806369e1540414610597576102d6565b8063372af1b51461047357806342966c68146104a357806349dc2b83146104d35780634f64b2be146104f157806356810d5b146105215780635a34928e1461053f576102d6565b806323b872dd1161029357806323b872dd1461039f578063287e96c1146103cf5780632e1a7d4d146103eb578063313ce5671461040757806332298be11461042557806332cb6b0c14610455576102d6565b806306fdde03146102db57806307fc2151146102f957806308bbe7c014610315578063095ea7b31461033357806310177a671461036357806318160ddd14610381575b600080fd5b6102e3610a13565b6040516102f0919061482c565b60405180910390f35b610313600480360381019061030e919061438d565b610a4c565b005b61031d610aef565b60405161032a91906147f6565b60405180910390f35b61034d600480360381019061034891906142e5565b610b1b565b60405161035a91906147f6565b60405180910390f35b61036b610c0d565b6040516103789190614992565b60405180910390f35b610389610c20565b604051610396919061494e565b60405180910390f35b6103b960048036038101906103b49190614296565b610c26565b6040516103c691906147f6565b60405180910390f35b6103e960048036038101906103e49190614432565b610ea9565b005b610405600480360381019061040091906143e0565b611048565b005b61040f611099565b60405161041c9190614992565b60405180910390f35b61043f600480360381019061043a91906143e0565b61109e565b60405161044c919061494e565b60405180910390f35b61045d6110b9565b60405161046a919061494e565b60405180910390f35b61048d600480360381019061048891906143e0565b6110c8565b60405161049a919061494e565b60405180910390f35b6104bd60048036038101906104b891906143e0565b6110e3565b6040516104ca91906147f6565b60405180910390f35b6104db6111f0565b6040516104e891906147f6565b60405180910390f35b61050b600480360381019061050691906143e0565b611203565b6040516105189190614811565b60405180910390f35b610529611239565b60405161053691906147f6565b60405180910390f35b610547611261565b604051610554919061494e565b60405180910390f35b610577600480360381019061057291906144aa565b6113d2565b005b610581611487565b60405161058e919061494e565b60405180910390f35b61059f61148d565b6040516105ac919061494e565b60405180910390f35b6105cf60048036038101906105ca9190614231565b611493565b6040516105dd929190614969565b60405180910390f35b61060060048036038101906105fb9190614231565b6114c4565b60405161060d919061494e565b60405180910390f35b61061e61150c565b60405161062b919061494e565b60405180910390f35b61063c611512565b005b6106586004803603810190610653919061438d565b6116b1565b005b610674600480360381019061066f91906143e0565b611b75565b6040516106819190614791565b60405180910390f35b6106a4600480360381019061069f91906143e0565b611c25565b6040516106b19190614791565b60405180910390f35b6106c2611d5d565b6040516106cf91906146ed565b60405180910390f35b6106f260048036038101906106ed9190614231565b611d83565b60405161070294939291906147ad565b60405180910390f35b610713611eb7565b604051610720919061482c565b60405180910390f35b610731611ef0565b60405161073e919061494e565b60405180910390f35b61074f611ef6565b60405161075c9190614992565b60405180910390f35b61077f600480360381019061077a9190614321565b611efb565b60405161078c91906147f6565b60405180910390f35b61079d61220f565b6040516107aa919061494e565b60405180910390f35b6107cd60048036038101906107c891906143e0565b612215565b6040516107de9594939291906149ad565b60405180910390f35b61080160048036038101906107fc91906143e0565b612258565b60405161080e919061494e565b60405180910390f35b610831600480360381019061082c91906142e5565b612273565b60405161083e91906147f6565b60405180910390f35b610861600480360381019061085c91906142e5565b6123d9565b005b61087d600480360381019061087891906143e0565b61259a565b60405161088a919061494e565b60405180910390f35b6108ad60048036038101906108a89190614231565b612602565b6040516108ba919061494e565b60405180910390f35b6108dd60048036038101906108d8919061438d565b61261a565b005b6108e76126bd565b6040516108f491906146ed565b60405180910390f35b61091760048036038101906109129190614231565b6126e3565b604051610924919061494e565b60405180910390f35b6109476004803603810190610942919061425a565b612996565b604051610954919061494e565b60405180910390f35b610965612a1d565b604051610972919061494e565b60405180910390f35b6109956004803603810190610990919061446e565b612b5f565b005b6109b160048036038101906109ac91906143e0565b612bb0565b6040516109be919061494e565b60405180910390f35b6109e160048036038101906109dc9190614231565b612bcb565b005b6109fd60048036038101906109f89190614231565b612ca0565b604051610a0a91906147f6565b60405180910390f35b6040518060400160405280601681526020017f4d6f6465726e204c697175696469747920546f6b656e0000000000000000000081525081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610aec5780604590600e610ab3929190613f55565b507fec5fe789931c345c96b75d9742017fd286ef211695d51071d97d63d2bbd9e22881604051610ae39190614791565b60405180910390a15b50565b6000600a60009054906101000a900460ff16158015610b165750610b11612a1d565b600654105b905090565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610bfb919061494e565b60405180910390a36001905092915050565b600460149054906101000a900460ff1681565b60015481565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610c7357600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610cfc57600080fd5b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d4a9190614bcd565b92505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d9f9190614aec565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e329190614bcd565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e96919061494e565b60405180910390a3600190509392505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561104457600073ffffffffffffffffffffffffffffffffffffffff16600c83600e8110610f51577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc0906148ae565b60405180910390fd5b80600c83600e8110611004577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b600e811061108b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611082906148ee565b60405180910390fd5b611094816131d5565b505050565b601281565b603781600e81106110ae57600080fd5b016000915090505481565b6a1cf389cd46047d0300000081565b602981600e81106110d857600080fd5b016000915090505481565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561113057600080fd5b81600160008282546111429190614bcd565b92505081905550816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111979190614bcd565b92505081905550600a60009054906101000a900460ff1680156111c657506a1cf389cd46047d03000000600154105b156111e7576000600a60006101000a81548160ff0219169083151502179055505b60019050919050565b600a60009054906101000a900460ff1681565b600c81600e811061121357600080fd5b016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611243610aef565b15611259576112506135eb565b6001905061125e565b600090505b90565b600061126c33612ca0565b61127557600080fd5b600a60009054906101000a900460ff161561129357600090506113cf565b61129b611239565b5060006112a7336126e3565b90506001546a1cf389cd46047d030000006112c29190614bcd565b8111156112e5576001546a1cf389cd46047d030000006112e29190614bcd565b90505b60008111156112f9576112f8338261388a565b5b600854600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600e01819055503373ffffffffffffffffffffffffffffffffffffffff167fc9695243a805adb74c91f28311176c65b417e842d5699893cef56d18bfa48cba82604051611388919061494e565b60405180910390a26a1cf389cd46047d0300000060015414156113ca576113ad611239565b506001600a60006101000a81548160ff0219169083151502179055505b809150505b90565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561148457611430611239565b5080600460146101000a81548160ff021916908360ff1602179055507fdf9b689ccccd0af9869ac3bd73ef3efb636ade663455d33b9c1e46aa8802f75e8160405161147b9190614992565b60405180910390a15b50565b60065481565b601a5481565b600960205280600052604060002060009150905080600e01549080601d0160009054906101000a900460ff16905082565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600b5481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461156c57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611b725761170f611239565b50600081600d600e811061174c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015182600c600e811061178b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015183600b600e81106117ca577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015184600a600e8110611809577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151856009600e8110611848577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151866008600e8110611887577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151876007600e81106118c6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151886006600e8110611905577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151896005600e8110611944577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201518a6004600e8110611983577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201518b6003600e81106119c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201518c6002600e8110611a01577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201518d6001600e8110611a40577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201518e6000600e8110611a7f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151611a8e9190614aec565b611a989190614aec565b611aa29190614aec565b611aac9190614aec565b611ab69190614aec565b611ac09190614aec565b611aca9190614aec565b611ad49190614aec565b611ade9190614aec565b611ae89190614aec565b611af29190614aec565b611afc9190614aec565b611b069190614aec565b90506062600282611b179190614b73565b611b219190614b42565b601a8190555081601b90600e611b38929190613f55565b507fee258a9d2855c8fb7328082e121b65342aae19b2059f44d311f7257b265146c382604051611b689190614791565b60405180910390a1505b50565b611b7d613f95565b6008548210611bcb576029600e806020026040519081016040528092919082600e8015611bbf576020028201915b815481526020019060010190808311611bab575b50505050509050611c20565b60076000838152602001908152602001600020600001600e806020026040519081016040528092919082600e8015611c18576020028201915b815481526020019060010190808311611c04575b505050505090505b919050565b611c2d613f95565b600a60009054906101000a900460ff1615611cb557604051806101c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152509050611d58565b6008548210611d0357601b600e806020026040519081016040528092919082600e8015611cf7576020028201915b815481526020019060010190808311611ce3575b50505050509050611d58565b60076000838152602001908152602001600020600e01600e806020026040519081016040528092919082600e8015611d50576020028201915b815481526020019060010190808311611d3c575b505050505090505b919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d8b613f95565b6000611d95613f95565b600080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180608001604052908160008201600e806020026040519081016040528092919082600e8015611e1e576020028201915b815481526020019060010190808311611e0a575b50505050508152602001600e8201548152602001600f8201600e806020026040519081016040528092919082600e8015611e6d576020028201915b815481526020019060010190808311611e59575b50505050508152602001601d820160009054906101000a900460ff161515151581525050905080600001519450806020015193508060400151925080606001519150509193509193565b6040518060400160405280600381526020017f4d4c54000000000000000000000000000000000000000000000000000000000081525081565b60085481565b600a81565b60008151835114611f0b57600080fd5b60005b835181101561220457828181518110611f50577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611fa257600080fd5b828181518110611fdb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120309190614bcd565b92505081905550828181518110612070577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516000808684815181106120b4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121059190614aec565b92505081905550838181518110612145577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8584815181106121d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516040516121e9919061494e565b60405180910390a380806121fc90614cde565b915050611f0e565b506001905092915050565b60055481565b600760205280600052604060002060009150905080601c0160009054906101000a900460ff169080601d01549080601e01549080601f0154908060200154905085565b604581600e811061226857600080fd5b016000915090505481565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156122c057600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461230e9190614bcd565b92505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123639190614aec565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123c7919061494e565b60405180910390a36001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156125965780600b541015612474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246b906148ce565b60405180910390fd5b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124c29190614aec565b9250508190555080600b60008282546124db9190614bcd565b925050819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161253f919061494e565b60405180910390a38173ffffffffffffffffffffffffffffffffffffffff167f6ef4e6bd03d65516ad953afe2be611d12740f8cf60a3e0d280315ea8fc8104948260405161258d919061494e565b60405180910390a25b5050565b600060085482106125e3576007600060016008546125b89190614bcd565b8152602001908152602001600020601e01546125d2612a1d565b6125dc9190614bcd565b90506125fd565b60076000838152602001908152602001600020601d015490505b919050565b60006020528060005260406000206000915090505481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156126ba5780603790600e612681929190613f55565b507f4d1fffb260eb6304dffb0e0229ccb1619308617b93d226b6168c6f9f3c205264816040516126b19190614791565b60405180910390a15b50565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180608001604052908160008201600e806020026040519081016040528092919082600e801561276c576020028201915b815481526020019060010190808311612758575b50505050508152602001600e8201548152602001600f8201600e806020026040519081016040528092919082600e80156127bb576020028201915b8154815260200190600101908083116127a7575b50505050508152602001601d820160009054906101000a900460ff1615151515815250509050806060015115806127f857506127f683612ca0565b155b15612807576000915050612991565b600081600001519050600080836020015190505b600854811161298957600061282f82611c25565b9050600061283c83611b75565b905060006128498461259a565b905060005b600e8110156129725760008382600e8110612892577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151905060008114156128a8575061295f565b60008583600e81106128e3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020151905060008984600e8110612925577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015190508281868461293a9190614b73565b6129449190614b73565b61294e9190614b42565b896129599190614aec565b98505050505b808061296a90614cde565b91505061284e565b50505050808061298190614cde565b91505061281b565b508093505050505b919050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600760006001600854612a339190614bcd565b81526020019081526020016000206040518060e001604052908160008201600e806020026040519081016040528092919082600e8015612a88576020028201915b815481526020019060010190808311612a74575b50505050508152602001600e8201600e806020026040519081016040528092919082600e8015612acd576020028201915b815481526020019060010190808311612ab9575b50505050508152602001601c820160009054906101000a900460ff1660ff1660ff168152602001601d8201548152602001601e8201548152602001601f82015481526020016020820154815250509050600460149054906101000a900460ff1660ff168160c0015143612b409190614bcd565b612b4a9190614b42565b8160800151612b599190614aec565b91505090565b600e8210612ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b99906148ee565b60405180910390fd5b612bac8282613962565b5050565b601b81600e8110612bc057600080fd5b016000915090505481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415612c9d57600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c5b57600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180608001604052908160008201600e806020026040519081016040528092919082600e8015612d29576020028201915b815481526020019060010190808311612d15575b50505050508152602001600e8201548152602001600f8201600e806020026040519081016040528092919082600e8015612d78576020028201915b815481526020019060010190808311612d64575b50505050508152602001601d820160009054906101000a900460ff161515151581525050905060008160000151600d600e8110612dde577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201518260000151600c600e8110612e21577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201518360000151600b600e8110612e64577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201518460000151600a600e8110612ea7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015185600001516009600e8110612eea577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015186600001516008600e8110612f2d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015187600001516007600e8110612f70577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015188600001516006600e8110612fb3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002015189600001516005600e8110612ff6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201518a600001516004600e8110613039577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201518b600001516003600e811061307c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201518c600001516002600e81106130bf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201518d600001516001600e8110613102577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201518e600001516000600e8110613145577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200201516131549190614aec565b61315e9190614aec565b6131689190614aec565b6131729190614aec565b61317c9190614aec565b6131869190614aec565b6131909190614aec565b61319a9190614aec565b6131a49190614aec565b6131ae9190614aec565b6131b89190614aec565b6131c29190614aec565b6131cc9190614aec565b11915050919050565b6000806000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000184600e8110613254577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b015411613296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328d9061486e565b60405180910390fd5b42600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600f0184600e8110613311577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b015410613353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334a9061490e565b60405180910390fd5b61335b611261565b9150600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000183600e81106133d7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b01549050823373ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56883604051613422919061494e565b60405180910390a380602984600e8110613465577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b0160008282546134759190614bcd565b925050819055506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000184600e81106134f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b0181905550600c83600e8110613537577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401613593929190614768565b602060405180830381600087803b1580156135ad57600080fd5b505af11580156135c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135e591906143b7565b50915091565b60006135f5612a1d565b9050600060076000600160085461360c9190614bcd565b81526020019081526020016000206040518060e001604052908160008201600e806020026040519081016040528092919082600e8015613661576020028201915b81548152602001906001019080831161364d575b50505050508152602001600e8201600e806020026040519081016040528092919082600e80156136a6576020028201915b815481526020019060010190808311613692575b50505050508152602001601c820160009054906101000a900460ff1660ff1660ff168152602001601d8201548152602001601e8201548152602001601f8201548152602001602082015481525050905060008160800151836137089190614bcd565b9050602960076000600854815260200190815260200160002060000190600e613732929190613fb8565b50601b600760006008548152602001908152602001600020600e0190600e61375b929190613fb8565b5080600760006008548152602001908152602001600020601d0181905550600460149054906101000a900460ff16600760006008548152602001908152602001600020601c0160006101000a81548160ff021916908360ff16021790555082600760006008548152602001908152602001600020601e01819055508160c00151600760006008548152602001908152602001600020601f0181905550600460149054906101000a900460ff1660ff16816138159190614b73565b8260c001516138249190614aec565b60076000600854815260200190815260200160002060200181905550601a548161384e9190614b73565b600b600082825461385f9190614aec565b925050819055506008600081548092919061387990614cde565b919050555082600681905550505050565b806001600082825461389c9190614aec565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546138f19190614aec565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613956919061494e565b60405180910390a35050565b600081116139a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161399c9061488e565b60405180910390fd5b604582600e81106139df577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b015481101580613a3c5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b613a7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a729061492e565b60405180910390fd5b613a8433612ca0565b15613a9757613a91611261565b50613aa1565b613a9f611239565b505b80600c83600e8110613adc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401613b38929190614708565b60206040518083038186803b158015613b5057600080fd5b505afa158015613b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b889190614409565b1015613bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bc09061484e565b60405180910390fd5b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000183600e8110613c44577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b016000828254613c549190614aec565b9250508190555080602983600e8110613c96577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b016000828254613ca69190614aec565b92505081905550600c82600e8110613ce7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401613d4593929190614731565b602060405180830381600087803b158015613d5f57600080fd5b505af1158015613d73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d9791906143b7565b506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020601d0160006101000a81548160ff021916908315150217905550600854600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600e0181905550603782600e8110613e76577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b015442613e839190614aec565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600f0183600e8110613efd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b0181905550813373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1583604051613f49919061494e565b60405180910390a35050565b82600e8101928215613f84579160200282015b82811115613f83578251825591602001919060010190613f68565b5b509050613f919190613ff5565b5090565b604051806101c00160405280600e90602082028036833780820191505090505090565b82600e8101928215613fe4579182015b82811115613fe3578254825591600101919060010190613fc8565b5b509050613ff19190613ff5565b5090565b5b8082111561400e576000816000905550600101613ff6565b5090565b600061402561402084614a25565b614a00565b9050808382526020820190508285602086028201111561404457600080fd5b60005b85811015614074578161405a888261414d565b845260208401935060208301925050600181019050614047565b5050509392505050565b600061409161408c84614a51565b614a00565b905080828560208602820111156140a757600080fd5b60005b858110156140d757816140bd88826141f2565b8452602084019350602083019250506001810190506140aa565b5050509392505050565b60006140f46140ef84614a77565b614a00565b9050808382526020820190508285602086028201111561411357600080fd5b60005b85811015614143578161412988826141f2565b845260208401935060208301925050600181019050614116565b5050509392505050565b60008135905061415c81614f59565b92915050565b600082601f83011261417357600080fd5b8135614183848260208601614012565b91505092915050565b600082601f83011261419d57600080fd5b600e6141aa84828561407e565b91505092915050565b600082601f8301126141c457600080fd5b81356141d48482602086016140e1565b91505092915050565b6000815190506141ec81614f70565b92915050565b60008135905061420181614f87565b92915050565b60008151905061421681614f87565b92915050565b60008135905061422b81614f9e565b92915050565b60006020828403121561424357600080fd5b60006142518482850161414d565b91505092915050565b6000806040838503121561426d57600080fd5b600061427b8582860161414d565b925050602061428c8582860161414d565b9150509250929050565b6000806000606084860312156142ab57600080fd5b60006142b98682870161414d565b93505060206142ca8682870161414d565b92505060406142db868287016141f2565b9150509250925092565b600080604083850312156142f857600080fd5b60006143068582860161414d565b9250506020614317858286016141f2565b9150509250929050565b6000806040838503121561433457600080fd5b600083013567ffffffffffffffff81111561434e57600080fd5b61435a85828601614162565b925050602083013567ffffffffffffffff81111561437757600080fd5b614383858286016141b3565b9150509250929050565b60006101c082840312156143a057600080fd5b60006143ae8482850161418c565b91505092915050565b6000602082840312156143c957600080fd5b60006143d7848285016141dd565b91505092915050565b6000602082840312156143f257600080fd5b6000614400848285016141f2565b91505092915050565b60006020828403121561441b57600080fd5b600061442984828501614207565b91505092915050565b6000806040838503121561444557600080fd5b6000614453858286016141f2565b92505060206144648582860161414d565b9150509250929050565b6000806040838503121561448157600080fd5b600061448f858286016141f2565b92505060206144a0858286016141f2565b9150509250929050565b6000602082840312156144bc57600080fd5b60006144ca8482850161421c565b91505092915050565b60006144df83836146c0565b60208301905092915050565b6144f481614c01565b82525050565b61450381614aad565b61450d8184614ad0565b925061451882614aa3565b8060005b8381101561454957815161453087826144d3565b965061453b83614ac3565b92505060018101905061451c565b505050505050565b61455a81614c13565b82525050565b61456981614c56565b82525050565b600061457a82614ab8565b6145848185614adb565b9350614594818560208601614c7a565b61459d81614db4565b840191505092915050565b60006145b5601c83614adb565b91506145c082614dc5565b602082019050919050565b60006145d8601383614adb565b91506145e382614dee565b602082019050919050565b60006145fb600e83614adb565b915061460682614e17565b602082019050919050565b600061461e601783614adb565b915061462982614e40565b602082019050919050565b6000614641601283614adb565b915061464c82614e69565b602082019050919050565b6000614664601383614adb565b915061466f82614e92565b602082019050919050565b6000614687604383614adb565b915061469282614ebb565b606082019050919050565b60006146aa601483614adb565b91506146b582614f30565b602082019050919050565b6146c981614c3f565b82525050565b6146d881614c3f565b82525050565b6146e781614c49565b82525050565b600060208201905061470260008301846144eb565b92915050565b600060408201905061471d60008301856144eb565b61472a60208301846144eb565b9392505050565b600060608201905061474660008301866144eb565b61475360208301856144eb565b61476060408301846146cf565b949350505050565b600060408201905061477d60008301856144eb565b61478a60208301846146cf565b9392505050565b60006101c0820190506147a760008301846144fa565b92915050565b60006103c0820190506147c360008301876144fa565b6147d16101c08301866146cf565b6147df6101e08301856144fa565b6147ed6103a0830184614551565b95945050505050565b600060208201905061480b6000830184614551565b92915050565b60006020820190506148266000830184614560565b92915050565b60006020820190508181036000830152614846818461456f565b905092915050565b60006020820190508181036000830152614867816145a8565b9050919050565b60006020820190508181036000830152614887816145cb565b9050919050565b600060208201905081810360008301526148a7816145ee565b9050919050565b600060208201905081810360008301526148c781614611565b9050919050565b600060208201905081810360008301526148e781614634565b9050919050565b6000602082019050818103600083015261490781614657565b9050919050565b600060208201905081810360008301526149278161467a565b9050919050565b600060208201905081810360008301526149478161469d565b9050919050565b600060208201905061496360008301846146cf565b92915050565b600060408201905061497e60008301856146cf565b61498b6020830184614551565b9392505050565b60006020820190506149a760008301846146de565b92915050565b600060a0820190506149c260008301886146de565b6149cf60208301876146cf565b6149dc60408301866146cf565b6149e960608301856146cf565b6149f660808301846146cf565b9695505050505050565b6000614a0a614a1b565b9050614a168282614cad565b919050565b6000604051905090565b600067ffffffffffffffff821115614a4057614a3f614d85565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614a6c57614a6b614d85565b5b602082029050919050565b600067ffffffffffffffff821115614a9257614a91614d85565b5b602082029050602081019050919050565b6000819050919050565b6000600e9050919050565b600081519050919050565b6000602082019050919050565b600081905092915050565b600082825260208201905092915050565b6000614af782614c3f565b9150614b0283614c3f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b3757614b36614d27565b5b828201905092915050565b6000614b4d82614c3f565b9150614b5883614c3f565b925082614b6857614b67614d56565b5b828204905092915050565b6000614b7e82614c3f565b9150614b8983614c3f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bc257614bc1614d27565b5b828202905092915050565b6000614bd882614c3f565b9150614be383614c3f565b925082821015614bf657614bf5614d27565b5b828203905092915050565b6000614c0c82614c1f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614c6182614c68565b9050919050565b6000614c7382614c1f565b9050919050565b60005b83811015614c98578082015181840152602081019050614c7d565b83811115614ca7576000848401525b50505050565b614cb682614db4565b810181811067ffffffffffffffff82111715614cd557614cd4614d85565b5b80604052505050565b6000614ce982614c3f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d1c57614d1b614d27565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f496e73756666696369656e7420746f6b656e20616c6c6f77616e636500000000600082015250565b7f4e6f7468696e6720746f20776974686472617700000000000000000000000000600082015250565b7f496e76616c696420616d6f756e74000000000000000000000000000000000000600082015250565b7f416464726573732077617320616c726561647920736574000000000000000000600082015250565b7f496e73756666696369656e742066756e64730000000000000000000000000000600082015250565b7f496e76616c696420746f6b656e20696e64657800000000000000000000000000600082015250565b7f5468697320746f6b656e20636f756c64206e6f7420626520776974686472617760008201527f6e207269676874206e6f772c20706c65617365207761697420666f7220756e6c60208201527f6f636b0000000000000000000000000000000000000000000000000000000000604082015250565b7f416d6f756e7420697320746f6f206c6974746c65000000000000000000000000600082015250565b614f6281614c01565b8114614f6d57600080fd5b50565b614f7981614c13565b8114614f8457600080fd5b50565b614f9081614c3f565b8114614f9b57600080fd5b50565b614fa781614c49565b8114614fb257600080fd5b5056fea2646970667358221220b4f23538b1b5a61a0b979ebdd61e8980aaf000db02957c123c55a84c99ae8f9564736f6c63430008030033

Deployed ByteCode Sourcemap

3993:10710:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;995:54;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6792:136;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8513:137;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2519:214;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4593:44;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1142:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2741:390;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6274:202;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13515:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1100:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5251:77;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4048:54;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5167:77;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14392:308;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4855:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4931:24;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8321:184;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12191:647;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6484:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4677:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4962:44;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4802:46;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;1419:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4896:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3788:198;;;:::i;:::-;;6982:341;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7566:206;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7780:297;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3349:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13973:411;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;1056:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4768:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4109:45;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1909:458;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4644:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4716:45;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;5335:75;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1546:355;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13668:297;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8085:228;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;835:46;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6643:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3376:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9563:909;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2375:136;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7331:227;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11441:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5034:105;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3633:147;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11616:567;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;995:54;;;;;;;;;;;;;;;;;;;:::o;6792:136::-;3596:5;;;;;;;;;;;3582:19;;:10;:19;;;3578:39;;;6882:1:::1;6868:11;:15;;;;;;;:::i;:::-;;6899:21;6918:1;6899:21;;;;;;:::i;:::-;;;;;;;;3578:39:::0;6792:136;:::o;8513:137::-;8565:4;8590:14;;;;;;;;;;;8589:15;:53;;;;;8628:14;:12;:14::i;:::-;8608:17;;:34;8589:53;8582:60;;8513:137;:::o;2519:214::-;2586:12;2646:5;2611:11;:23;2623:10;2611:23;;;;;;;;;;;;;;;:32;2635:7;2611:32;;;;;;;;;;;;;;;:40;;;;2688:7;2667:36;;2676:10;2667:36;;;2697:5;2667:36;;;;;;:::i;:::-;;;;;;;;2721:4;2714:11;;2519:214;;;;:::o;4593:44::-;;;;;;;;;;;;;:::o;1142:30::-;;;;:::o;2741:390::-;2822:12;2864:10;:16;2875:4;2864:16;;;;;;;;;;;;;;;;2855:5;:25;;2847:34;;;;;;2909:11;:17;2921:4;2909:17;;;;;;;;;;;;;;;:29;2927:10;2909:29;;;;;;;;;;;;;;;;2900:5;:38;;2892:47;;;;;;2972:5;2952:10;:16;2963:4;2952:16;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;3006:5;2988:10;:14;2999:2;2988:14;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;3055:5;3022:11;:17;3034:4;3022:17;;;;;;;;;;;;;;;:29;3040:10;3022:29;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;3091:2;3076:25;;3085:4;3076:25;;;3095:5;3076:25;;;;;;:::i;:::-;;;;;;;;3119:4;3112:11;;2741:390;;;;;:::o;6274:202::-;3596:5;;;;;;;;;;;3582:19;;:10;:19;;;3578:39;;;6398:1:::1;6364:36;;6372:6;6379:5;6372:13;;;;;;;;;;;;;;;;;;;;;;;;;;6364:36;;;6356:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;6462:5;6439:6;6446:5;6439:13;;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;3578:39:::0;6274:202;;:::o;13515:145::-;13594:2;13581:10;:15;13573:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13631:21;13641:10;13631:9;:21::i;:::-;;;13515:145;:::o;1100:35::-;1133:2;1100:35;:::o;5251:77::-;;;;;;;;;;;;;;;;;;;;:::o;4048:54::-;4085:17;4048:54;:::o;5167:77::-;;;;;;;;;;;;;;;;;;;;:::o;14392:308::-;14439:12;14481:10;:22;14492:10;14481:22;;;;;;;;;;;;;;;;14472:5;:31;;14464:40;;;;;;14530:5;14515:11;;:20;;;;;;;:::i;:::-;;;;;;;;14572:5;14546:10;:22;14557:10;14546:22;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;14591:14;;;;;;;;;;;:42;;;;;4085:17;14609:11;;:24;14591:42;14588:82;;;14665:5;14648:14;;:22;;;;;;;;;;;;;;;;;;14588:82;14688:4;14681:11;;14392:308;;;:::o;4855:34::-;;;;;;;;;;;;;:::o;4931:24::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8321:184::-;8362:4;8383:21;:19;:21::i;:::-;8379:96;;;8421:16;:14;:16::i;:::-;8459:4;8452:11;;;;8379:96;8492:5;8485:12;;8321:184;;:::o;12191:647::-;12232:7;12260:22;12271:10;12260;:22::i;:::-;12252:31;;;;;;12300:14;;;;;;;;;;;12296:41;;;12336:1;12329:8;;;;12296:41;12350:15;:13;:15::i;:::-;;12378:14;12395:24;12408:10;12395:12;:24::i;:::-;12378:41;;12456:11;;4085:17;12443:24;;;;:::i;:::-;12434:6;:33;12430:85;;;12504:11;;4085:17;12491:24;;;;:::i;:::-;12482:33;;12430:85;12541:1;12532:6;:10;12528:53;;;12557:24;12562:10;12574:6;12557:4;:24::i;:::-;12528:53;12628:12;;12592:9;:21;12602:10;12592:21;;;;;;;;;;;;;;;:33;;:48;;;;12664:10;12656:27;;;12676:6;12656:27;;;;;;:::i;:::-;;;;;;;;4085:17;12700:11;;:25;12696:109;;;12742:15;:13;:15::i;:::-;;12789:4;12772:14;;:21;;;;;;;;;;;;;;;;;;12696:109;12824:6;12817:13;;;12191:647;;:::o;6484:151::-;3596:5;;;;;;;;;;;3582:19;;:10;:19;;;3578:39;;;6549:15:::1;:13;:15::i;:::-;;6588:5;6575:10;;:18;;;;;;;;;;;;;;;;;;6609;6621:5;6609:18;;;;;;:::i;:::-;;;;;;;;3578:39:::0;6484:151;:::o;4677:32::-;;;;:::o;4962:44::-;;;;:::o;4802:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1419:119::-;1478:13;1511:10;:19;1522:7;1511:19;;;;;;;;;;;;;;;;1504:26;;1419:119;;;:::o;4896:26::-;;;;:::o;3788:198::-;3857:8;;;;;;;;;;;3843:22;;:10;:22;;;3835:31;;;;;;3910:8;;;;;;;;;;;3882:37;;3903:5;;;;;;;;;;;3882:37;;;;;;;;;;;;3938:8;;;;;;;;;;;3930:5;;:16;;;;;;;;;;;;;;;;;;3976:1;3957:8;;:21;;;;;;;;;;;;;;;;;;3788:198::o;6982:341::-;3596:5;;;;;;;;;;;3582:19;;:10;:19;;;3578:39;;;7056:15:::1;:13;:15::i;:::-;;7082:11;7190:1;7192:2;7190:5;;;;;;;;;;;;;;;;;;;7182:1;7184:2;7182:5;;;;;;;;;;;;;;;;;;;7174:1;7176:2;7174:5;;;;;;;;;;;;;;;;;;;7166:1;7168:2;7166:5;;;;;;;;;;;;;;;;;;;7159:1;7161;7159:4;;;;;;;;;;;;;;;;;;;7152:1;7154;7152:4;;;;;;;;;;;;;;;;;;;7145:1;7147;7145:4;;;;;;;;;;;;;;;;;;;7138:1;7140;7138:4;;;;;;;;;;;;;;;;;;;7131:1;7133;7131:4;;;;;;;;;;;;;;;;;;;7124:1;7126;7124:4;;;;;;;;;;;;;;;;;;;7117:1;7119;7117:4;;;;;;;;;;;;;;;;;;;7110:1;7112;7110:4;;;;;;;;;;;;;;;;;;;7103:1;7105;7103:4;;;;;;;;;;;;;;;;;;;7096:1;7098;7096:4;;;;;;;;;;;;;;;;;;;:11;;;;:::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;:32;;;;:::i;:::-;:39;;;;:::i;:::-;:46;;;;:::i;:::-;:53;;;;:::i;:::-;:60;;;;:::i;:::-;:67;;;;:::i;:::-;:75;;;;:::i;:::-;:83;;;;:::i;:::-;:91;;;;:::i;:::-;:99;;;;:::i;:::-;7082:113;;7228:2;7224:1;7218:3;:7;;;;:::i;:::-;:12;;;;:::i;:::-;7206:9;:24;;;;7277:1;7263:11;:15;;;;;;;:::i;:::-;;7294:21;7313:1;7294:21;;;;;;:::i;:::-;;;;;;;;3616:1;3578:39:::0;6982:341;:::o;7566:206::-;7631:18;;:::i;:::-;7673:12;;7666:3;:19;7662:58;;7707:13;7700:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7662:58;7738:7;:12;7746:3;7738:12;;;;;;;;;;;:26;;7731:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7566:206;;;;:::o;7780:297::-;7838:18;;:::i;:::-;7873:14;;;;;;;;;;;7869:91;;;7902:58;;;;;;;;7918:1;7902:58;;;;7922:1;7902:58;;;;7925:1;7902:58;;;;7928:1;7902:58;;;;7931:1;7902:58;;;;7934:1;7902:58;;;;7937:1;7902:58;;;;7940:1;7902:58;;;;7943:1;7902:58;;;;7946:1;7902:58;;;;7949:1;7902:58;;;;7952:1;7902:58;;;;7955:1;7902:58;;;;7958:1;7902:58;;;;;;;7869:91;7982:12;;7975:3;:19;7971:56;;8016:11;8009:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7971:56;8045:7;:12;8053:3;8045:12;;;;;;;;;;;:24;;8038:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7780:297;;;;:::o;3349:20::-;;;;;;;;;;;;;:::o;13973:411::-;14031:27;;:::i;:::-;14060:19;14081:36;;:::i;:::-;14119:16;14148:24;14175:9;:15;14185:4;14175:15;;;;;;;;;;;;;;;14148:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14212:8;:17;;;14201:28;;14254:8;:20;;;14240:34;;14305:8;:26;;;14285:46;;14356:8;:20;;;14342:34;;13973:411;;;;;;:::o;1056:37::-;;;;;;;;;;;;;;;;;;;:::o;4768:27::-;;;;:::o;4109:45::-;4152:2;4109:45;:::o;1909:458::-;1999:12;2045:6;:13;2032:2;:9;:26;2024:35;;;;;;2077:9;2072:266;2096:2;:9;2092:1;:13;2072:266;;;2161:6;2168:1;2161:9;;;;;;;;;;;;;;;;;;;;;;2135:10;:22;2146:10;2135:22;;;;;;;;;;;;;;;;:35;;2127:44;;;;;;2214:6;2221:1;2214:9;;;;;;;;;;;;;;;;;;;;;;2188:10;:22;2199:10;2188:22;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;2259:6;2266:1;2259:9;;;;;;;;;;;;;;;;;;;;;;2238:10;:17;2249:2;2252:1;2249:5;;;;;;;;;;;;;;;;;;;;;;2238:17;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;2309:2;2312:1;2309:5;;;;;;;;;;;;;;;;;;;;;;2288:38;;2297:10;2288:38;;;2316:6;2323:1;2316:9;;;;;;;;;;;;;;;;;;;;;;2288:38;;;;;;:::i;:::-;;;;;;;;2107:3;;;;;:::i;:::-;;;;2072:266;;;;2355:4;2348:11;;1909:458;;;;:::o;4644:26::-;;;;:::o;4716:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5335:75::-;;;;;;;;;;;;;;;;;;;;:::o;1546:355::-;1609:12;1668:5;1642:10;:22;1653:10;1642:22;;;;;;;;;;;;;;;;:31;;1634:40;;;;;;1713:5;1687:10;:22;1698:10;1687:22;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;1780:5;1762:10;:14;1773:2;1762:14;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;1861:2;1840:31;;1849:10;1840:31;;;1865:5;1840:31;;;;;;:::i;:::-;;;;;;;;1889:4;1882:11;;1546:355;;;;:::o;13668:297::-;3596:5;;;;;;;;;;;3582:19;;:10;:19;;;3578:39;;;13771:6:::1;13756:11;;:21;;13748:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;13831:6;13813:10;:14:::0;13824:2:::1;13813:14;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;13863:6;13848:11;;:21;;;;;;;:::i;:::-;;;;;;;;13909:2;13885:35;;13902:4;13885:35;;;13913:6;13885:35;;;;;;:::i;:::-;;;;;;;;13946:2;13936:21;;;13950:6;13936:21;;;;;;:::i;:::-;;;;;;;;3578:39:::0;13668:297;;:::o;8085:228::-;8143:7;8178:12;;8171:3;:19;8167:96;;8229:7;:23;8250:1;8237:12;;:14;;;;:::i;:::-;8229:23;;;;;;;;;;;:34;;;8212:14;:12;:14::i;:::-;:51;;;;:::i;:::-;8205:58;;;;8167:96;8281:7;:12;8289:3;8281:12;;;;;;;;;;;:24;;;8274:31;;8085:228;;;;:::o;835:46::-;;;;;;;;;;;;;;;;;:::o;6643:141::-;3596:5;;;;;;;;;;;3582:19;;:10;:19;;;3578:39;;;6737:1:::1;6721:13;:17;;;;;;;:::i;:::-;;6754:22;6774:1;6754:22;;;;;;:::i;:::-;;;;;;;;3578:39:::0;6643:141;:::o;3376:23::-;;;;;;;;;;;;;:::o;9563:909::-;9622:7;9642:24;9669:9;:17;9679:6;9669:17;;;;;;;;;;;;;;;9642:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9704:8;:20;;;9703:21;:44;;;;9729:18;9740:6;9729:10;:18::i;:::-;9728:19;9703:44;9699:71;;;9769:1;9762:8;;;;;9699:71;9783:27;9813:8;:17;;;9783:47;;9843:14;9879:9;9891:8;:20;;;9879:32;;9874:565;9918:12;;9913:1;:17;9874:565;;9952:31;9986:17;10001:1;9986:14;:17::i;:::-;9952:51;;10018:33;10054:24;10076:1;10054:21;:24::i;:::-;10018:60;;10093:19;10115:17;10130:1;10115:14;:17::i;:::-;10093:39;;10152:9;10147:281;10171:2;10167:1;:6;10147:281;;;10199:10;10212:14;10227:1;10212:17;;;;;;;;;;;;;;;;;;;10199:30;;10258:1;10252:2;:7;10248:21;;;10261:8;;;10248:21;10288:10;10301:12;10314:1;10301:15;;;;;;;;;;;;;;;;;;;10288:28;;10335:9;10347:8;10356:1;10347:11;;;;;;;;;;;;;;;;;;;10335:23;;10410:2;10406:1;10392:11;10387:2;:16;;;;:::i;:::-;:20;;;;:::i;:::-;:25;;;;:::i;:::-;10377:35;;;;;:::i;:::-;;;10147:281;;;;10175:3;;;;;:::i;:::-;;;;10147:281;;;;9874:565;;;9932:3;;;;;:::i;:::-;;;;9874:565;;;;10458:6;10451:13;;;;;9563:909;;;;:::o;2375:136::-;2449:7;2476:11;:18;2488:5;2476:18;;;;;;;;;;;;;;;:27;2495:7;2476:27;;;;;;;;;;;;;;;;2469:34;;2375:136;;;;:::o;7331:227::-;7376:7;7396:26;7425:7;:23;7446:1;7433:12;;:14;;;;:::i;:::-;7425:23;;;;;;;;;;;7396:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7540:10;;;;;;;;;;;7489:61;;7505:9;:31;;;7490:12;:46;;;;:::i;:::-;7489:61;;;;:::i;:::-;7466:9;:20;;;:84;;;;:::i;:::-;7459:91;;;7331:227;:::o;11441:167::-;11535:2;11522:10;:15;11514:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11572:28;11581:10;11593:6;11572:8;:28::i;:::-;11441:167;;:::o;5034:105::-;;;;;;;;;;;;;;;;;;;;:::o;3633:147::-;3596:5;;;;;;;;;;;3582:19;;:10;:19;;;3578:39;;;3738:1:::1;3717:23;;:9;:23;;;;3709:32;;;::::0;::::1;;3763:9;3752:8;;:20;;;;;;;;;;;;;;;;;;3578:39:::0;3633:147;:::o;11616:567::-;11673:4;11690:24;11717:9;:17;11727:6;11717:17;;;;;;;;;;;;;;;11690:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12174:1;12150:8;:17;;;12168:2;12150:21;;;;;;;;;;;;;;;;;;;12126:8;:17;;;12144:2;12126:21;;;;;;;;;;;;;;;;;;;12086:8;:17;;;12104:2;12086:21;;;;;;;;;;;;;;;;;;;12062:8;:17;;;12080:2;12062:21;;;;;;;;;;;;;;;;;;;12023:8;:17;;;12041:1;12023:20;;;;;;;;;;;;;;;;;;;12000:8;:17;;;12018:1;12000:20;;;;;;;;;;;;;;;;;;;11961:8;:17;;;11979:1;11961:20;;;;;;;;;;;;;;;;;;;11938:8;:17;;;11956:1;11938:20;;;;;;;;;;;;;;;;;;;11899:8;:17;;;11917:1;11899:20;;;;;;;;;;;;;;;;;;;11876:8;:17;;;11894:1;11876:20;;;;;;;;;;;;;;;;;;;11837:8;:17;;;11855:1;11837:20;;;;;;;;;;;;;;;;;;;11814:8;:17;;;11832:1;11814:20;;;;;;;;;;;;;;;;;;;11775:8;:17;;;11793:1;11775:20;;;;;;;;;;;;;;;;;;;11752:8;:17;;;11770:1;11752:20;;;;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;:82;;;;:::i;:::-;:105;;;;:::i;:::-;:144;;;;:::i;:::-;:167;;;;:::i;:::-;:206;;;;:::i;:::-;:229;;;;:::i;:::-;:268;;;;:::i;:::-;:291;;;;:::i;:::-;:331;;;;:::i;:::-;:355;;;;:::i;:::-;:395;;;;:::i;:::-;:419;;;;:::i;:::-;:423;11745:430;;;11616:567;;;:::o;12846:661::-;12903:14;12919:13;12998:1;12953:9;:21;12963:10;12953:21;;;;;;;;;;;;;;;:30;;12984:10;12953:42;;;;;;;;;;;;;;;;;:46;12945:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;13096:15;13042:9;:21;13052:10;13042:21;;;;;;;;;;;;;;;:39;;13082:10;13042:51;;;;;;;;;;;;;;;;;:69;13034:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;13205:15;:13;:15::i;:::-;13196:24;;13239:9;:21;13249:10;13239:21;;;;;;;;;;;;;;;:30;;13270:10;13239:42;;;;;;;;;;;;;;;;;13231:50;;13320:10;13308;13299:39;;;13332:5;13299:39;;;;;;:::i;:::-;;;;;;;;13380:5;13351:13;13365:10;13351:25;;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;13441:1;13396:9;:21;13406:10;13396:21;;;;;;;;;;;;;;;:30;;13427:10;13396:42;;;;;;;;;;;;;;;;:46;;;;13453:6;13460:10;13453:18;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;13481:10;13493:5;13453:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12846:661;;;:::o;8658:897::-;8768:18;8789:14;:12;:14::i;:::-;8768:35;;8816:26;8845:7;:23;8866:1;8853:12;;:14;;;;:::i;:::-;8845:23;;;;;;;;;;;8816:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8879:19;8914:9;:20;;;8901:10;:33;;;;:::i;:::-;8879:55;;8983:13;8945:7;:21;8953:12;;8945:21;;;;;;;;;;;:35;;:51;;;;;;;:::i;:::-;;9043:11;9007:7;:21;9015:12;;9007:21;;;;;;;;;;;:33;;:47;;;;;;;:::i;:::-;;9101:11;9065:7;:21;9073:12;;9065:21;;;;;;;;;;;:33;;:47;;;;9157:10;;;;;;;;;;;9123:7;:21;9131:12;;9123:21;;;;;;;;;;;:31;;;:44;;;;;;;;;;;;;;;;;;9213:10;9178:7;:21;9186:12;;9178:21;;;;;;;;;;;:32;;:45;;;;9282:9;:31;;;9234:7;:21;9242:12;;9234:21;;;;;;;;;;;:45;;:79;;;;9418:10;;;;;;;;;;;9404:24;;:11;:24;;;;:::i;:::-;9370:9;:31;;;:58;;;;:::i;:::-;9324:7;:21;9332:12;;9324:21;;;;;;;;;;;:43;;:104;;;;9470:9;;9456:11;:23;;;;:::i;:::-;9441:11;;:38;;;;;;;:::i;:::-;;;;;;;;9492:12;;:14;;;;;;;;;:::i;:::-;;;;;;9537:10;9517:17;:30;;;;8658:897;;;:::o;3139:170::-;3215:5;3200:11;;:20;;;;;;;:::i;:::-;;;;;;;;3249:5;3231:10;:14;3242:2;3231:14;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;3291:2;3270:31;;3287:1;3270:31;;;3295:5;3270:31;;;;;;:::i;:::-;;;;;;;;3139:170;;:::o;10480:953::-;10571:1;10562:6;:10;10554:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;10620:11;10632:10;10620:23;;;;;;;;;;;;;;;;;10610:6;:33;;:56;;;;10661:5;;;;;;;;;;;10647:19;;:10;:19;;;10610:56;10602:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;10708:22;10719:10;10708;:22::i;:::-;10704:141;;;10745:15;:13;:15::i;:::-;;10704:141;;;10830:15;:13;:15::i;:::-;;10704:141;10925:6;10866;10873:10;10866:18;;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;10895:10;10915:4;10866:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:65;;10858:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;11021:6;10975:9;:21;10985:10;10975:21;;;;;;;;;;;;;;;:30;;11006:10;10975:42;;;;;;;;;;;;;;;;;:52;;;;;;;:::i;:::-;;;;;;;;11067:6;11038:13;11052:10;11038:25;;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;11084:6;11091:10;11084:18;;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;11116:10;11136:4;11143:6;11084:66;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11199:4;11163:9;:21;11173:10;11163:21;;;;;;;;;;;;;;;:33;;;:40;;;;;;;;;;;;;;;;;;11250:12;;11214:9;:21;11224:10;11214:21;;;;;;;;;;;;;;;:33;;:48;;;;11345:13;11359:10;11345:25;;;;;;;;;;;;;;;;;11327:15;:43;;;;:::i;:::-;11273:9;:21;11283:10;11273:21;;;;;;;;;;;;;;;:39;;11313:10;11273:51;;;;;;;;;;;;;;;;:97;;;;11406:10;11394;11386:39;;;11418:6;11386:39;;;;;;:::i;:::-;;;;;;;;10480:953;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:623:1:-;;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;274:6;267:5;260:21;300:4;293:5;289:16;282:23;;325:6;375:3;367:4;359:6;355:17;350:3;346:27;343:36;340:2;;;392:1;389;382:12;340:2;420:1;405:236;430:6;427:1;424:13;405:236;;;497:3;525:37;558:3;546:10;525:37;:::i;:::-;520:3;513:50;592:4;587:3;583:14;576:21;;626:4;621:3;617:14;610:21;;465:176;452:1;449;445:9;440:14;;405:236;;;409:14;126:521;;;;;;;:::o;672:568::-;;792:80;808:63;864:6;808:63;:::i;:::-;792:80;:::i;:::-;783:89;;892:5;918:6;968:3;960:4;952:6;948:17;943:3;939:27;936:36;933:2;;;985:1;982;975:12;933:2;1013:1;998:236;1023:6;1020:1;1017:13;998:236;;;1090:3;1118:37;1151:3;1139:10;1118:37;:::i;:::-;1113:3;1106:50;1185:4;1180:3;1176:14;1169:21;;1219:4;1214:3;1210:14;1203:21;;1058:176;1045:1;1042;1038:9;1033:14;;998:236;;;1002:14;773:467;;;;;;;:::o;1263:623::-;;1384:81;1400:64;1457:6;1400:64;:::i;:::-;1384:81;:::i;:::-;1375:90;;1485:5;1513:6;1506:5;1499:21;1539:4;1532:5;1528:16;1521:23;;1564:6;1614:3;1606:4;1598:6;1594:17;1589:3;1585:27;1582:36;1579:2;;;1631:1;1628;1621:12;1579:2;1659:1;1644:236;1669:6;1666:1;1663:13;1644:236;;;1736:3;1764:37;1797:3;1785:10;1764:37;:::i;:::-;1759:3;1752:50;1831:4;1826:3;1822:14;1815:21;;1865:4;1860:3;1856:14;1849:21;;1704:176;1691:1;1688;1684:9;1679:14;;1644:236;;;1648:14;1365:521;;;;;;;:::o;1892:139::-;;1976:6;1963:20;1954:29;;1992:33;2019:5;1992:33;:::i;:::-;1944:87;;;;:::o;2054:303::-;;2174:3;2167:4;2159:6;2155:17;2151:27;2141:2;;2192:1;2189;2182:12;2141:2;2232:6;2219:20;2257:94;2347:3;2339:6;2332:4;2324:6;2320:17;2257:94;:::i;:::-;2248:103;;2131:226;;;;;:::o;2382:274::-;;2501:3;2494:4;2486:6;2482:17;2478:27;2468:2;;2519:1;2516;2509:12;2468:2;2546:4;2568:82;2646:3;2638:6;2630;2568:82;:::i;:::-;2559:91;;2458:198;;;;;:::o;2679:303::-;;2799:3;2792:4;2784:6;2780:17;2776:27;2766:2;;2817:1;2814;2807:12;2766:2;2857:6;2844:20;2882:94;2972:3;2964:6;2957:4;2949:6;2945:17;2882:94;:::i;:::-;2873:103;;2756:226;;;;;:::o;2988:137::-;;3073:6;3067:13;3058:22;;3089:30;3113:5;3089:30;:::i;:::-;3048:77;;;;:::o;3131:139::-;;3215:6;3202:20;3193:29;;3231:33;3258:5;3231:33;:::i;:::-;3183:87;;;;:::o;3276:143::-;;3364:6;3358:13;3349:22;;3380:33;3407:5;3380:33;:::i;:::-;3339:80;;;;:::o;3425:135::-;;3507:6;3494:20;3485:29;;3523:31;3548:5;3523:31;:::i;:::-;3475:85;;;;:::o;3566:262::-;;3674:2;3662:9;3653:7;3649:23;3645:32;3642:2;;;3690:1;3687;3680:12;3642:2;3733:1;3758:53;3803:7;3794:6;3783:9;3779:22;3758:53;:::i;:::-;3748:63;;3704:117;3632:196;;;;:::o;3834:407::-;;;3959:2;3947:9;3938:7;3934:23;3930:32;3927:2;;;3975:1;3972;3965:12;3927:2;4018:1;4043:53;4088:7;4079:6;4068:9;4064:22;4043:53;:::i;:::-;4033:63;;3989:117;4145:2;4171:53;4216:7;4207:6;4196:9;4192:22;4171:53;:::i;:::-;4161:63;;4116:118;3917:324;;;;;:::o;4247:552::-;;;;4389:2;4377:9;4368:7;4364:23;4360:32;4357:2;;;4405:1;4402;4395:12;4357:2;4448:1;4473:53;4518:7;4509:6;4498:9;4494:22;4473:53;:::i;:::-;4463:63;;4419:117;4575:2;4601:53;4646:7;4637:6;4626:9;4622:22;4601:53;:::i;:::-;4591:63;;4546:118;4703:2;4729:53;4774:7;4765:6;4754:9;4750:22;4729:53;:::i;:::-;4719:63;;4674:118;4347:452;;;;;:::o;4805:407::-;;;4930:2;4918:9;4909:7;4905:23;4901:32;4898:2;;;4946:1;4943;4936:12;4898:2;4989:1;5014:53;5059:7;5050:6;5039:9;5035:22;5014:53;:::i;:::-;5004:63;;4960:117;5116:2;5142:53;5187:7;5178:6;5167:9;5163:22;5142:53;:::i;:::-;5132:63;;5087:118;4888:324;;;;;:::o;5218:693::-;;;5393:2;5381:9;5372:7;5368:23;5364:32;5361:2;;;5409:1;5406;5399:12;5361:2;5480:1;5469:9;5465:17;5452:31;5510:18;5502:6;5499:30;5496:2;;;5542:1;5539;5532:12;5496:2;5570:78;5640:7;5631:6;5620:9;5616:22;5570:78;:::i;:::-;5560:88;;5423:235;5725:2;5714:9;5710:18;5697:32;5756:18;5748:6;5745:30;5742:2;;;5788:1;5785;5778:12;5742:2;5816:78;5886:7;5877:6;5866:9;5862:22;5816:78;:::i;:::-;5806:88;;5668:236;5351:560;;;;;:::o;5917:311::-;;6049:3;6037:9;6028:7;6024:23;6020:33;6017:2;;;6066:1;6063;6056:12;6017:2;6109:1;6134:77;6203:7;6194:6;6183:9;6179:22;6134:77;:::i;:::-;6124:87;;6080:141;6007:221;;;;:::o;6234:278::-;;6350:2;6338:9;6329:7;6325:23;6321:32;6318:2;;;6366:1;6363;6356:12;6318:2;6409:1;6434:61;6487:7;6478:6;6467:9;6463:22;6434:61;:::i;:::-;6424:71;;6380:125;6308:204;;;;:::o;6518:262::-;;6626:2;6614:9;6605:7;6601:23;6597:32;6594:2;;;6642:1;6639;6632:12;6594:2;6685:1;6710:53;6755:7;6746:6;6735:9;6731:22;6710:53;:::i;:::-;6700:63;;6656:117;6584:196;;;;:::o;6786:284::-;;6905:2;6893:9;6884:7;6880:23;6876:32;6873:2;;;6921:1;6918;6911:12;6873:2;6964:1;6989:64;7045:7;7036:6;7025:9;7021:22;6989:64;:::i;:::-;6979:74;;6935:128;6863:207;;;;:::o;7076:407::-;;;7201:2;7189:9;7180:7;7176:23;7172:32;7169:2;;;7217:1;7214;7207:12;7169:2;7260:1;7285:53;7330:7;7321:6;7310:9;7306:22;7285:53;:::i;:::-;7275:63;;7231:117;7387:2;7413:53;7458:7;7449:6;7438:9;7434:22;7413:53;:::i;:::-;7403:63;;7358:118;7159:324;;;;;:::o;7489:407::-;;;7614:2;7602:9;7593:7;7589:23;7585:32;7582:2;;;7630:1;7627;7620:12;7582:2;7673:1;7698:53;7743:7;7734:6;7723:9;7719:22;7698:53;:::i;:::-;7688:63;;7644:117;7800:2;7826:53;7871:7;7862:6;7851:9;7847:22;7826:53;:::i;:::-;7816:63;;7771:118;7572:324;;;;;:::o;7902:258::-;;8008:2;7996:9;7987:7;7983:23;7979:32;7976:2;;;8024:1;8021;8014:12;7976:2;8067:1;8092:51;8135:7;8126:6;8115:9;8111:22;8092:51;:::i;:::-;8082:61;;8038:115;7966:194;;;;:::o;8166:179::-;;8256:46;8298:3;8290:6;8256:46;:::i;:::-;8334:4;8329:3;8325:14;8311:28;;8246:99;;;;:::o;8351:118::-;8438:24;8456:5;8438:24;:::i;:::-;8433:3;8426:37;8416:53;;:::o;8509:700::-;8647:53;8694:5;8647:53;:::i;:::-;8716:85;8794:6;8789:3;8716:85;:::i;:::-;8709:92;;8825:55;8874:5;8825:55;:::i;:::-;8903:7;8934:1;8919:283;8944:6;8941:1;8938:13;8919:283;;;9020:6;9014:13;9047:63;9106:3;9091:13;9047:63;:::i;:::-;9040:70;;9133:59;9185:6;9133:59;:::i;:::-;9123:69;;8979:223;8966:1;8963;8959:9;8954:14;;8919:283;;;8923:14;8623:586;;;;;:::o;9215:109::-;9296:21;9311:5;9296:21;:::i;:::-;9291:3;9284:34;9274:50;;:::o;9330:157::-;9430:50;9474:5;9430:50;:::i;:::-;9425:3;9418:63;9408:79;;:::o;9493:364::-;;9609:39;9642:5;9609:39;:::i;:::-;9664:71;9728:6;9723:3;9664:71;:::i;:::-;9657:78;;9744:52;9789:6;9784:3;9777:4;9770:5;9766:16;9744:52;:::i;:::-;9821:29;9843:6;9821:29;:::i;:::-;9816:3;9812:39;9805:46;;9585:272;;;;;:::o;9863:366::-;;10026:67;10090:2;10085:3;10026:67;:::i;:::-;10019:74;;10102:93;10191:3;10102:93;:::i;:::-;10220:2;10215:3;10211:12;10204:19;;10009:220;;;:::o;10235:366::-;;10398:67;10462:2;10457:3;10398:67;:::i;:::-;10391:74;;10474:93;10563:3;10474:93;:::i;:::-;10592:2;10587:3;10583:12;10576:19;;10381:220;;;:::o;10607:366::-;;10770:67;10834:2;10829:3;10770:67;:::i;:::-;10763:74;;10846:93;10935:3;10846:93;:::i;:::-;10964:2;10959:3;10955:12;10948:19;;10753:220;;;:::o;10979:366::-;;11142:67;11206:2;11201:3;11142:67;:::i;:::-;11135:74;;11218:93;11307:3;11218:93;:::i;:::-;11336:2;11331:3;11327:12;11320:19;;11125:220;;;:::o;11351:366::-;;11514:67;11578:2;11573:3;11514:67;:::i;:::-;11507:74;;11590:93;11679:3;11590:93;:::i;:::-;11708:2;11703:3;11699:12;11692:19;;11497:220;;;:::o;11723:366::-;;11886:67;11950:2;11945:3;11886:67;:::i;:::-;11879:74;;11962:93;12051:3;11962:93;:::i;:::-;12080:2;12075:3;12071:12;12064:19;;11869:220;;;:::o;12095:366::-;;12258:67;12322:2;12317:3;12258:67;:::i;:::-;12251:74;;12334:93;12423:3;12334:93;:::i;:::-;12452:2;12447:3;12443:12;12436:19;;12241:220;;;:::o;12467:366::-;;12630:67;12694:2;12689:3;12630:67;:::i;:::-;12623:74;;12706:93;12795:3;12706:93;:::i;:::-;12824:2;12819:3;12815:12;12808:19;;12613:220;;;:::o;12839:108::-;12916:24;12934:5;12916:24;:::i;:::-;12911:3;12904:37;12894:53;;:::o;12953:118::-;13040:24;13058:5;13040:24;:::i;:::-;13035:3;13028:37;13018:53;;:::o;13077:112::-;13160:22;13176:5;13160:22;:::i;:::-;13155:3;13148:35;13138:51;;:::o;13195:222::-;;13326:2;13315:9;13311:18;13303:26;;13339:71;13407:1;13396:9;13392:17;13383:6;13339:71;:::i;:::-;13293:124;;;;:::o;13423:332::-;;13582:2;13571:9;13567:18;13559:26;;13595:71;13663:1;13652:9;13648:17;13639:6;13595:71;:::i;:::-;13676:72;13744:2;13733:9;13729:18;13720:6;13676:72;:::i;:::-;13549:206;;;;;:::o;13761:442::-;;13948:2;13937:9;13933:18;13925:26;;13961:71;14029:1;14018:9;14014:17;14005:6;13961:71;:::i;:::-;14042:72;14110:2;14099:9;14095:18;14086:6;14042:72;:::i;:::-;14124;14192:2;14181:9;14177:18;14168:6;14124:72;:::i;:::-;13915:288;;;;;;:::o;14209:332::-;;14368:2;14357:9;14353:18;14345:26;;14381:71;14449:1;14438:9;14434:17;14425:6;14381:71;:::i;:::-;14462:72;14530:2;14519:9;14515:18;14506:6;14462:72;:::i;:::-;14335:206;;;;;:::o;14547:319::-;;14726:3;14715:9;14711:19;14703:27;;14740:119;14856:1;14845:9;14841:17;14832:6;14740:119;:::i;:::-;14693:173;;;;:::o;14872:736::-;;15177:3;15166:9;15162:19;15154:27;;15191:119;15307:1;15296:9;15292:17;15283:6;15191:119;:::i;:::-;15320:73;15388:3;15377:9;15373:19;15364:6;15320:73;:::i;:::-;15403:121;15519:3;15508:9;15504:19;15495:6;15403:121;:::i;:::-;15534:67;15596:3;15585:9;15581:19;15572:6;15534:67;:::i;:::-;15144:464;;;;;;;:::o;15614:210::-;;15739:2;15728:9;15724:18;15716:26;;15752:65;15814:1;15803:9;15799:17;15790:6;15752:65;:::i;:::-;15706:118;;;;:::o;15830:248::-;;15974:2;15963:9;15959:18;15951:26;;15987:84;16068:1;16057:9;16053:17;16044:6;15987:84;:::i;:::-;15941:137;;;;:::o;16084:313::-;;16235:2;16224:9;16220:18;16212:26;;16284:9;16278:4;16274:20;16270:1;16259:9;16255:17;16248:47;16312:78;16385:4;16376:6;16312:78;:::i;:::-;16304:86;;16202:195;;;;:::o;16403:419::-;;16607:2;16596:9;16592:18;16584:26;;16656:9;16650:4;16646:20;16642:1;16631:9;16627:17;16620:47;16684:131;16810:4;16684:131;:::i;:::-;16676:139;;16574:248;;;:::o;16828:419::-;;17032:2;17021:9;17017:18;17009:26;;17081:9;17075:4;17071:20;17067:1;17056:9;17052:17;17045:47;17109:131;17235:4;17109:131;:::i;:::-;17101:139;;16999:248;;;:::o;17253:419::-;;17457:2;17446:9;17442:18;17434:26;;17506:9;17500:4;17496:20;17492:1;17481:9;17477:17;17470:47;17534:131;17660:4;17534:131;:::i;:::-;17526:139;;17424:248;;;:::o;17678:419::-;;17882:2;17871:9;17867:18;17859:26;;17931:9;17925:4;17921:20;17917:1;17906:9;17902:17;17895:47;17959:131;18085:4;17959:131;:::i;:::-;17951:139;;17849:248;;;:::o;18103:419::-;;18307:2;18296:9;18292:18;18284:26;;18356:9;18350:4;18346:20;18342:1;18331:9;18327:17;18320:47;18384:131;18510:4;18384:131;:::i;:::-;18376:139;;18274:248;;;:::o;18528:419::-;;18732:2;18721:9;18717:18;18709:26;;18781:9;18775:4;18771:20;18767:1;18756:9;18752:17;18745:47;18809:131;18935:4;18809:131;:::i;:::-;18801:139;;18699:248;;;:::o;18953:419::-;;19157:2;19146:9;19142:18;19134:26;;19206:9;19200:4;19196:20;19192:1;19181:9;19177:17;19170:47;19234:131;19360:4;19234:131;:::i;:::-;19226:139;;19124:248;;;:::o;19378:419::-;;19582:2;19571:9;19567:18;19559:26;;19631:9;19625:4;19621:20;19617:1;19606:9;19602:17;19595:47;19659:131;19785:4;19659:131;:::i;:::-;19651:139;;19549:248;;;:::o;19803:222::-;;19934:2;19923:9;19919:18;19911:26;;19947:71;20015:1;20004:9;20000:17;19991:6;19947:71;:::i;:::-;19901:124;;;;:::o;20031:320::-;;20184:2;20173:9;20169:18;20161:26;;20197:71;20265:1;20254:9;20250:17;20241:6;20197:71;:::i;:::-;20278:66;20340:2;20329:9;20325:18;20316:6;20278:66;:::i;:::-;20151:200;;;;;:::o;20357:214::-;;20484:2;20473:9;20469:18;20461:26;;20497:67;20561:1;20550:9;20546:17;20537:6;20497:67;:::i;:::-;20451:120;;;;:::o;20577:656::-;;20816:3;20805:9;20801:19;20793:27;;20830:67;20894:1;20883:9;20879:17;20870:6;20830:67;:::i;:::-;20907:72;20975:2;20964:9;20960:18;20951:6;20907:72;:::i;:::-;20989;21057:2;21046:9;21042:18;21033:6;20989:72;:::i;:::-;21071;21139:2;21128:9;21124:18;21115:6;21071:72;:::i;:::-;21153:73;21221:3;21210:9;21206:19;21197:6;21153:73;:::i;:::-;20783:450;;;;;;;;:::o;21239:129::-;;21300:20;;:::i;:::-;21290:30;;21329:33;21357:4;21349:6;21329:33;:::i;:::-;21280:88;;;:::o;21374:75::-;;21440:2;21434:9;21424:19;;21414:35;:::o;21455:311::-;;21622:18;21614:6;21611:30;21608:2;;;21644:18;;:::i;:::-;21608:2;21694:4;21686:6;21682:17;21674:25;;21754:4;21748;21744:15;21736:23;;21537:229;;;:::o;21772:250::-;;21938:18;21930:6;21927:30;21924:2;;;21960:18;;:::i;:::-;21924:2;22010:4;22002:6;21998:17;21990:25;;21853:169;;;:::o;22028:311::-;;22195:18;22187:6;22184:30;22181:2;;;22217:18;;:::i;:::-;22181:2;22267:4;22259:6;22255:17;22247:25;;22327:4;22321;22317:15;22309:23;;22110:229;;;:::o;22345:99::-;;22434:3;22426:11;;22416:28;;;:::o;22450:105::-;;22544:4;22534:14;;22523:32;;;:::o;22561:99::-;;22647:5;22641:12;22631:22;;22620:40;;;:::o;22666:112::-;;22767:4;22762:3;22758:14;22750:22;;22740:38;;;:::o;22784:144::-;;22919:3;22904:18;;22894:34;;;;:::o;22934:169::-;;23052:6;23047:3;23040:19;23092:4;23087:3;23083:14;23068:29;;23030:73;;;;:::o;23109:305::-;;23168:20;23186:1;23168:20;:::i;:::-;23163:25;;23202:20;23220:1;23202:20;:::i;:::-;23197:25;;23356:1;23288:66;23284:74;23281:1;23278:81;23275:2;;;23362:18;;:::i;:::-;23275:2;23406:1;23403;23399:9;23392:16;;23153:261;;;;:::o;23420:185::-;;23477:20;23495:1;23477:20;:::i;:::-;23472:25;;23511:20;23529:1;23511:20;:::i;:::-;23506:25;;23550:1;23540:2;;23555:18;;:::i;:::-;23540:2;23597:1;23594;23590:9;23585:14;;23462:143;;;;:::o;23611:348::-;;23674:20;23692:1;23674:20;:::i;:::-;23669:25;;23708:20;23726:1;23708:20;:::i;:::-;23703:25;;23896:1;23828:66;23824:74;23821:1;23818:81;23813:1;23806:9;23799:17;23795:105;23792:2;;;23903:18;;:::i;:::-;23792:2;23951:1;23948;23944:9;23933:20;;23659:300;;;;:::o;23965:191::-;;24025:20;24043:1;24025:20;:::i;:::-;24020:25;;24059:20;24077:1;24059:20;:::i;:::-;24054:25;;24098:1;24095;24092:8;24089:2;;;24103:18;;:::i;:::-;24089:2;24148:1;24145;24141:9;24133:17;;24010:146;;;;:::o;24162:96::-;;24228:24;24246:5;24228:24;:::i;:::-;24217:35;;24207:51;;;:::o;24264:90::-;;24341:5;24334:13;24327:21;24316:32;;24306:48;;;:::o;24360:126::-;;24437:42;24430:5;24426:54;24415:65;;24405:81;;;:::o;24492:77::-;;24558:5;24547:16;;24537:32;;;:::o;24575:86::-;;24650:4;24643:5;24639:16;24628:27;;24618:43;;;:::o;24667:152::-;;24763:50;24807:5;24763:50;:::i;:::-;24750:63;;24740:79;;;:::o;24825:126::-;;24921:24;24939:5;24921:24;:::i;:::-;24908:37;;24898:53;;;:::o;24957:307::-;25025:1;25035:113;25049:6;25046:1;25043:13;25035:113;;;25134:1;25129:3;25125:11;25119:18;25115:1;25110:3;25106:11;25099:39;25071:2;25068:1;25064:10;25059:15;;25035:113;;;25166:6;25163:1;25160:13;25157:2;;;25246:1;25237:6;25232:3;25228:16;25221:27;25157:2;25006:258;;;;:::o;25270:281::-;25353:27;25375:4;25353:27;:::i;:::-;25345:6;25341:40;25483:6;25471:10;25468:22;25447:18;25435:10;25432:34;25429:62;25426:2;;;25494:18;;:::i;:::-;25426:2;25534:10;25530:2;25523:22;25313:238;;;:::o;25557:233::-;;25619:24;25637:5;25619:24;:::i;:::-;25610:33;;25665:66;25658:5;25655:77;25652:2;;;25735:18;;:::i;:::-;25652:2;25782:1;25775:5;25771:13;25764:20;;25600:190;;;:::o;25796:180::-;25844:77;25841:1;25834:88;25941:4;25938:1;25931:15;25965:4;25962:1;25955:15;25982:180;26030:77;26027:1;26020:88;26127:4;26124:1;26117:15;26151:4;26148:1;26141:15;26168:180;26216:77;26213:1;26206:88;26313:4;26310:1;26303:15;26337:4;26334:1;26327:15;26354:102;;26446:2;26442:7;26437:2;26430:5;26426:14;26422:28;26412:38;;26402:54;;;:::o;26462:178::-;26602:30;26598:1;26590:6;26586:14;26579:54;26568:72;:::o;26646:169::-;26786:21;26782:1;26774:6;26770:14;26763:45;26752:63;:::o;26821:164::-;26961:16;26957:1;26949:6;26945:14;26938:40;26927:58;:::o;26991:173::-;27131:25;27127:1;27119:6;27115:14;27108:49;27097:67;:::o;27170:168::-;27310:20;27306:1;27298:6;27294:14;27287:44;27276:62;:::o;27344:169::-;27484:21;27480:1;27472:6;27468:14;27461:45;27450:63;:::o;27519:291::-;27659:34;27655:1;27647:6;27643:14;27636:58;27728:34;27723:2;27715:6;27711:15;27704:59;27797:5;27792:2;27784:6;27780:15;27773:30;27625:185;:::o;27816:170::-;27956:22;27952:1;27944:6;27940:14;27933:46;27922:64;:::o;27992:122::-;28065:24;28083:5;28065:24;:::i;:::-;28058:5;28055:35;28045:2;;28104:1;28101;28094:12;28045:2;28035:79;:::o;28120:116::-;28190:21;28205:5;28190:21;:::i;:::-;28183:5;28180:32;28170:2;;28226:1;28223;28216:12;28170:2;28160:76;:::o;28242:122::-;28315:24;28333:5;28315:24;:::i;:::-;28308:5;28305:35;28295:2;;28354:1;28351;28344:12;28295:2;28285:79;:::o;28370:118::-;28441:22;28457:5;28441:22;:::i;:::-;28434:5;28431:33;28421:2;;28478:1;28475;28468:12;28421:2;28411:77;:::o

Swarm Source

ipfs://b4f23538b1b5a61a0b979ebdd61e8980aaf000db02957c123c55a84c99ae8f95
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.