Contract 0xe2fb177009ff39f52c0134e8007fa0e4baacbd07 4

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x74f8525d95789362546546c0f490e1eb64f02a470b703de27f62d8a47af30fabApprove517332222022-12-01 20:17:272 hrs 47 mins ago0x497f09f2ee68efbdf16febd958b30dc589f8b998 IN  Soul: SOUL Token0 FTM0.006863964118
0xc8f4edcde1ca41b2ef5cc3af269ae62ac675fc3272bc020ea20184e254e6567aApprove517263622022-12-01 17:24:315 hrs 40 mins ago0x4df99a9b8696283230fe012684caf8bb06baa588 IN  Soul: SOUL Token0 FTM0.003438090348
0x50ba876a8a1f49a2a86b84c13a0128fbca0a898f29165b894f74b847f2bb0d16Approve517262142022-12-01 17:20:585 hrs 43 mins ago0x4df99a9b8696283230fe012684caf8bb06baa588 IN  Soul: SOUL Token0 FTM0.003446295113
0x01f8201ac2b9f44d07b49d58cb910baf5bef8cb914931d0701196163c3c5a8ceTransfer517161592022-12-01 12:49:0210 hrs 15 mins agoMEXC: Hot Wallet IN  Soul: SOUL Token0 FTM0.003693504011
0xf680f42a478f3d634401c2ef3a048045725bec2e5b4530ca7abf9bbe00929da1Approve517119962022-12-01 10:42:2312 hrs 22 mins ago0xabfdd5ddacf07d48799abfa6277707c23fde5c09 IN  Soul: SOUL Token0 FTM0.00157004418
0x303879d52897601e3552a804cd933e7bbcc7da58bef48205269c359633c248adTransfer516790762022-11-30 19:27:231 day 3 hrs agoMEXC: Hot Wallet IN  Soul: SOUL Token0 FTM0.017045931209
0x8c08f4c29968f8e643a0a512527deaa746219a477d8217cea87a14d6ad75f649Transfer516733682022-11-30 16:05:121 day 6 hrs agoMEXC: Hot Wallet IN  Soul: SOUL Token0 FTM0.012525553421
0x9cdce0f0e56107868c6f26cf4429d57c4a3b7902c3d14fd964983ecf701741e8Transfer516733402022-11-30 16:03:241 day 7 hrs agoMEXC: Hot Wallet IN  Soul: SOUL Token0 FTM0.010382712573
0x280bff363e96b36aee422906f54552656b4c01ca11734c1b53c73b5e6647bd38Transfer516732922022-11-30 16:00:071 day 7 hrs agoMEXC: Hot Wallet IN  Soul: SOUL Token0 FTM0.004607220031
0x0cf13ce611de4ed90301db3ddc84fee841a3c40ca5711bb851c7a172ccef2b2cApprove516732722022-11-30 15:59:101 day 7 hrs ago0xa0be78d2bac6a692adba423c7af50ec86a18bddf IN  Soul: SOUL Token0 FTM0.005221871267
0xc431173a65e32d0242cec5f70f725e226b91b9c848998953fb77315ddb3ab08fTransfer516732342022-11-30 15:57:091 day 7 hrs agoMEXC: Hot Wallet IN  Soul: SOUL Token0 FTM0.004737697509
0x177781141a5c72d535f69318a9aaf50962b8f9b78f8ed5d96ae31d768b5df612Approve516696792022-11-30 13:49:141 day 9 hrs ago0x38fe1281a44b95c670ac8e559aa67b6cfe1f580b IN  Soul: SOUL Token0 FTM0.012256368595
0x482ced230e836c7871b9324b0490880c89d6d7f3365af8ae9e1b075e516c9d3eTransfer516696382022-11-30 13:47:121 day 9 hrs agoMEXC: Hot Wallet IN  Soul: SOUL Token0 FTM0.047260743353
0x5a7998148af6dce631d3720f4bed059879be4f76737093a7a26eee3fcfae63b3Approve516485292022-11-30 5:19:301 day 17 hrs ago0x88f859db067c45b114897db6920f3e4a61a5ca66 IN  Soul: SOUL Token0 FTM0.002853678882
0x62cc524db0ee0cd75b16d9687904ad1982beaa0cb99a570ac9882d6d087f5e7bApprove516298462022-11-29 22:26:562 days 38 mins ago0xe19895230c2ae34375a83cb1f07f8cf607ed917c IN  Soul: SOUL Token0 FTM0.00174998293
0xb2ed3a468a6208241064cb1181ddb3de9e36def12439b8df79300e3d15a1fbc7Approve516297732022-11-29 22:25:172 days 39 mins ago0xe19895230c2ae34375a83cb1f07f8cf607ed917c IN  Soul: SOUL Token0 FTM0.001441866315
0x9a8cbb8efe3d8f5236c81dc7da1de0a3ff60f440769ca31cdfc5c040701ecf07Approve516153322022-11-29 16:38:192 days 6 hrs ago0x575c0406a1c29d647f1d0a4d0b6370403f5dee05 IN  Soul: SOUL Token0 FTM0.002586454962
0xbcec39e00d2919dfa5c6c59cada66301858dfd7bfa05d2fff5154a836d9b26f8Transfer515901932022-11-29 7:10:342 days 15 hrs ago0x8191da4db0210a911bacb357a68aff31822ea46b IN  Soul: SOUL Token0 FTM0.003281288
0x6053859469531a852d8e9f05d3a6aacdacf6ef919bdd5017d17c234087c56de4Transfer515898912022-11-29 7:03:442 days 16 hrs ago0x1ea6118a50f78a4402bd3db1134f5bf806e1e106 IN  Soul: SOUL Token0 FTM0.0113022
0x88060fa1da7cf03e8f6aae02d5f2c5d4aaaf7c7793048fb4f1ae9a4b28248d90Transfer515855312022-11-29 5:22:272 days 17 hrs ago0x943ed598ea5b08d833aa01c7d48b994d303bcb46 IN  Soul: SOUL Token0 FTM0.005774708
0xde58077ef0e97da1c3659fcdfa49297b68899f85854db7beaf3f635cbe305c9fTransfer515850212022-11-29 5:09:032 days 17 hrs ago0x1f0489701e0c3c115cd72e4f211cd90bf6b2c2e4 IN  Soul: SOUL Token0 FTM0.004323685064
0xe7c7663adfc88669fd63ff2d9685e11ad8c485abbbef80f537f4bac06a1cd0e3Transfer515840212022-11-29 4:49:032 days 18 hrs ago0x8191da4db0210a911bacb357a68aff31822ea46b IN  Soul: SOUL Token0 FTM0.005548743022
0x0b04118720dbcfc9d47d8aa9aff9ea86637a3ea2b3e7c001f3c37492e8078a95Transfer515840212022-11-29 4:49:032 days 18 hrs ago0x331cff37349f73a000b403d28bd4c2eaab0c9544 IN  Soul: SOUL Token0 FTM0.005548743022
0xc0a65de55b38814befaa506fc9add2af72f331028cf675e91254c72fe6814762Approve515836892022-11-29 4:41:462 days 18 hrs ago0x88f859db067c45b114897db6920f3e4a61a5ca66 IN  Soul: SOUL Token0 FTM0.004931831333
0xbef54e3d452cffe8cf53c15b598043c8d1ccedad65fb5f6ac531596b491ad0ebTransfer515836732022-11-29 4:41:182 days 18 hrs ago0x1ea6118a50f78a4402bd3db1134f5bf806e1e106 IN  Soul: SOUL Token0 FTM0.011904984
[ Download CSV Export 

OVERVIEW

Soul is an algorithmic, cross-chain AMM and P2P lending protocol (on Fantom) built for traders, investors, developers, and visionaries seeking to unlock a universe of open financial applications.

Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x073433b6e9c82f1d7416e61f7962579525d1d6525b9a3bd965a32e0a8825e5d8139408692021-08-06 14:42:42482 days 8 hrs ago Soul: Deployer  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SoulPower

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at FtmScan.com on 2021-08-06
*/

/*--------------------------------------------------------------------------------------------------
====================================================================================================
*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~
~~~*~~~*~~~* SoulPower.sol |*||*| SPDX-License-Identifier: MIT |*||*| 0xBuns + DeGatchi ~~~*~~~*~~~*
*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~
====================================================================================================
----------------------------------------------------------------------------------------------------
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNy//yNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNs-..-yNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNs-.oo.-sNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmo..sNNs..sNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmo.-sNMMNs-.omMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd+.:yNMMMMNy:`+dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh+`:yMMMMMMMMy:`+dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh/`/hMMMMMMMMMMh\`/hMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNy:./hMMMMMMMMMMMMd\.:hMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNy:.+dMMMMMMMMMMMMMMd+.:yNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNs-.omMMMMMMMMMMMMMMMMmo.-sNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMms-.omMMMMMMMMMMMMMMMMMMmo.-sNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmo.-sNMMMMMMMMMMMMMMMMMMMMNs-.omMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmo.-sNMMMMMMMMMMMMMMMMMMMMMMNs-.omMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd+.:yNMMMMMMMMMMMMMMMMMMMMMMMMNy:.+dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd/.:hMMMMMNMMMMMMMMMNNMMMMMMMMMMMh:`/dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh/`/hMMNdho/:-..--::::-..--:+shmMMMh\`/hMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMy:`/dNho:-```-/shdmNNNmmdy+:.``.-/ydMd\`:hMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMNy:`/yy\.-/:.-odNMMMMMMMMMMMMNh/./y+../yy\`:yMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMNs-./:.-yhs:`+dMMMMMNdhyhhmNMMMMNs-.yhs:.-/\.-sNMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMsm.`:.:sdNd:`+dMMMdo.s.p.e.l.l.dMMMdo-.sNNh+-.:`msNMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMmo.`/.ymMMNo`:hMMMM-y.-sdmmds-.y-MMMMh`:hMMMdo:\`.omMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMd+../hMMMMMs.`yMMMMMm+/d(soul)b\+sMMMMMy`.sMMMMMh\-`+dmMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMd+..-+dMMMd/`+`uMMMMM.`/6\/.6.\/6\`.MOMMMy`-.dMMMd/`-.+dMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMh/./:`.ooyMMMy`-MOMMM`..`XOXOXOXO`..`MMMOM-`yMMMyoo.`:\.\hMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMh/./hNmy/.-ohNMy-.oNMMMNy/--:/:\:--\odMMMMh:`+mMNms\hNmy\.\hMhMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMNy:.+dMMMMmy+--/who-.omMMMMN.fantom.NMMMNmo.-who\--+yMMMMmd+.:yNMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMNy:.+dMMMMMMMNds/--/+:./yNMMMMMMMMMMMMMNdo-.//:--+ymMMMMMMMMb+.:yNMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMNs-.omMMMMMMMMMMMNdo/--.`.:shmNNNMMNNNdy+-``--:+ymNMMMMMMMMMMMmo.-sNMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMms-.omMMMMMMMMMMMMMMMNmyo/-...-:/++++/:-..-:+shmNMMMMMMMMMMMMMMMmo.-smMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMmo.-sNMMMMMMMMMMMMMMMMMMMMNmdhso++////++sydmNMMMMMMMMMMMMMMMMMMMMMNs-.omMMMMMMMMMMMMMM
MMMMMMMMMMMMMm+.-yNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNy-.+mMMMMMMMMMMMMM
MMMMMMMMMMMMd+`:yMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMy:`+dMMMMMMMMMMMM
MMMMMMMMMMMh/`/hMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh\`/hMMMMMMMMMMM
MMMMMMMMMMh:`/dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd\`:hMMMMMMMMMM
MMMMMMMMNy:.+dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd+.:yNMMMMMMMM
MMMMMMNy-`:+seancessssssoooooooooooooooooooooooooooooooooooooooooooooooooooooooosscircle+:`-yNMMMMMM
MMMMMMMNs::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::sNMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
====================================================================================================
~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*
====================================================================================================
--------------------------------------------------------------------------------------------------*/

pragma solidity ^0.8.0;

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) { return msg.sender; }
    function _msgData() internal view virtual returns (bytes calldata) { return msg.data; }
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint) private _balances;
    mapping(address => mapping(address => uint)) private _allowances;
    uint private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) { return _name; }
    function symbol() public view virtual override returns (string memory) { return _symbol; }
    function decimals() public view virtual override returns (uint8) { return 18; }
    function totalSupply() public view virtual override returns (uint) { return _totalSupply; }
    function balanceOf(address account) public view virtual override returns (uint) { return _balances[account]; }
    function transfer(address recipient, uint amount) public virtual override returns (bool) { 
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        uint currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, 'ERC20: transfer amount exceeds allowance');
        _approve(sender, _msgSender(), currentAllowance - amount);
        return true;
    }

    function increaseAllowance(address spender, uint addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint subtractedValue) public virtual returns (bool) {
        uint currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, 'ERC20: decreased allowance below zero');
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        return true;
    }

    function _transfer(address sender, address recipient, uint amount) internal virtual {
        require(sender != address(0), 'ERC20: transfer from the zero address');
        require(recipient != address(0), 'ERC20: transfer to the zero address');
        _beforeTokenTransfer(sender, recipient, amount);
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, 'ERC20: transfer amount exceeds balance');
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;
        
        emit Transfer(sender, recipient, amount);
        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint amount) internal virtual {
        require(account != address(0), 'ERC20: mint to the zero address');
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply += amount;
        _balances[account] += amount;
        
        emit Transfer(address(0), account, amount);
        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint amount) internal virtual {
        require(account != address(0), 'ERC20: burn from the zero address');
        _beforeTokenTransfer(account, address(0), amount);
        uint accountBalance = _balances[account];
        require(accountBalance >= amount, 'ERC20: burn amount exceeds balance');
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;
        
        emit Transfer(account, address(0), amount);
        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(address owner, address spender, uint amount) internal virtual {
        require(owner != address(0), 'ERC20: approve from the zero address');
        require(spender != address(0), 'ERC20: approve to the zero address');
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _beforeTokenTransfer(address from, address to, uint amount) internal virtual {}
    function _afterTokenTransfer(address from, address to, uint amount) internal virtual {}
}

library Strings {
    bytes16 private constant _HEX_SYMBOLS = '0123456789abcdef';

    function toString(uint value) internal pure returns (string memory) {
        if (value == 0) { return '0'; }
        uint temp = value;
        uint digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    function toHexString(uint value) internal pure returns (string memory) {
        if (value == 0) { return '0x00'; }
        uint temp = value;
        uint length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    function toHexString(uint value, uint length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = '0';
        buffer[1] = 'x';
        for (uint i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, 'Strings: hex length insufficient');
        return string(buffer);
    }
}

interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); }

abstract contract ERC165 is IERC165 {
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

interface IAccessControl {
    function hasRole(bytes32 role, address account) external view returns (bool);
    function getRoleAdmin(bytes32 role) external view returns (bytes32);
    function grantRole(bytes32 role, address account) external;
    function revokeRole(bytes32 role, address account) external;
    function renounceRole(bytes32 role, address account) external;
}

abstract contract AccessControl is Context, IAccessControl, ERC165 {
    struct RoleData {  mapping(address => bool) members; bytes32 adminRole; }
    mapping(bytes32 => RoleData) private _roles;
    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;
    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
    modifier onlyRole(bytes32 role) {
        _checkRole(role, _msgSender());
        _;
    }

    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);
    }

    function hasRole(bytes32 role, address account) public view override returns (bool) {
        return _roles[role].members[account];
    }

    function _checkRole(bytes32 role, address account) internal view {
        if (!hasRole(role, account)) {
            revert(string(abi.encodePacked(
                'AccessControl: account ', Strings.toHexString(uint160(account), 20),
                ' is missing role ', Strings.toHexString(uint(role), 32)))
            );
        }
    }

    function getRoleAdmin(bytes32 role) public view override returns (bytes32) { return _roles[role].adminRole; }

    function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
        _grantRole(role, account);
    }

    function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
        _revokeRole(role, account);
    }

    function renounceRole(bytes32 role, address account) public virtual override {
        require(account == _msgSender(), 'AccessControl: can only renounce roles for self');
        _revokeRole(role, account);
    }

    function _setupRole(bytes32 role, address account) internal virtual {
        _grantRole(role, account);
    }

    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
        emit RoleAdminChanged(role, getRoleAdmin(role), adminRole);
        _roles[role].adminRole = adminRole;
    }

    function _grantRole(bytes32 role, address account) private {
        if (!hasRole(role, account)) {
            _roles[role].members[account] = true;
            emit RoleGranted(role, account, _msgSender());
        }
    }

    function _revokeRole(bytes32 role, address account) private {
        if (hasRole(role, account)) {
            _roles[role].members[account] = false;
            emit RoleRevoked(role, account, _msgSender());
        }
    }
}

// ----------------------------------------------
//       SoulPower 2021 | 0xBuns + DeGatchi
// ----------------------------------------------

contract SoulPower is ERC20('SoulPower', 'SOUL'), AccessControl {

    address public supreme;     // supreme divine
    bytes32 public anunnaki;   // admin role
    bytes32 public thoth;     // minter role

    bytes32 public constant DOMAIN_TYPEHASH = // EIP-712 typehash for the contract's domain
        keccak256('EIP712Domain(string name,uint chainId,address verifyingContract)');
    bytes32 public constant DELEGATION_TYPEHASH = // EIP-712 typehash for the delegation struct used by the contract
        keccak256('Delegation(address delegatee,uint nonce,uint expiry)'); 

    // mappings for user accounts (address)
    mapping(address => mapping(uint => Checkpoint)) public checkpoints;     // vote checkpoints
    mapping(address => uint) public numCheckpoints;                       // checkpoint count
    mapping(address => uint) public nonces;                             // signing / validating states
    mapping(address => address) internal _delegates;                  // each accounts' delegate

    struct Checkpoint {  // checkpoint for marking number of votes from a given timestamp
        uint fromTime;
        uint votes;
    }

    event NewSupreme(address supreme);
    event Rethroned(bytes32 role, address oldAccount, address newAccount);
    event DelegateChanged( // emitted when an account changes its delegate
        address indexed delegator,
        address indexed fromDelegate,
        address indexed toDelegate
    );
    event DelegateVotesChanged( // emitted when a delegate account's vote balance changes
        address indexed delegate,
        uint previousBalance,
        uint newBalance
    );

    // restricted to the house of the role passed as an object to obey
    modifier obey(bytes32 role) {
        _checkRole(role, _msgSender());
        _;
    }

    // channels the authority vested in anunnaki and thoth to the supreme
    constructor(address _supreme) {
        supreme = _supreme;
        anunnaki = keccak256('anunnaki'); // alpha supreme
        thoth = keccak256('thoth');      // god of wisdom and magic

        _divinationRitual(DEFAULT_ADMIN_ROLE, DEFAULT_ADMIN_ROLE, supreme); // supreme as root admin
        _divinationRitual(anunnaki, anunnaki, supreme);                    // anunnaki as admin of anunnaki
        _divinationRitual(thoth, anunnaki, supreme);                      // anunnaki as admin of thoth
    }

    // solidifies roles (internal)
    function _divinationRitual(bytes32 _role, bytes32 _adminRole, address _account) internal {
        _setupRole(_role, _account);
        _setRoleAdmin(_role, _adminRole);
    }

    // grants `role` to `newAccount` && renounces `role` from `oldAccount` (public role)
    function rethroneRitual(bytes32 role, address oldAccount, address newAccount) public obey(role) {
        require(oldAccount != newAccount, 'must be a new address');
        grantRole(role, newAccount);     // grants new account
        renounceRole(role, oldAccount); //  removes old account of role

        emit Rethroned(role, oldAccount, newAccount);
    }

    // updates supreme address (public anunnaki)
    function newSupreme(address _supreme) public obey(anunnaki) {
        require(supreme != _supreme, 'make a change, be the change');  //  prevents self-destruct
        rethroneRitual(DEFAULT_ADMIN_ROLE, supreme, _supreme);        //   empowers new supreme
        supreme = _supreme;

        emit NewSupreme(supreme);
    }

    // checks whether sender has divine role (public view)
    function hasDivineRole(bytes32 role) public view returns (bool) {
        return hasRole(role, msg.sender);
    }

    // mints soul power as the house of thoth so wills (public thoth)
    function mint(address _to, uint _amount) public obey(thoth) {
        _mint(_to, _amount);
        _moveDelegates(address(0), _delegates[_to], _amount);
    }

    // destroys `amount` tokens from the caller (public)
    function burn(uint amount) public {
        _burn(_msgSender(), amount);
        _moveDelegates(_delegates[_msgSender()], address(0), amount);
    }

    // destroys `amount` tokens from the `account` (public)
    function burnFrom(address account, uint amount) public {
        uint currentAllowance = allowance(account, _msgSender());
        require(currentAllowance >= amount, 'burn amount exceeds allowance');

        _approve(account, _msgSender(), currentAllowance - amount);
        _burn(account, amount);
        _moveDelegates(_delegates[account], address(0), amount);
    }

    // returns the address delegated by a given delegator (external view)
    function delegates(address delegator) external view returns (address) {
        return _delegates[delegator];
    }

    // delegates to the `delegatee` (external)
    function delegate(address delegatee) external {
        return _delegate(msg.sender, delegatee);
    }

    // delegates votes from signatory to `delegatee` (external)
    function delegateBySig(
        address delegatee,
        uint nonce,
        uint expiry,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external {
        bytes32 domainSeparator = keccak256(
            abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name())), getChainId(), address(this))
        );

        bytes32 structHash = keccak256(
            abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry)
        );

        bytes32 digest = keccak256(
            abi.encodePacked('\x19\x01', domainSeparator, structHash)
        );

        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), 'delegateBySig: invalid signature');
        require(nonce == nonces[signatory]++, 'delegateBySig: invalid nonce');
        require(block.timestamp <= expiry, 'delegateBySig: signature expired');
        return _delegate(signatory, delegatee);
    }

    // returns current votes balance for `account` (external view)
    function getCurrentVotes(address account) external view returns (uint) {
        uint nCheckpoints = numCheckpoints[account];
        return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;
    }

    // returns an account's prior vote count as of a given timestamp (external view)
    function getPriorVotes(address account, uint blockTimestamp) external view returns (uint) {
        require(blockTimestamp < block.timestamp, 'getPriorVotes: not yet determined');
        
        uint nCheckpoints = numCheckpoints[account];
        if (nCheckpoints == 0) { return 0; }

        // checks most recent balance
        if (checkpoints[account][nCheckpoints - 1].fromTime <= blockTimestamp) {
            return checkpoints[account][nCheckpoints - 1].votes;
        }

        // checks implicit zero balance
        if (checkpoints[account][0].fromTime > blockTimestamp) {
            return 0;
        }

        uint lower = 0;
        uint upper = nCheckpoints - 1;
        while (upper > lower) {
            uint center = upper - (upper - lower) / 2; // avoids overflow
            Checkpoint memory cp = checkpoints[account][center];
            if (cp.fromTime == blockTimestamp) {
                return cp.votes;
            } else if (cp.fromTime < blockTimestamp) {
                lower = center;
            } else {
                upper = center - 1;
            }
        }

        return checkpoints[account][lower].votes;
    }

    function safe256(uint n, string memory errorMessage) internal pure returns (uint) {
        require(n < type(uint).max, errorMessage);
        return uint(n);
    }

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

    function _delegate(address delegator, address delegatee) internal {
        address currentDelegate = _delegates[delegator];
        uint delegatorBalance = balanceOf(delegator); // balance of underlying SOUL (not scaled)
        _delegates[delegator] = delegatee;
        emit DelegateChanged(delegator, currentDelegate, delegatee);
        _moveDelegates(currentDelegate, delegatee, delegatorBalance);
    }

    function _moveDelegates(address srcRep, address dstRep, uint amount) internal {
        if (srcRep != dstRep && amount > 0) {
            if (srcRep != address(0)) {
                // decreases old representative
                uint srcRepNum = numCheckpoints[srcRep];
                uint srcRepOld = srcRepNum > 0
                    ? checkpoints[srcRep][srcRepNum - 1].votes
                    : 0;
                uint srcRepNew = srcRepOld - amount;
                _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
            }

            if (dstRep != address(0)) {
                // increases new representative
                uint dstRepNum = numCheckpoints[dstRep];
                uint dstRepOld = dstRepNum > 0
                    ? checkpoints[dstRep][dstRepNum - 1].votes
                    : 0;
                uint dstRepNew = dstRepOld + amount;
                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
            }
        }
    }

    function _writeCheckpoint(
        address delegatee,
        uint nCheckpoints,
        uint oldVotes,
        uint newVotes
    ) internal {
        uint blockTimestamp = safe256(block.timestamp, 'block timestamp exceeds 256 bits');

        if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromTime == blockTimestamp) {
            checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;
        } else { 
            checkpoints[delegatee][nCheckpoints] = Checkpoint(blockTimestamp, newVotes);
            numCheckpoints[delegatee] = nCheckpoints + 1;
        }

        emit DelegateVotesChanged(delegatee, oldVotes, newVotes);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_supreme","type":"address"}],"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":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"supreme","type":"address"}],"name":"NewSupreme","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":false,"internalType":"address","name":"oldAccount","type":"address"},{"indexed":false,"internalType":"address","name":"newAccount","type":"address"}],"name":"Rethroned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","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"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"anunnaki","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"checkpoints","outputs":[{"internalType":"uint256","name":"fromTime","type":"uint256"},{"internalType":"uint256","name":"votes","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockTimestamp","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"hasDivineRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_supreme","type":"address"}],"name":"newSupreme","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"oldAccount","type":"address"},{"internalType":"address","name":"newAccount","type":"address"}],"name":"rethroneRitual","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"supreme","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"thoth","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50604051620048f5380380620048f5833981810160405281019062000037919062000503565b6040518060400160405280600981526020017f536f756c506f77657200000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f534f554c000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000bb9291906200043c565b508060049080519060200190620000d49291906200043c565b50505080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f45552d869603260d0572333b5da740bb4eaf623685d53936ee462b64a9a771826007819055507fdffb0b033b8033405f5fb07b08f48c89fa1b4a3d5d5a475c3e2b8df5fbd4da0d600881905550620001a16000801b6000801b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166200021a60201b60201c565b620001da600754600754600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166200021a60201b60201c565b62000213600854600754600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166200021a60201b60201c565b50620005e2565b6200022c83826200024360201b60201c565b6200023e83836200025960201b60201c565b505050565b620002558282620002b760201b60201c565b5050565b806200026b83620003a960201b60201c565b837fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff60405160405180910390a48060056000848152602001908152602001600020600101819055505050565b620002c98282620003c960201b60201c565b620003a55760016005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200034a6200043460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600060056000838152602001908152602001600020600101549050919050565b60006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b8280546200044a9062000563565b90600052602060002090601f0160209004810192826200046e5760008555620004ba565b82601f106200048957805160ff1916838001178555620004ba565b82800160010185558215620004ba579182015b82811115620004b95782518255916020019190600101906200049c565b5b509050620004c99190620004cd565b5090565b5b80821115620004e8576000816000905550600101620004ce565b5090565b600081519050620004fd81620005c8565b92915050565b6000602082840312156200051657600080fd5b60006200052684828501620004ec565b91505092915050565b60006200053c8262000543565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600060028204905060018216806200057c57607f821691505b6020821081141562000593576200059262000599565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b620005d3816200052f565b8114620005df57600080fd5b50565b61430380620005f26000396000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80636fcfff4511610130578063a217fddf116100b8578063c3cda5201161007c578063c3cda520146106eb578063d547741f14610707578063dbaef9b014610723578063dd62ed3e14610753578063e7a324dc1461078357610227565b8063a217fddf1461061f578063a457c2d71461063d578063a6ed77ee1461066d578063a9059cbb1461068b578063b4b5ea57146106bb57610227565b806379cc6790116100ff57806379cc6790146105695780637ecebe001461058557806391d14854146105b557806395d89b41146105e55780639aeb37271461060357610227565b80636fcfff45146104bd57806370a08231146104ed578063743d507c1461051d578063782d6fe11461053957610227565b80632f2ff15d116101b357806340c10f191161018257806340c10f191461041b57806342966c681461043757806348f8bfea14610453578063587cde1e146104715780635c19a95c146104a157610227565b80632f2ff15d14610395578063313ce567146103b157806336568abe146103cf57806339509351146103eb57610227565b8063155dfb50116101fa578063155dfb50146102db57806318160ddd146102f957806320606b701461031757806323b872dd14610335578063248a9ca31461036557610227565b806301ffc9a71461022c57806306fdde031461025c578063095ea7b31461027a5780630cdfebfa146102aa575b600080fd5b61024660048036038101906102419190613122565b6107a1565b60405161025391906135ce565b60405180910390f35b61026461081b565b604051610271919061370a565b60405180910390f35b610294600480360381019061028f9190612fa9565b6108ad565b6040516102a191906135ce565b60405180910390f35b6102c460048036038101906102bf9190612fa9565b6108cb565b6040516102d29291906139a7565b60405180910390f35b6102e36108fc565b6040516102f091906135e9565b60405180910390f35b610301610902565b60405161030e919061398c565b60405180910390f35b61031f61090c565b60405161032c91906135e9565b60405180910390f35b61034f600480360381019061034a9190612f5a565b610930565b60405161035c91906135ce565b60405180910390f35b61037f600480360381019061037a919061306e565b610a31565b60405161038c91906135e9565b60405180910390f35b6103af60048036038101906103aa9190613097565b610a51565b005b6103b9610a7a565b6040516103c691906139d0565b60405180910390f35b6103e960048036038101906103e49190613097565b610a83565b005b61040560048036038101906104009190612fa9565b610b06565b60405161041291906135ce565b60405180910390f35b61043560048036038101906104309190612fa9565b610bb2565b005b610451600480360381019061044c919061314b565b610c40565b005b61045b610cc6565b60405161046891906135b3565b60405180910390f35b61048b60048036038101906104869190612ef5565b610cec565b60405161049891906135b3565b60405180910390f35b6104bb60048036038101906104b69190612ef5565b610d55565b005b6104d760048036038101906104d29190612ef5565b610d62565b6040516104e4919061398c565b60405180910390f35b61050760048036038101906105029190612ef5565b610d7a565b604051610514919061398c565b60405180910390f35b610537600480360381019061053291906130d3565b610dc2565b005b610553600480360381019061054e9190612fa9565b610e98565b604051610560919061398c565b60405180910390f35b610583600480360381019061057e9190612fa9565b6111c3565b005b61059f600480360381019061059a9190612ef5565b6112b2565b6040516105ac919061398c565b60405180910390f35b6105cf60048036038101906105ca9190613097565b6112ca565b6040516105dc91906135ce565b60405180910390f35b6105ed611335565b6040516105fa919061370a565b60405180910390f35b61061d60048036038101906106189190612ef5565b6113c7565b005b61062761153a565b60405161063491906135e9565b60405180910390f35b61065760048036038101906106529190612fa9565b611541565b60405161066491906135ce565b60405180910390f35b610675611635565b60405161068291906135e9565b60405180910390f35b6106a560048036038101906106a09190612fa9565b61163b565b6040516106b291906135ce565b60405180910390f35b6106d560048036038101906106d09190612ef5565b611659565b6040516106e2919061398c565b60405180910390f35b61070560048036038101906107009190612fe5565b611716565b005b610721600480360381019061071c9190613097565b6119ab565b005b61073d6004803603810190610738919061306e565b6119d4565b60405161074a91906135ce565b60405180910390f35b61076d60048036038101906107689190612f1e565b6119e7565b60405161077a919061398c565b60405180910390f35b61078b611a6e565b60405161079891906135e9565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610814575061081382611a92565b5b9050919050565b60606003805461082a90613c0f565b80601f016020809104026020016040519081016040528092919081815260200182805461085690613c0f565b80156108a35780601f10610878576101008083540402835291602001916108a3565b820191906000526020600020905b81548152906001019060200180831161088657829003601f168201915b5050505050905090565b60006108c16108ba611afc565b8484611b04565b6001905092915050565b6009602052816000526040600020602052806000526040600020600091509150508060000154908060010154905082565b60075481565b6000600254905090565b7f797cfab58fcb15f590eb8e4252d5c228ff88f94f907e119e80c4393a946e8f3581565b600061093d848484611ccf565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610988611afc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ff9061382c565b60405180910390fd5b610a2585610a14611afc565b8584610a209190613af3565b611b04565b60019150509392505050565b600060056000838152602001908152602001600020600101549050919050565b610a5a82610a31565b610a6b81610a66611afc565b611f59565b610a758383611ff6565b505050565b60006012905090565b610a8b611afc565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aef9061394c565b60405180910390fd5b610b0282826120d7565b5050565b6000610ba8610b13611afc565b848460016000610b21611afc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ba39190613a12565b611b04565b6001905092915050565b600854610bc681610bc1611afc565b611f59565b610bd083836121b9565b610c3b6000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612319565b505050565b610c51610c4b611afc565b82612576565b610cc3600c6000610c60611afc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600083612319565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610d5f3382612756565b50565b600a6020528060005260406000206000915090505481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b82610dd481610dcf611afc565b611f59565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3a9061384c565b60405180910390fd5b610e4d8483610a51565b610e578484610a83565b7f61d8718e0a8cd948a81621b18092fb2d08d9c1d961369cbf16aab6dc46e3e4b1848484604051610e8a93929190613604565b60405180910390a150505050565b6000428210610edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed39061372c565b60405180910390fd5b6000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415610f335760009150506111bd565b82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184610f829190613af3565b8152602001908152602001600020600001541161100157600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600183610fe79190613af3565b8152602001908152602001600020600101549150506111bd565b82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008081526020019081526020016000206000015411156110665760009150506111bd565b6000806001836110769190613af3565b90505b81811115611163576000600283836110919190613af3565b61109b9190613a68565b826110a69190613af3565b90506000600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206040518060400160405290816000820154815260200160018201548152505090508681600001511415611138578060200151955050505050506111bd565b868160000151101561114c5781935061115c565b6001826111599190613af3565b92505b5050611079565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206001015493505050505b92915050565b60006111d6836111d1611afc565b6119e7565b90508181101561121b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112129061390c565b60405180910390fd5b61123883611227611afc565b84846112339190613af3565b611b04565b6112428383612576565b6112ad600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600084612319565b505050565b600b6020528060005260406000206000915090505481565b60006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60606004805461134490613c0f565b80601f016020809104026020016040519081016040528092919081815260200182805461137090613c0f565b80156113bd5780601f10611392576101008083540402835291602001916113bd565b820191906000526020600020905b8154815290600101906020018083116113a057829003601f168201915b5050505050905090565b6007546113db816113d6611afc565b611f59565b8173ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561146c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611463906138cc565b60405180910390fd5b61149c6000801b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610dc2565b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1c881cf11671f3ab7e97a339a15f6a1d287b427944d2d36d393c0846b1d35757600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161152e91906135b3565b60405180910390a15050565b6000801b81565b60008060016000611550611afc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561160d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116049061392c565b60405180910390fd5b61162a611618611afc565b8585846116259190613af3565b611b04565b600191505092915050565b60085481565b600061164f611648611afc565b8484611ccf565b6001905092915050565b600080600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081116116ad57600061170e565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001836116fb9190613af3565b8152602001908152602001600020600101545b915050919050565b60007f797cfab58fcb15f590eb8e4252d5c228ff88f94f907e119e80c4393a946e8f3561174161081b565b805190602001206117506128c7565b306040516020016117649493929190613680565b60405160208183030381529060405280519060200120905060007f1ac861a6a8532f3704e1768564a53a32774f00d6cf20ccbbdf60ab61378302bc8888886040516020016117b5949392919061363b565b604051602081830303815290604052805190602001209050600082826040516020016117e2929190613542565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161181f94939291906136c5565b6020604051602081039080840390855afa158015611841573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b4906137cc565b60405180910390fd5b600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061190d90613c41565b919050558914611952576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119499061386c565b60405180910390fd5b87421115611995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198c9061380c565b60405180910390fd5b61199f818b612756565b50505050505050505050565b6119b482610a31565b6119c5816119c0611afc565b611f59565b6119cf83836120d7565b505050565b60006119e082336112ca565b9050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f1ac861a6a8532f3704e1768564a53a32774f00d6cf20ccbbdf60ab61378302bc81565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6b906138ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdb906137ac565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611cc2919061398c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d36906138ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da69061376c565b60405180910390fd5b611dba8383836128d4565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e37906137ec565b60405180910390fd5b8181611e4c9190613af3565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611edc9190613a12565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f40919061398c565b60405180910390a3611f538484846128d9565b50505050565b611f6382826112ca565b611ff257611f888173ffffffffffffffffffffffffffffffffffffffff1660146128de565b611f968360001c60206128de565b604051602001611fa7929190613579565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe9919061370a565b60405180910390fd5b5050565b61200082826112ca565b6120d35760016005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612078611afc565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6120e182826112ca565b156121b55760006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061215a611afc565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612229576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122209061396c565b60405180910390fd5b612235600083836128d4565b80600260008282546122479190613a12565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461229c9190613a12565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612301919061398c565b60405180910390a3612315600083836128d9565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123555750600081115b1561257157600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612465576000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008082116123e2576000612443565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001846124309190613af3565b8152602001908152602001600020600101545b9050600083826124539190613af3565b905061246186848484612bd8565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612570576000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008082116124ed57600061254e565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018461253b9190613af3565b8152602001908152602001600020600101545b90506000838261255e9190613a12565b905061256c85848484612bd8565b5050505b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125dd9061388c565b60405180910390fd5b6125f2826000836128d4565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266f9061378c565b60405180910390fd5b81816126849190613af3565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546126d89190613af3565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161273d919061398c565b60405180910390a3612751836000846128d9565b505050565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006127c584610d7a565b905082600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a46128c1828483612319565b50505050565b6000804690508091505090565b505050565b505050565b6060600060028360026128f19190613a99565b6128fb9190613a12565b67ffffffffffffffff81111561293a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561296c5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106129ca577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612a54577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002612a949190613a99565b612a9e9190613a12565b90505b6001811115612b8a577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110612b06577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1a60f81b828281518110612b43577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080612b8390613be5565b9050612aa1565b5060008414612bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc59061374c565b60405180910390fd5b8091505092915050565b6000612c19426040518060400160405280602081526020017f626c6f636b2074696d657374616d702065786365656473203235362062697473815250612e1b565b9050600084118015612c89575080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600187612c759190613af3565b815260200190815260200160002060000154145b15612cf75781600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600187612cdd9190613af3565b815260200190815260200160002060010181905550612dc4565b604051806040016040528082815260200183815250600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000206000820151816000015560208201518160010155905050600184612d809190613a12565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051612e0c9291906139a7565b60405180910390a25050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83108290612e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e79919061370a565b60405180910390fd5b5082905092915050565b600081359050612e9b8161425a565b92915050565b600081359050612eb081614271565b92915050565b600081359050612ec581614288565b92915050565b600081359050612eda8161429f565b92915050565b600081359050612eef816142b6565b92915050565b600060208284031215612f0757600080fd5b6000612f1584828501612e8c565b91505092915050565b60008060408385031215612f3157600080fd5b6000612f3f85828601612e8c565b9250506020612f5085828601612e8c565b9150509250929050565b600080600060608486031215612f6f57600080fd5b6000612f7d86828701612e8c565b9350506020612f8e86828701612e8c565b9250506040612f9f86828701612ecb565b9150509250925092565b60008060408385031215612fbc57600080fd5b6000612fca85828601612e8c565b9250506020612fdb85828601612ecb565b9150509250929050565b60008060008060008060c08789031215612ffe57600080fd5b600061300c89828a01612e8c565b965050602061301d89828a01612ecb565b955050604061302e89828a01612ecb565b945050606061303f89828a01612ee0565b935050608061305089828a01612ea1565b92505060a061306189828a01612ea1565b9150509295509295509295565b60006020828403121561308057600080fd5b600061308e84828501612ea1565b91505092915050565b600080604083850312156130aa57600080fd5b60006130b885828601612ea1565b92505060206130c985828601612e8c565b9150509250929050565b6000806000606084860312156130e857600080fd5b60006130f686828701612ea1565b935050602061310786828701612e8c565b925050604061311886828701612e8c565b9150509250925092565b60006020828403121561313457600080fd5b600061314284828501612eb6565b91505092915050565b60006020828403121561315d57600080fd5b600061316b84828501612ecb565b91505092915050565b61317d81613b27565b82525050565b61318c81613b39565b82525050565b61319b81613b45565b82525050565b6131b26131ad82613b45565b613c8a565b82525050565b60006131c3826139eb565b6131cd81856139f6565b93506131dd818560208601613bb2565b6131e681613d21565b840191505092915050565b60006131fc826139eb565b6132068185613a07565b9350613216818560208601613bb2565b80840191505092915050565b600061322f6021836139f6565b915061323a82613d32565b604082019050919050565b60006132526020836139f6565b915061325d82613d81565b602082019050919050565b60006132756023836139f6565b915061328082613daa565b604082019050919050565b60006132986022836139f6565b91506132a382613df9565b604082019050919050565b60006132bb6022836139f6565b91506132c682613e48565b604082019050919050565b60006132de600283613a07565b91506132e982613e97565b600282019050919050565b60006133016020836139f6565b915061330c82613ec0565b602082019050919050565b60006133246026836139f6565b915061332f82613ee9565b604082019050919050565b60006133476020836139f6565b915061335282613f38565b602082019050919050565b600061336a6028836139f6565b915061337582613f61565b604082019050919050565b600061338d6015836139f6565b915061339882613fb0565b602082019050919050565b60006133b0601c836139f6565b91506133bb82613fd9565b602082019050919050565b60006133d36021836139f6565b91506133de82614002565b604082019050919050565b60006133f66025836139f6565b915061340182614051565b604082019050919050565b6000613419601c836139f6565b9150613424826140a0565b602082019050919050565b600061343c6024836139f6565b9150613447826140c9565b604082019050919050565b600061345f601d836139f6565b915061346a82614118565b602082019050919050565b6000613482601783613a07565b915061348d82614141565b601782019050919050565b60006134a56025836139f6565b91506134b08261416a565b604082019050919050565b60006134c8601183613a07565b91506134d3826141b9565b601182019050919050565b60006134eb602f836139f6565b91506134f6826141e2565b604082019050919050565b600061350e601f836139f6565b915061351982614231565b602082019050919050565b61352d81613b9b565b82525050565b61353c81613ba5565b82525050565b600061354d826132d1565b915061355982856131a1565b60208201915061356982846131a1565b6020820191508190509392505050565b600061358482613475565b915061359082856131f1565b915061359b826134bb565b91506135a782846131f1565b91508190509392505050565b60006020820190506135c86000830184613174565b92915050565b60006020820190506135e36000830184613183565b92915050565b60006020820190506135fe6000830184613192565b92915050565b60006060820190506136196000830186613192565b6136266020830185613174565b6136336040830184613174565b949350505050565b60006080820190506136506000830187613192565b61365d6020830186613174565b61366a6040830185613524565b6136776060830184613524565b95945050505050565b60006080820190506136956000830187613192565b6136a26020830186613192565b6136af6040830185613524565b6136bc6060830184613174565b95945050505050565b60006080820190506136da6000830187613192565b6136e76020830186613533565b6136f46040830185613192565b6137016060830184613192565b95945050505050565b6000602082019050818103600083015261372481846131b8565b905092915050565b6000602082019050818103600083015261374581613222565b9050919050565b6000602082019050818103600083015261376581613245565b9050919050565b6000602082019050818103600083015261378581613268565b9050919050565b600060208201905081810360008301526137a58161328b565b9050919050565b600060208201905081810360008301526137c5816132ae565b9050919050565b600060208201905081810360008301526137e5816132f4565b9050919050565b6000602082019050818103600083015261380581613317565b9050919050565b600060208201905081810360008301526138258161333a565b9050919050565b600060208201905081810360008301526138458161335d565b9050919050565b6000602082019050818103600083015261386581613380565b9050919050565b60006020820190508181036000830152613885816133a3565b9050919050565b600060208201905081810360008301526138a5816133c6565b9050919050565b600060208201905081810360008301526138c5816133e9565b9050919050565b600060208201905081810360008301526138e58161340c565b9050919050565b600060208201905081810360008301526139058161342f565b9050919050565b6000602082019050818103600083015261392581613452565b9050919050565b6000602082019050818103600083015261394581613498565b9050919050565b60006020820190508181036000830152613965816134de565b9050919050565b6000602082019050818103600083015261398581613501565b9050919050565b60006020820190506139a16000830184613524565b92915050565b60006040820190506139bc6000830185613524565b6139c96020830184613524565b9392505050565b60006020820190506139e56000830184613533565b92915050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b6000613a1d82613b9b565b9150613a2883613b9b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a5d57613a5c613c94565b5b828201905092915050565b6000613a7382613b9b565b9150613a7e83613b9b565b925082613a8e57613a8d613cc3565b5b828204905092915050565b6000613aa482613b9b565b9150613aaf83613b9b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ae857613ae7613c94565b5b828202905092915050565b6000613afe82613b9b565b9150613b0983613b9b565b925082821015613b1c57613b1b613c94565b5b828203905092915050565b6000613b3282613b7b565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015613bd0578082015181840152602081019050613bb5565b83811115613bdf576000848401525b50505050565b6000613bf082613b9b565b91506000821415613c0457613c03613c94565b5b600182039050919050565b60006002820490506001821680613c2757607f821691505b60208210811415613c3b57613c3a613cf2565b5b50919050565b6000613c4c82613b9b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c7f57613c7e613c94565b5b600182019050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f6765745072696f72566f7465733a206e6f74207965742064657465726d696e6560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b7f64656c656761746542795369673a20696e76616c6964207369676e6174757265600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f64656c656761746542795369673a207369676e61747572652065787069726564600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f6d7573742062652061206e657720616464726573730000000000000000000000600082015250565b7f64656c656761746542795369673a20696e76616c6964206e6f6e636500000000600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f6d616b652061206368616e67652c20626520746865206368616e676500000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f6275726e20616d6f756e74206578636565647320616c6c6f77616e6365000000600082015250565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61426381613b27565b811461426e57600080fd5b50565b61427a81613b45565b811461428557600080fd5b50565b61429181613b4f565b811461429c57600080fd5b50565b6142a881613b9b565b81146142b357600080fd5b50565b6142bf81613ba5565b81146142ca57600080fd5b5056fea2646970667358221220821d296d9e083956047e769287e96f6b44d9183d3a145161fde297a69d49e3ab64736f6c6343000804003300000000000000000000000081dd37687c74df8f957a370a9a4435d873f5e5a9

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

00000000000000000000000081dd37687c74df8f957a370a9a4435d873f5e5a9

-----Decoded View---------------
Arg [0] : _supreme (address): 0x81dd37687c74df8f957a370a9a4435d873f5e5a9

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000081dd37687c74df8f957a370a9a4435d873f5e5a9


Deployed ByteCode Sourcemap

16142:10001:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13828:204;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6917:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7740:166;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16783:66;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;16266:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7190:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16360:174;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7914:412;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14543:109;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14660:147;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7105:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14972:216;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8334:212;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19922:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20149:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16215:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20831:117;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21004:104;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16880:46;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7287:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18905:367;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22495:1192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20369:379;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16975:38;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14040:139;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7009:90;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19330:330;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13365:49;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8554:369;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16312:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7403:173;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22183:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21181:926;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14815:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19728:115;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7584:148;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16541:187;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13828:204;13913:4;13952:32;13937:47;;;:11;:47;;;;:87;;;;13988:36;14012:11;13988:23;:36::i;:::-;13937:87;13930:94;;13828:204;;;:::o;6917:86::-;6971:13;6995:5;6988:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6917:86;:::o;7740:166::-;7820:4;7837:39;7846:12;:10;:12::i;:::-;7860:7;7869:6;7837:8;:39::i;:::-;7894:4;7887:11;;7740:166;;;;:::o;16783:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16266:23::-;;;;:::o;7190:91::-;7251:4;7266:12;;7259:19;;7190:91;:::o;16360:174::-;16457:77;16360:174;:::o;7914:412::-;8017:4;8034:36;8044:6;8052:9;8063:6;8034:9;:36::i;:::-;8081:21;8105:11;:19;8117:6;8105:19;;;;;;;;;;;;;;;:33;8125:12;:10;:12::i;:::-;8105:33;;;;;;;;;;;;;;;;8081:57;;8177:6;8157:16;:26;;8149:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8239:57;8248:6;8256:12;:10;:12::i;:::-;8289:6;8270:16;:25;;;;:::i;:::-;8239:8;:57::i;:::-;8314:4;8307:11;;;7914:412;;;;;:::o;14543:109::-;14609:7;14627:6;:12;14634:4;14627:12;;;;;;;;;;;:22;;;14620:29;;14543:109;;;:::o;14660:147::-;14743:18;14756:4;14743:12;:18::i;:::-;13770:30;13781:4;13787:12;:10;:12::i;:::-;13770:10;:30::i;:::-;14774:25:::1;14785:4;14791:7;14774:10;:25::i;:::-;14660:147:::0;;;:::o;7105:79::-;7163:5;7179:2;7172:9;;7105:79;:::o;14972:216::-;15079:12;:10;:12::i;:::-;15068:23;;:7;:23;;;15060:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;15154:26;15166:4;15172:7;15154:11;:26::i;:::-;14972:216;;:::o;8334:212::-;8419:4;8436:80;8445:12;:10;:12::i;:::-;8459:7;8505:10;8468:11;:25;8480:12;:10;:12::i;:::-;8468:25;;;;;;;;;;;;;;;:34;8494:7;8468:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;8436:8;:80::i;:::-;8534:4;8527:11;;8334:212;;;;:::o;19922:161::-;19975:5;;17938:30;17949:4;17955:12;:10;:12::i;:::-;17938:10;:30::i;:::-;19993:19:::1;19999:3;20004:7;19993:5;:19::i;:::-;20023:52;20046:1;20050:10;:15;20061:3;20050:15;;;;;;;;;;;;;;;;;;;;;;;;;20067:7;20023:14;:52::i;:::-;19922:161:::0;;;:::o;20149:151::-;20194:27;20200:12;:10;:12::i;:::-;20214:6;20194:5;:27::i;:::-;20232:60;20247:10;:24;20258:12;:10;:12::i;:::-;20247:24;;;;;;;;;;;;;;;;;;;;;;;;;20281:1;20285:6;20232:14;:60::i;:::-;20149:151;:::o;16215:22::-;;;;;;;;;;;;;:::o;20831:117::-;20892:7;20919:10;:21;20930:9;20919:21;;;;;;;;;;;;;;;;;;;;;;;;;20912:28;;20831:117;;;:::o;21004:104::-;21068:32;21078:10;21090:9;21068;:32::i;:::-;21004:104;:::o;16880:46::-;;;;;;;;;;;;;;;;;:::o;7287:110::-;7361:4;7376:9;:18;7386:7;7376:18;;;;;;;;;;;;;;;;7369:25;;7287:110;;;:::o;18905:367::-;18995:4;17938:30;17949:4;17955:12;:10;:12::i;:::-;17938:10;:30::i;:::-;19034:10:::1;19020:24;;:10;:24;;;;19012:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;19081:27;19091:4;19097:10;19081:9;:27::i;:::-;19145:30;19158:4;19164:10;19145:12;:30::i;:::-;19225:39;19235:4;19241:10;19253;19225:39;;;;;;;;:::i;:::-;;;;;;;;18905:367:::0;;;;:::o;22495:1192::-;22579:4;22621:15;22604:14;:32;22596:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;22695:17;22715:14;:23;22730:7;22715:23;;;;;;;;;;;;;;;;22695:43;;22769:1;22753:12;:17;22749:36;;;22781:1;22774:8;;;;;22749:36;22891:14;22840:11;:20;22852:7;22840:20;;;;;;;;;;;;;;;:38;22876:1;22861:12;:16;;;;:::i;:::-;22840:38;;;;;;;;;;;:47;;;:65;22836:149;;22929:11;:20;22941:7;22929:20;;;;;;;;;;;;;;;:38;22965:1;22950:12;:16;;;;:::i;:::-;22929:38;;;;;;;;;;;:44;;;22922:51;;;;;22836:149;23077:14;23042:11;:20;23054:7;23042:20;;;;;;;;;;;;;;;:23;23063:1;23042:23;;;;;;;;;;;:32;;;:49;23038:90;;;23115:1;23108:8;;;;;23038:90;23140:10;23165;23193:1;23178:12;:16;;;;:::i;:::-;23165:29;;23205:422;23220:5;23212;:13;23205:422;;;23242:11;23282:1;23273:5;23265;:13;;;;:::i;:::-;23264:19;;;;:::i;:::-;23256:5;:27;;;;:::i;:::-;23242:41;;23317:20;23340:11;:20;23352:7;23340:20;;;;;;;;;;;;;;;:28;23361:6;23340:28;;;;;;;;;;;23317:51;;;;;;;;;;;;;;;;;;;;;;;;;;;23402:14;23387:2;:11;;;:29;23383:233;;;23444:2;:8;;;23437:15;;;;;;;;;23383:233;23492:14;23478:2;:11;;;:28;23474:142;;;23535:6;23527:14;;23474:142;;;23599:1;23590:6;:10;;;;:::i;:::-;23582:18;;23474:142;23205:422;;;;;23646:11;:20;23658:7;23646:20;;;;;;;;;;;;;;;:27;23667:5;23646:27;;;;;;;;;;;:33;;;23639:40;;;;;22495:1192;;;;;:::o;20369:379::-;20435:21;20459:32;20469:7;20478:12;:10;:12::i;:::-;20459:9;:32::i;:::-;20435:56;;20530:6;20510:16;:26;;20502:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20583:58;20592:7;20601:12;:10;:12::i;:::-;20634:6;20615:16;:25;;;;:::i;:::-;20583:8;:58::i;:::-;20652:22;20658:7;20667:6;20652:5;:22::i;:::-;20685:55;20700:10;:19;20711:7;20700:19;;;;;;;;;;;;;;;;;;;;;;;;;20729:1;20733:6;20685:14;:55::i;:::-;20369:379;;;:::o;16975:38::-;;;;;;;;;;;;;;;;;:::o;14040:139::-;14118:4;14142:6;:12;14149:4;14142:12;;;;;;;;;;;:20;;:29;14163:7;14142:29;;;;;;;;;;;;;;;;;;;;;;;;;14135:36;;14040:139;;;;:::o;7009:90::-;7065:13;7089:7;7082:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7009:90;:::o;19330:330::-;19380:8;;17938:30;17949:4;17955:12;:10;:12::i;:::-;17938:10;:30::i;:::-;19420:8:::1;19409:19;;:7;;;;;;;;;;;:19;;;;19401:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;19500:53;13410:4;19515:18:::0;::::1;19535:7;;;;;;;;;;;19544:8;19500:14;:53::i;:::-;19607:8;19597:7;;:18;;;;;;;;;;;;;;;;;;19633:19;19644:7;;;;;;;;;;;19633:19;;;;;;:::i;:::-;;;;;;;;19330:330:::0;;:::o;13365:49::-;13410:4;13365:49;;;:::o;8554:369::-;8644:4;8661:21;8685:11;:25;8697:12;:10;:12::i;:::-;8685:25;;;;;;;;;;;;;;;:34;8711:7;8685:34;;;;;;;;;;;;;;;;8661:58;;8758:15;8738:16;:35;;8730:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;8826:67;8835:12;:10;:12::i;:::-;8849:7;8877:15;8858:16;:34;;;;:::i;:::-;8826:8;:67::i;:::-;8911:4;8904:11;;;8554:369;;;;:::o;16312:20::-;;;;:::o;7403:173::-;7486:4;7504:42;7514:12;:10;:12::i;:::-;7528:9;7539:6;7504:9;:42::i;:::-;7564:4;7557:11;;7403:173;;;;:::o;22183:218::-;22248:4;22265:17;22285:14;:23;22300:7;22285:23;;;;;;;;;;;;;;;;22265:43;;22341:1;22326:12;:16;:67;;22392:1;22326:67;;;22345:11;:20;22357:7;22345:20;;;;;;;;;;;;;;;:38;22381:1;22366:12;:16;;;;:::i;:::-;22345:38;;;;;;;;;;;:44;;;22326:67;22319:74;;;22183:218;;;:::o;21181:926::-;21360:23;16457:77;21454:6;:4;:6::i;:::-;21438:24;;;;;;21464:12;:10;:12::i;:::-;21486:4;21410:82;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21386:117;;;;;;21360:143;;21516:18;16663:65;21593:9;21604:5;21611:6;21561:57;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21537:92;;;;;;21516:113;;21642:14;21712:15;21729:10;21683:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21659:92;;;;;;21642:109;;21764:17;21784:26;21794:6;21802:1;21805;21808;21784:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21764:46;;21850:1;21829:23;;:9;:23;;;;21821:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21917:6;:17;21924:9;21917:17;;;;;;;;;;;;;;;;:19;;;;;;;;;:::i;:::-;;;;;21908:5;:28;21900:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;22007:6;21988:15;:25;;21980:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;22068:31;22078:9;22089;22068;:31::i;:::-;22061:38;;;;21181:926;;;;;;:::o;14815:149::-;14899:18;14912:4;14899:12;:18::i;:::-;13770:30;13781:4;13787:12;:10;:12::i;:::-;13770:10;:30::i;:::-;14930:26:::1;14942:4;14948:7;14930:11;:26::i;:::-;14815:149:::0;;;:::o;19728:115::-;19786:4;19810:25;19818:4;19824:10;19810:7;:25::i;:::-;19803:32;;19728:115;;;:::o;7584:148::-;7673:4;7697:11;:18;7709:5;7697:18;;;;;;;;;;;;;;;:27;7716:7;7697:27;;;;;;;;;;;;;;;;7690:34;;7584:148;;;;:::o;16541:187::-;16663:65;16541:187;:::o;12609:157::-;12694:4;12733:25;12718:40;;;:11;:40;;;;12711:47;;12609:157;;;:::o;6342:84::-;6395:7;6413:10;6406:17;;6342:84;:::o;10565:341::-;10681:1;10664:19;;:5;:19;;;;10656:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10762:1;10743:21;;:7;:21;;;;10735:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10844:6;10814:11;:18;10826:5;10814:18;;;;;;;;;;;;;;;:27;10833:7;10814:27;;;;;;;;;;;;;;;:36;;;;10882:7;10866:32;;10875:5;10866:32;;;10891:6;10866:32;;;;;;:::i;:::-;;;;;;;;10565:341;;;:::o;8931:659::-;9052:1;9034:20;;:6;:20;;;;9026:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9136:1;9115:23;;:9;:23;;;;9107:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9189:47;9210:6;9218:9;9229:6;9189:20;:47::i;:::-;9247:18;9268:9;:17;9278:6;9268:17;;;;;;;;;;;;;;;;9247:38;;9321:6;9304:13;:23;;9296:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9417:6;9401:13;:22;;;;:::i;:::-;9381:9;:17;9391:6;9381:17;;;;;;;;;;;;;;;:42;;;;9458:6;9434:9;:20;9444:9;9434:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;9507:9;9490:35;;9499:6;9490:35;;;9518:6;9490:35;;;;;;:::i;:::-;;;;;;;;9536:46;9556:6;9564:9;9575:6;9536:19;:46::i;:::-;8931:659;;;;:::o;14187:348::-;14268:22;14276:4;14282:7;14268;:22::i;:::-;14263:265;;14383:41;14411:7;14383:41;;14421:2;14383:19;:41::i;:::-;14464:35;14489:4;14484:10;;14496:2;14464:19;:35::i;:::-;14321:179;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14307:209;;;;;;;;;;;:::i;:::-;;;;;;;;14263:265;14187:348;;:::o;15519:229::-;15594:22;15602:4;15608:7;15594;:22::i;:::-;15589:152;;15665:4;15633:6;:12;15640:4;15633:12;;;;;;;;;;;:20;;:29;15654:7;15633:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;15716:12;:10;:12::i;:::-;15689:40;;15707:7;15689:40;;15701:4;15689:40;;;;;;;;;;15589:152;15519:229;;:::o;15756:230::-;15831:22;15839:4;15845:7;15831;:22::i;:::-;15827:152;;;15902:5;15870:6;:12;15877:4;15870:12;;;;;;;;;;;:20;;:29;15891:7;15870:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;15954:12;:10;:12::i;:::-;15927:40;;15945:7;15927:40;;15939:4;15927:40;;;;;;;;;;15827:152;15756:230;;:::o;9598:400::-;9698:1;9679:21;;:7;:21;;;;9671:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;9747:49;9776:1;9780:7;9789:6;9747:20;:49::i;:::-;9823:6;9807:12;;:22;;;;;;;:::i;:::-;;;;;;;;9862:6;9840:9;:18;9850:7;9840:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;9915:7;9894:37;;9911:1;9894:37;;;9924:6;9894:37;;;;;;:::i;:::-;;;;;;;;9942:48;9970:1;9974:7;9983:6;9942:19;:48::i;:::-;9598:400;;:::o;24451:1008::-;24554:6;24544:16;;:6;:16;;;;:30;;;;;24573:1;24564:6;:10;24544:30;24540:912;;;24613:1;24595:20;;:6;:20;;;24591:417;;24685:14;24702;:22;24717:6;24702:22;;;;;;;;;;;;;;;;24685:39;;24743:14;24772:1;24760:9;:13;:102;;24861:1;24760:102;;;24797:11;:19;24809:6;24797:19;;;;;;;;;;;;;;;:34;24829:1;24817:9;:13;;;;:::i;:::-;24797:34;;;;;;;;;;;:40;;;24760:102;24743:119;;24881:14;24910:6;24898:9;:18;;;;:::i;:::-;24881:35;;24935:57;24952:6;24960:9;24971;24982;24935:16;:57::i;:::-;24591:417;;;;25046:1;25028:20;;:6;:20;;;25024:417;;25118:14;25135;:22;25150:6;25135:22;;;;;;;;;;;;;;;;25118:39;;25176:14;25205:1;25193:9;:13;:102;;25294:1;25193:102;;;25230:11;:19;25242:6;25230:19;;;;;;;;;;;;;;;:34;25262:1;25250:9;:13;;;;:::i;:::-;25230:34;;;;;;;;;;;:40;;;25193:102;25176:119;;25314:14;25343:6;25331:9;:18;;;;:::i;:::-;25314:35;;25368:57;25385:6;25393:9;25404;25415;25368:16;:57::i;:::-;25024:417;;;;24540:912;24451:1008;;;:::o;10006:551::-;10106:1;10087:21;;:7;:21;;;;10079:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10157:49;10178:7;10195:1;10199:6;10157:20;:49::i;:::-;10217:19;10239:9;:18;10249:7;10239:18;;;;;;;;;;;;;;;;10217:40;;10294:6;10276:14;:24;;10268:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10388:6;10371:14;:23;;;;:::i;:::-;10350:9;:18;10360:7;10350:18;;;;;;;;;;;;;;;:44;;;;10421:6;10405:12;;:22;;;;;;;:::i;:::-;;;;;;;;10479:1;10453:37;;10462:7;10453:37;;;10483:6;10453:37;;;;;;:::i;:::-;;;;;;;;10501:48;10521:7;10538:1;10542:6;10501:19;:48::i;:::-;10006:551;;;:::o;24028:415::-;24105:23;24131:10;:21;24142:9;24131:21;;;;;;;;;;;;;;;;;;;;;;;;;24105:47;;24163:21;24187:20;24197:9;24187;:20::i;:::-;24163:44;;24285:9;24261:10;:21;24272:9;24261:21;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;24354:9;24310:54;;24337:15;24310:54;;24326:9;24310:54;;;;;;;;;;;;24375:60;24390:15;24407:9;24418:16;24375:14;:60::i;:::-;24028:415;;;;:::o;23870:150::-;23915:4;23932:12;23977:9;23966:20;;24005:7;23998:14;;;23870:150;:::o;10914:88::-;;;;:::o;11008:87::-;;;;:::o;12015:442::-;12084:13;12110:19;12155:1;12146:6;12142:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;12132:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12110:47;;12168:15;:6;12175:1;12168:9;;;;;;;;;;;;;;;;;;;:15;;;;;;;;;;;12194;:6;12201:1;12194:9;;;;;;;;;;;;;;;;;;;:15;;;;;;;;;;;12225:6;12247:1;12238:6;12234:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;12225:23;;12220:132;12254:1;12250;:5;12220:132;;;12289:12;12310:3;12302:5;:11;12289:25;;;;;;;;;;;;;;;;;;12277:6;12284:1;12277:9;;;;;;;;;;;;;;;;;;;:37;;;;;;;;;;;12339:1;12329:11;;;;;12257:3;;;;:::i;:::-;;;12220:132;;;;12379:1;12370:5;:10;12362:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;12442:6;12428:21;;;12015:442;;;;:::o;25467:673::-;25624:19;25646:60;25654:15;25646:60;;;;;;;;;;;;;;;;;:7;:60::i;:::-;25624:82;;25738:1;25723:12;:16;:87;;;;;25796:14;25743:11;:22;25755:9;25743:22;;;;;;;;;;;;;;;:40;25781:1;25766:12;:16;;;;:::i;:::-;25743:40;;;;;;;;;;;:49;;;:67;25723:87;25719:345;;;25876:8;25827:11;:22;25839:9;25827:22;;;;;;;;;;;;;;;:40;25865:1;25850:12;:16;;;;:::i;:::-;25827:40;;;;;;;;;;;:46;;:57;;;;25719:345;;;25957:36;;;;;;;;25968:14;25957:36;;;;25984:8;25957:36;;;25918:11;:22;25930:9;25918:22;;;;;;;;;;;;;;;:36;25941:12;25918:36;;;;;;;;;;;:75;;;;;;;;;;;;;;;;;;;26051:1;26036:12;:16;;;;:::i;:::-;26008:14;:25;26023:9;26008:25;;;;;;;;;;;;;;;:44;;;;25719:345;26102:9;26081:51;;;26113:8;26123;26081:51;;;;;;;:::i;:::-;;;;;;;;25467:673;;;;;:::o;23695:167::-;23771:4;23800:14;23796:1;:18;23816:12;23788:41;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;23852:1;23840:14;;23695:167;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:137::-;342:5;380:6;367:20;358:29;;396:32;422:5;396:32;:::i;:::-;348:86;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:135::-;629:5;667:6;654:20;645:29;;683:31;708:5;683:31;:::i;:::-;635:85;;;;:::o;726:262::-;785:6;834:2;822:9;813:7;809:23;805:32;802:2;;;850:1;847;840:12;802:2;893:1;918:53;963:7;954:6;943:9;939:22;918:53;:::i;:::-;908:63;;864:117;792:196;;;;:::o;994:407::-;1062:6;1070;1119:2;1107:9;1098:7;1094:23;1090:32;1087:2;;;1135:1;1132;1125:12;1087:2;1178:1;1203:53;1248:7;1239:6;1228:9;1224:22;1203:53;:::i;:::-;1193:63;;1149:117;1305:2;1331:53;1376:7;1367:6;1356:9;1352:22;1331:53;:::i;:::-;1321:63;;1276:118;1077:324;;;;;:::o;1407:552::-;1484:6;1492;1500;1549:2;1537:9;1528:7;1524:23;1520:32;1517:2;;;1565:1;1562;1555:12;1517:2;1608:1;1633:53;1678:7;1669:6;1658:9;1654:22;1633:53;:::i;:::-;1623:63;;1579:117;1735:2;1761:53;1806:7;1797:6;1786:9;1782:22;1761:53;:::i;:::-;1751:63;;1706:118;1863:2;1889:53;1934:7;1925:6;1914:9;1910:22;1889:53;:::i;:::-;1879:63;;1834:118;1507:452;;;;;:::o;1965:407::-;2033:6;2041;2090:2;2078:9;2069:7;2065:23;2061:32;2058:2;;;2106:1;2103;2096:12;2058:2;2149:1;2174:53;2219:7;2210:6;2199:9;2195:22;2174:53;:::i;:::-;2164:63;;2120:117;2276:2;2302:53;2347:7;2338:6;2327:9;2323:22;2302:53;:::i;:::-;2292:63;;2247:118;2048:324;;;;;:::o;2378:986::-;2480:6;2488;2496;2504;2512;2520;2569:3;2557:9;2548:7;2544:23;2540:33;2537:2;;;2586:1;2583;2576:12;2537:2;2629:1;2654:53;2699:7;2690:6;2679:9;2675:22;2654:53;:::i;:::-;2644:63;;2600:117;2756:2;2782:53;2827:7;2818:6;2807:9;2803:22;2782:53;:::i;:::-;2772:63;;2727:118;2884:2;2910:53;2955:7;2946:6;2935:9;2931:22;2910:53;:::i;:::-;2900:63;;2855:118;3012:2;3038:51;3081:7;3072:6;3061:9;3057:22;3038:51;:::i;:::-;3028:61;;2983:116;3138:3;3165:53;3210:7;3201:6;3190:9;3186:22;3165:53;:::i;:::-;3155:63;;3109:119;3267:3;3294:53;3339:7;3330:6;3319:9;3315:22;3294:53;:::i;:::-;3284:63;;3238:119;2527:837;;;;;;;;:::o;3370:262::-;3429:6;3478:2;3466:9;3457:7;3453:23;3449:32;3446:2;;;3494:1;3491;3484:12;3446:2;3537:1;3562:53;3607:7;3598:6;3587:9;3583:22;3562:53;:::i;:::-;3552:63;;3508:117;3436:196;;;;:::o;3638:407::-;3706:6;3714;3763:2;3751:9;3742:7;3738:23;3734:32;3731:2;;;3779:1;3776;3769:12;3731:2;3822:1;3847:53;3892:7;3883:6;3872:9;3868:22;3847:53;:::i;:::-;3837:63;;3793:117;3949:2;3975:53;4020:7;4011:6;4000:9;3996:22;3975:53;:::i;:::-;3965:63;;3920:118;3721:324;;;;;:::o;4051:552::-;4128:6;4136;4144;4193:2;4181:9;4172:7;4168:23;4164:32;4161:2;;;4209:1;4206;4199:12;4161:2;4252:1;4277:53;4322:7;4313:6;4302:9;4298:22;4277:53;:::i;:::-;4267:63;;4223:117;4379:2;4405:53;4450:7;4441:6;4430:9;4426:22;4405:53;:::i;:::-;4395:63;;4350:118;4507:2;4533:53;4578:7;4569:6;4558:9;4554:22;4533:53;:::i;:::-;4523:63;;4478:118;4151:452;;;;;:::o;4609:260::-;4667:6;4716:2;4704:9;4695:7;4691:23;4687:32;4684:2;;;4732:1;4729;4722:12;4684:2;4775:1;4800:52;4844:7;4835:6;4824:9;4820:22;4800:52;:::i;:::-;4790:62;;4746:116;4674:195;;;;:::o;4875:262::-;4934:6;4983:2;4971:9;4962:7;4958:23;4954:32;4951:2;;;4999:1;4996;4989:12;4951:2;5042:1;5067:53;5112:7;5103:6;5092:9;5088:22;5067:53;:::i;:::-;5057:63;;5013:117;4941:196;;;;:::o;5143:118::-;5230:24;5248:5;5230:24;:::i;:::-;5225:3;5218:37;5208:53;;:::o;5267:109::-;5348:21;5363:5;5348:21;:::i;:::-;5343:3;5336:34;5326:50;;:::o;5382:118::-;5469:24;5487:5;5469:24;:::i;:::-;5464:3;5457:37;5447:53;;:::o;5506:157::-;5611:45;5631:24;5649:5;5631:24;:::i;:::-;5611:45;:::i;:::-;5606:3;5599:58;5589:74;;:::o;5669:364::-;5757:3;5785:39;5818:5;5785:39;:::i;:::-;5840:71;5904:6;5899:3;5840:71;:::i;:::-;5833:78;;5920:52;5965:6;5960:3;5953:4;5946:5;5942:16;5920:52;:::i;:::-;5997:29;6019:6;5997:29;:::i;:::-;5992:3;5988:39;5981:46;;5761:272;;;;;:::o;6039:377::-;6145:3;6173:39;6206:5;6173:39;:::i;:::-;6228:89;6310:6;6305:3;6228:89;:::i;:::-;6221:96;;6326:52;6371:6;6366:3;6359:4;6352:5;6348:16;6326:52;:::i;:::-;6403:6;6398:3;6394:16;6387:23;;6149:267;;;;;:::o;6422:366::-;6564:3;6585:67;6649:2;6644:3;6585:67;:::i;:::-;6578:74;;6661:93;6750:3;6661:93;:::i;:::-;6779:2;6774:3;6770:12;6763:19;;6568:220;;;:::o;6794:366::-;6936:3;6957:67;7021:2;7016:3;6957:67;:::i;:::-;6950:74;;7033:93;7122:3;7033:93;:::i;:::-;7151:2;7146:3;7142:12;7135:19;;6940:220;;;:::o;7166:366::-;7308:3;7329:67;7393:2;7388:3;7329:67;:::i;:::-;7322:74;;7405:93;7494:3;7405:93;:::i;:::-;7523:2;7518:3;7514:12;7507:19;;7312:220;;;:::o;7538:366::-;7680:3;7701:67;7765:2;7760:3;7701:67;:::i;:::-;7694:74;;7777:93;7866:3;7777:93;:::i;:::-;7895:2;7890:3;7886:12;7879:19;;7684:220;;;:::o;7910:366::-;8052:3;8073:67;8137:2;8132:3;8073:67;:::i;:::-;8066:74;;8149:93;8238:3;8149:93;:::i;:::-;8267:2;8262:3;8258:12;8251:19;;8056:220;;;:::o;8282:400::-;8442:3;8463:84;8545:1;8540:3;8463:84;:::i;:::-;8456:91;;8556:93;8645:3;8556:93;:::i;:::-;8674:1;8669:3;8665:11;8658:18;;8446:236;;;:::o;8688:366::-;8830:3;8851:67;8915:2;8910:3;8851:67;:::i;:::-;8844:74;;8927:93;9016:3;8927:93;:::i;:::-;9045:2;9040:3;9036:12;9029:19;;8834:220;;;:::o;9060:366::-;9202:3;9223:67;9287:2;9282:3;9223:67;:::i;:::-;9216:74;;9299:93;9388:3;9299:93;:::i;:::-;9417:2;9412:3;9408:12;9401:19;;9206:220;;;:::o;9432:366::-;9574:3;9595:67;9659:2;9654:3;9595:67;:::i;:::-;9588:74;;9671:93;9760:3;9671:93;:::i;:::-;9789:2;9784:3;9780:12;9773:19;;9578:220;;;:::o;9804:366::-;9946:3;9967:67;10031:2;10026:3;9967:67;:::i;:::-;9960:74;;10043:93;10132:3;10043:93;:::i;:::-;10161:2;10156:3;10152:12;10145:19;;9950:220;;;:::o;10176:366::-;10318:3;10339:67;10403:2;10398:3;10339:67;:::i;:::-;10332:74;;10415:93;10504:3;10415:93;:::i;:::-;10533:2;10528:3;10524:12;10517:19;;10322:220;;;:::o;10548:366::-;10690:3;10711:67;10775:2;10770:3;10711:67;:::i;:::-;10704:74;;10787:93;10876:3;10787:93;:::i;:::-;10905:2;10900:3;10896:12;10889:19;;10694:220;;;:::o;10920:366::-;11062:3;11083:67;11147:2;11142:3;11083:67;:::i;:::-;11076:74;;11159:93;11248:3;11159:93;:::i;:::-;11277:2;11272:3;11268:12;11261:19;;11066:220;;;:::o;11292:366::-;11434:3;11455:67;11519:2;11514:3;11455:67;:::i;:::-;11448:74;;11531:93;11620:3;11531:93;:::i;:::-;11649:2;11644:3;11640:12;11633:19;;11438:220;;;:::o;11664:366::-;11806:3;11827:67;11891:2;11886:3;11827:67;:::i;:::-;11820:74;;11903:93;11992:3;11903:93;:::i;:::-;12021:2;12016:3;12012:12;12005:19;;11810:220;;;:::o;12036:366::-;12178:3;12199:67;12263:2;12258:3;12199:67;:::i;:::-;12192:74;;12275:93;12364:3;12275:93;:::i;:::-;12393:2;12388:3;12384:12;12377:19;;12182:220;;;:::o;12408:366::-;12550:3;12571:67;12635:2;12630:3;12571:67;:::i;:::-;12564:74;;12647:93;12736:3;12647:93;:::i;:::-;12765:2;12760:3;12756:12;12749:19;;12554:220;;;:::o;12780:402::-;12940:3;12961:85;13043:2;13038:3;12961:85;:::i;:::-;12954:92;;13055:93;13144:3;13055:93;:::i;:::-;13173:2;13168:3;13164:12;13157:19;;12944:238;;;:::o;13188:366::-;13330:3;13351:67;13415:2;13410:3;13351:67;:::i;:::-;13344:74;;13427:93;13516:3;13427:93;:::i;:::-;13545:2;13540:3;13536:12;13529:19;;13334:220;;;:::o;13560:402::-;13720:3;13741:85;13823:2;13818:3;13741:85;:::i;:::-;13734:92;;13835:93;13924:3;13835:93;:::i;:::-;13953:2;13948:3;13944:12;13937:19;;13724:238;;;:::o;13968:366::-;14110:3;14131:67;14195:2;14190:3;14131:67;:::i;:::-;14124:74;;14207:93;14296:3;14207:93;:::i;:::-;14325:2;14320:3;14316:12;14309:19;;14114:220;;;:::o;14340:366::-;14482:3;14503:67;14567:2;14562:3;14503:67;:::i;:::-;14496:74;;14579:93;14668:3;14579:93;:::i;:::-;14697:2;14692:3;14688:12;14681:19;;14486:220;;;:::o;14712:118::-;14799:24;14817:5;14799:24;:::i;:::-;14794:3;14787:37;14777:53;;:::o;14836:112::-;14919:22;14935:5;14919:22;:::i;:::-;14914:3;14907:35;14897:51;;:::o;14954:663::-;15195:3;15217:148;15361:3;15217:148;:::i;:::-;15210:155;;15375:75;15446:3;15437:6;15375:75;:::i;:::-;15475:2;15470:3;15466:12;15459:19;;15488:75;15559:3;15550:6;15488:75;:::i;:::-;15588:2;15583:3;15579:12;15572:19;;15608:3;15601:10;;15199:418;;;;;:::o;15623:967::-;16005:3;16027:148;16171:3;16027:148;:::i;:::-;16020:155;;16192:95;16283:3;16274:6;16192:95;:::i;:::-;16185:102;;16304:148;16448:3;16304:148;:::i;:::-;16297:155;;16469:95;16560:3;16551:6;16469:95;:::i;:::-;16462:102;;16581:3;16574:10;;16009:581;;;;;:::o;16596:222::-;16689:4;16727:2;16716:9;16712:18;16704:26;;16740:71;16808:1;16797:9;16793:17;16784:6;16740:71;:::i;:::-;16694:124;;;;:::o;16824:210::-;16911:4;16949:2;16938:9;16934:18;16926:26;;16962:65;17024:1;17013:9;17009:17;17000:6;16962:65;:::i;:::-;16916:118;;;;:::o;17040:222::-;17133:4;17171:2;17160:9;17156:18;17148:26;;17184:71;17252:1;17241:9;17237:17;17228:6;17184:71;:::i;:::-;17138:124;;;;:::o;17268:442::-;17417:4;17455:2;17444:9;17440:18;17432:26;;17468:71;17536:1;17525:9;17521:17;17512:6;17468:71;:::i;:::-;17549:72;17617:2;17606:9;17602:18;17593:6;17549:72;:::i;:::-;17631;17699:2;17688:9;17684:18;17675:6;17631:72;:::i;:::-;17422:288;;;;;;:::o;17716:553::-;17893:4;17931:3;17920:9;17916:19;17908:27;;17945:71;18013:1;18002:9;17998:17;17989:6;17945:71;:::i;:::-;18026:72;18094:2;18083:9;18079:18;18070:6;18026:72;:::i;:::-;18108;18176:2;18165:9;18161:18;18152:6;18108:72;:::i;:::-;18190;18258:2;18247:9;18243:18;18234:6;18190:72;:::i;:::-;17898:371;;;;;;;:::o;18275:553::-;18452:4;18490:3;18479:9;18475:19;18467:27;;18504:71;18572:1;18561:9;18557:17;18548:6;18504:71;:::i;:::-;18585:72;18653:2;18642:9;18638:18;18629:6;18585:72;:::i;:::-;18667;18735:2;18724:9;18720:18;18711:6;18667:72;:::i;:::-;18749;18817:2;18806:9;18802:18;18793:6;18749:72;:::i;:::-;18457:371;;;;;;;:::o;18834:545::-;19007:4;19045:3;19034:9;19030:19;19022:27;;19059:71;19127:1;19116:9;19112:17;19103:6;19059:71;:::i;:::-;19140:68;19204:2;19193:9;19189:18;19180:6;19140:68;:::i;:::-;19218:72;19286:2;19275:9;19271:18;19262:6;19218:72;:::i;:::-;19300;19368:2;19357:9;19353:18;19344:6;19300:72;:::i;:::-;19012:367;;;;;;;:::o;19385:313::-;19498:4;19536:2;19525:9;19521:18;19513:26;;19585:9;19579:4;19575:20;19571:1;19560:9;19556:17;19549:47;19613:78;19686:4;19677:6;19613:78;:::i;:::-;19605:86;;19503:195;;;;:::o;19704:419::-;19870:4;19908:2;19897:9;19893:18;19885:26;;19957:9;19951:4;19947:20;19943:1;19932:9;19928:17;19921:47;19985:131;20111:4;19985:131;:::i;:::-;19977:139;;19875:248;;;:::o;20129:419::-;20295:4;20333:2;20322:9;20318:18;20310:26;;20382:9;20376:4;20372:20;20368:1;20357:9;20353:17;20346:47;20410:131;20536:4;20410:131;:::i;:::-;20402:139;;20300:248;;;:::o;20554:419::-;20720:4;20758:2;20747:9;20743:18;20735:26;;20807:9;20801:4;20797:20;20793:1;20782:9;20778:17;20771:47;20835:131;20961:4;20835:131;:::i;:::-;20827:139;;20725:248;;;:::o;20979:419::-;21145:4;21183:2;21172:9;21168:18;21160:26;;21232:9;21226:4;21222:20;21218:1;21207:9;21203:17;21196:47;21260:131;21386:4;21260:131;:::i;:::-;21252:139;;21150:248;;;:::o;21404:419::-;21570:4;21608:2;21597:9;21593:18;21585:26;;21657:9;21651:4;21647:20;21643:1;21632:9;21628:17;21621:47;21685:131;21811:4;21685:131;:::i;:::-;21677:139;;21575:248;;;:::o;21829:419::-;21995:4;22033:2;22022:9;22018:18;22010:26;;22082:9;22076:4;22072:20;22068:1;22057:9;22053:17;22046:47;22110:131;22236:4;22110:131;:::i;:::-;22102:139;;22000:248;;;:::o;22254:419::-;22420:4;22458:2;22447:9;22443:18;22435:26;;22507:9;22501:4;22497:20;22493:1;22482:9;22478:17;22471:47;22535:131;22661:4;22535:131;:::i;:::-;22527:139;;22425:248;;;:::o;22679:419::-;22845:4;22883:2;22872:9;22868:18;22860:26;;22932:9;22926:4;22922:20;22918:1;22907:9;22903:17;22896:47;22960:131;23086:4;22960:131;:::i;:::-;22952:139;;22850:248;;;:::o;23104:419::-;23270:4;23308:2;23297:9;23293:18;23285:26;;23357:9;23351:4;23347:20;23343:1;23332:9;23328:17;23321:47;23385:131;23511:4;23385:131;:::i;:::-;23377:139;;23275:248;;;:::o;23529:419::-;23695:4;23733:2;23722:9;23718:18;23710:26;;23782:9;23776:4;23772:20;23768:1;23757:9;23753:17;23746:47;23810:131;23936:4;23810:131;:::i;:::-;23802:139;;23700:248;;;:::o;23954:419::-;24120:4;24158:2;24147:9;24143:18;24135:26;;24207:9;24201:4;24197:20;24193:1;24182:9;24178:17;24171:47;24235:131;24361:4;24235:131;:::i;:::-;24227:139;;24125:248;;;:::o;24379:419::-;24545:4;24583:2;24572:9;24568:18;24560:26;;24632:9;24626:4;24622:20;24618:1;24607:9;24603:17;24596:47;24660:131;24786:4;24660:131;:::i;:::-;24652:139;;24550:248;;;:::o;24804:419::-;24970:4;25008:2;24997:9;24993:18;24985:26;;25057:9;25051:4;25047:20;25043:1;25032:9;25028:17;25021:47;25085:131;25211:4;25085:131;:::i;:::-;25077:139;;24975:248;;;:::o;25229:419::-;25395:4;25433:2;25422:9;25418:18;25410:26;;25482:9;25476:4;25472:20;25468:1;25457:9;25453:17;25446:47;25510:131;25636:4;25510:131;:::i;:::-;25502:139;;25400:248;;;:::o;25654:419::-;25820:4;25858:2;25847:9;25843:18;25835:26;;25907:9;25901:4;25897:20;25893:1;25882:9;25878:17;25871:47;25935:131;26061:4;25935:131;:::i;:::-;25927:139;;25825:248;;;:::o;26079:419::-;26245:4;26283:2;26272:9;26268:18;26260:26;;26332:9;26326:4;26322:20;26318:1;26307:9;26303:17;26296:47;26360:131;26486:4;26360:131;:::i;:::-;26352:139;;26250:248;;;:::o;26504:419::-;26670:4;26708:2;26697:9;26693:18;26685:26;;26757:9;26751:4;26747:20;26743:1;26732:9;26728:17;26721:47;26785:131;26911:4;26785:131;:::i;:::-;26777:139;;26675:248;;;:::o;26929:419::-;27095:4;27133:2;27122:9;27118:18;27110:26;;27182:9;27176:4;27172:20;27168:1;27157:9;27153:17;27146:47;27210:131;27336:4;27210:131;:::i;:::-;27202:139;;27100:248;;;:::o;27354:419::-;27520:4;27558:2;27547:9;27543:18;27535:26;;27607:9;27601:4;27597:20;27593:1;27582:9;27578:17;27571:47;27635:131;27761:4;27635:131;:::i;:::-;27627:139;;27525:248;;;:::o;27779:222::-;27872:4;27910:2;27899:9;27895:18;27887:26;;27923:71;27991:1;27980:9;27976:17;27967:6;27923:71;:::i;:::-;27877:124;;;;:::o;28007:332::-;28128:4;28166:2;28155:9;28151:18;28143:26;;28179:71;28247:1;28236:9;28232:17;28223:6;28179:71;:::i;:::-;28260:72;28328:2;28317:9;28313:18;28304:6;28260:72;:::i;:::-;28133:206;;;;;:::o;28345:214::-;28434:4;28472:2;28461:9;28457:18;28449:26;;28485:67;28549:1;28538:9;28534:17;28525:6;28485:67;:::i;:::-;28439:120;;;;:::o;28565:99::-;28617:6;28651:5;28645:12;28635:22;;28624:40;;;:::o;28670:169::-;28754:11;28788:6;28783:3;28776:19;28828:4;28823:3;28819:14;28804:29;;28766:73;;;;:::o;28845:148::-;28947:11;28984:3;28969:18;;28959:34;;;;:::o;28999:305::-;29039:3;29058:20;29076:1;29058:20;:::i;:::-;29053:25;;29092:20;29110:1;29092:20;:::i;:::-;29087:25;;29246:1;29178:66;29174:74;29171:1;29168:81;29165:2;;;29252:18;;:::i;:::-;29165:2;29296:1;29293;29289:9;29282:16;;29043:261;;;;:::o;29310:185::-;29350:1;29367:20;29385:1;29367:20;:::i;:::-;29362:25;;29401:20;29419:1;29401:20;:::i;:::-;29396:25;;29440:1;29430:2;;29445:18;;:::i;:::-;29430:2;29487:1;29484;29480:9;29475:14;;29352:143;;;;:::o;29501:348::-;29541:7;29564:20;29582:1;29564:20;:::i;:::-;29559:25;;29598:20;29616:1;29598:20;:::i;:::-;29593:25;;29786:1;29718:66;29714:74;29711:1;29708:81;29703:1;29696:9;29689:17;29685:105;29682:2;;;29793:18;;:::i;:::-;29682:2;29841:1;29838;29834:9;29823:20;;29549:300;;;;:::o;29855:191::-;29895:4;29915:20;29933:1;29915:20;:::i;:::-;29910:25;;29949:20;29967:1;29949:20;:::i;:::-;29944:25;;29988:1;29985;29982:8;29979:2;;;29993:18;;:::i;:::-;29979:2;30038:1;30035;30031:9;30023:17;;29900:146;;;;:::o;30052:96::-;30089:7;30118:24;30136:5;30118:24;:::i;:::-;30107:35;;30097:51;;;:::o;30154:90::-;30188:7;30231:5;30224:13;30217:21;30206:32;;30196:48;;;:::o;30250:77::-;30287:7;30316:5;30305:16;;30295:32;;;:::o;30333:149::-;30369:7;30409:66;30402:5;30398:78;30387:89;;30377:105;;;:::o;30488:126::-;30525:7;30565:42;30558:5;30554:54;30543:65;;30533:81;;;:::o;30620:77::-;30657:7;30686:5;30675:16;;30665:32;;;:::o;30703:86::-;30738:7;30778:4;30771:5;30767:16;30756:27;;30746:43;;;:::o;30795:307::-;30863:1;30873:113;30887:6;30884:1;30881:13;30873:113;;;30972:1;30967:3;30963:11;30957:18;30953:1;30948:3;30944:11;30937:39;30909:2;30906:1;30902:10;30897:15;;30873:113;;;31004:6;31001:1;30998:13;30995:2;;;31084:1;31075:6;31070:3;31066:16;31059:27;30995:2;30844:258;;;;:::o;31108:171::-;31147:3;31170:24;31188:5;31170:24;:::i;:::-;31161:33;;31216:4;31209:5;31206:15;31203:2;;;31224:18;;:::i;:::-;31203:2;31271:1;31264:5;31260:13;31253:20;;31151:128;;;:::o;31285:320::-;31329:6;31366:1;31360:4;31356:12;31346:22;;31413:1;31407:4;31403:12;31434:18;31424:2;;31490:4;31482:6;31478:17;31468:27;;31424:2;31552;31544:6;31541:14;31521:18;31518:38;31515:2;;;31571:18;;:::i;:::-;31515:2;31336:269;;;;:::o;31611:233::-;31650:3;31673:24;31691:5;31673:24;:::i;:::-;31664:33;;31719:66;31712:5;31709:77;31706:2;;;31789:18;;:::i;:::-;31706:2;31836:1;31829:5;31825:13;31818:20;;31654:190;;;:::o;31850:79::-;31889:7;31918:5;31907:16;;31897:32;;;:::o;31935:180::-;31983:77;31980:1;31973:88;32080:4;32077:1;32070:15;32104:4;32101:1;32094:15;32121:180;32169:77;32166:1;32159:88;32266:4;32263:1;32256:15;32290:4;32287:1;32280:15;32307:180;32355:77;32352:1;32345:88;32452:4;32449:1;32442:15;32476:4;32473:1;32466:15;32493:102;32534:6;32585:2;32581:7;32576:2;32569:5;32565:14;32561:28;32551:38;;32541:54;;;:::o;32601:220::-;32741:34;32737:1;32729:6;32725:14;32718:58;32810:3;32805:2;32797:6;32793:15;32786:28;32707:114;:::o;32827:182::-;32967:34;32963:1;32955:6;32951:14;32944:58;32933:76;:::o;33015:222::-;33155:34;33151:1;33143:6;33139:14;33132:58;33224:5;33219:2;33211:6;33207:15;33200:30;33121:116;:::o;33243:221::-;33383:34;33379:1;33371:6;33367:14;33360:58;33452:4;33447:2;33439:6;33435:15;33428:29;33349:115;:::o;33470:221::-;33610:34;33606:1;33598:6;33594:14;33587:58;33679:4;33674:2;33666:6;33662:15;33655:29;33576:115;:::o;33697:214::-;33837:66;33833:1;33825:6;33821:14;33814:90;33803:108;:::o;33917:182::-;34057:34;34053:1;34045:6;34041:14;34034:58;34023:76;:::o;34105:225::-;34245:34;34241:1;34233:6;34229:14;34222:58;34314:8;34309:2;34301:6;34297:15;34290:33;34211:119;:::o;34336:182::-;34476:34;34472:1;34464:6;34460:14;34453:58;34442:76;:::o;34524:227::-;34664:34;34660:1;34652:6;34648:14;34641:58;34733:10;34728:2;34720:6;34716:15;34709:35;34630:121;:::o;34757:171::-;34897:23;34893:1;34885:6;34881:14;34874:47;34863:65;:::o;34934:178::-;35074:30;35070:1;35062:6;35058:14;35051:54;35040:72;:::o;35118:220::-;35258:34;35254:1;35246:6;35242:14;35235:58;35327:3;35322:2;35314:6;35310:15;35303:28;35224:114;:::o;35344:224::-;35484:34;35480:1;35472:6;35468:14;35461:58;35553:7;35548:2;35540:6;35536:15;35529:32;35450:118;:::o;35574:178::-;35714:30;35710:1;35702:6;35698:14;35691:54;35680:72;:::o;35758:223::-;35898:34;35894:1;35886:6;35882:14;35875:58;35967:6;35962:2;35954:6;35950:15;35943:31;35864:117;:::o;35987:179::-;36127:31;36123:1;36115:6;36111:14;36104:55;36093:73;:::o;36172:173::-;36312:25;36308:1;36300:6;36296:14;36289:49;36278:67;:::o;36351:224::-;36491:34;36487:1;36479:6;36475:14;36468:58;36560:7;36555:2;36547:6;36543:15;36536:32;36457:118;:::o;36581:167::-;36721:19;36717:1;36709:6;36705:14;36698:43;36687:61;:::o;36754:234::-;36894:34;36890:1;36882:6;36878:14;36871:58;36963:17;36958:2;36950:6;36946:15;36939:42;36860:128;:::o;36994:181::-;37134:33;37130:1;37122:6;37118:14;37111:57;37100:75;:::o;37181:122::-;37254:24;37272:5;37254:24;:::i;:::-;37247:5;37244:35;37234:2;;37293:1;37290;37283:12;37234:2;37224:79;:::o;37309:122::-;37382:24;37400:5;37382:24;:::i;:::-;37375:5;37372:35;37362:2;;37421:1;37418;37411:12;37362:2;37352:79;:::o;37437:120::-;37509:23;37526:5;37509:23;:::i;:::-;37502:5;37499:34;37489:2;;37547:1;37544;37537:12;37489:2;37479:78;:::o;37563:122::-;37636:24;37654:5;37636:24;:::i;:::-;37629:5;37626:35;37616:2;;37675:1;37672;37665:12;37616:2;37606:79;:::o;37691:118::-;37762:22;37778:5;37762:22;:::i;:::-;37755:5;37752:33;37742:2;;37799:1;37796;37789:12;37742:2;37732:77;:::o

Swarm Source

ipfs://821d296d9e083956047e769287e96f6b44d9183d3a145161fde297a69d49e3ab
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
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.