Contract 0x124b06c5ce47de7a6e9efda71a946717130079e6 1

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xd43e8478294be1a34b858804ff13de904a7dfedee8aa3c0641c9b5904e2733a4Safe Soul Transf...546982762023-01-30 3:03:491 hr 57 mins agoSoul: Deployer IN  SoulSwap: SEANCE Token0 FTM0.001408487222
0xadbaf2374208372c9a1e6eaf467fb182632ad9be54cdb612c8f2db083f32fb11Safe Soul Transf...546979812023-01-30 2:56:302 hrs 5 mins agoSoul: Deployer IN  SoulSwap: SEANCE Token0 FTM0.001274972719
0xa2cfcb0166d663c354a66e6b755410b4aafd4fc93f099292859444da02b67bf7Safe Soul Transf...546979272023-01-30 2:55:342 hrs 6 mins agoSoul: Deployer IN  SoulSwap: SEANCE Token0 FTM0.001275890274
0x9ae2f74013daff77f77cbed3947ca05eb7502dda59abdc797c419453f557eb05Safe Soul Transf...546965912023-01-30 2:30:592 hrs 30 mins agoSoul: Deployer IN  SoulSwap: SEANCE Token0 FTM0.001314488008
0xbedfce0bbd4570bb003000829bcef651321435555acd2e91963e7c033982c42aSafe Soul Transf...546964642023-01-30 2:27:252 hrs 34 mins agoSoul: Deployer IN  SoulSwap: SEANCE Token0 FTM0.003236031539
0xbff11c8b2dc4149bb7dca10d6d2427a3c9d0d57daee8452eae0a0e0374535362Safe Soul Transf...546964552023-01-30 2:26:532 hrs 34 mins agoSoul: Deployer IN  SoulSwap: SEANCE Token0 FTM0.002995157192
0x7e99791a9ef85489a895aa6b917b1fca36eef50838cf007cea19a7c5ca85a90aSafe Soul Transf...546964262023-01-30 2:26:062 hrs 35 mins agoSoul: Deployer IN  SoulSwap: SEANCE Token0 FTM0.001313189212
0x4088a9860536c681b3259a3700fc76a74220e3f804c1ca6d867a33f6db1965efApprove546762422023-01-29 19:28:529 hrs 32 mins ago0x56ebc608fd6b8f8cef2775a3ee0dddaec01a7000 IN  SoulSwap: SEANCE Token0 FTM0.001959177968
0x8dd8850ce878c3adcb53427e506b7ae6618f5becd98abca43f9566dfc8753756Approve544112112023-01-25 14:55:264 days 14 hrs ago0x743ef7f98fc855bd650fe8a31da43c93d50ab04b IN  SoulSwap: SEANCE Token0 FTM0.003260396
0x1d214fbfca0b9a853e3442a8810df87b72e0c2c1d10e01d3ad36b64a058ae0edApprove540751432023-01-20 11:58:009 days 17 hrs ago0xe445a2d3ca8e5fa4b6f761d2b3592d7b42534029 IN  SoulSwap: SEANCE Token0 FTM0.00184889573
0x617f93b0150b3dcb320c07c1f1a89fc6f7797172b3f21f9980fc051d58817dbcApprove538261952023-01-15 20:11:1814 days 8 hrs ago0xd06fee44914f8047525cdc726f2b805fb409a3cd IN  SoulSwap: SEANCE Token0 FTM0.001626288
0x49abf6afca1fafa62710bdadcaba7adaa36c666e72ae13ee8602faf3e0c943f7Approve533793022023-01-07 10:33:2522 days 18 hrs ago0x763dd65374b456bd6ae953c17a8a8e80bcaeca10 IN  SoulSwap: SEANCE Token0 FTM0.000869831196
0x372dbb8f123c5f71046720c068e809840193bdebb244df7b9802b90efaf6aae7Approve532638492023-01-05 9:05:5324 days 19 hrs ago0x8a5e948f29127f2e419b5950f4b3834f60d3d9b2 IN  SoulSwap: SEANCE Token0 FTM0.002728
0xfdea8266015bebb2cd17b505da84b03e664c386e387951aefc9059803a279de6Transfer530119682022-12-29 15:27:0531 days 13 hrs ago0xcf329b0db84829bd7c0ded5a13181c32755b10b2 IN  SoulSwap: SEANCE Token0 FTM0.007570718142
0x49fa2ab93c450e487dad984a10bbb21ed2dc0f8e5402a63f8acd58f085ed4cd7Approve528849492022-12-26 11:54:2534 days 17 hrs ago0x0df9a8932b1ccacfcad3f1409431ebf8800f42e8 IN  SoulSwap: SEANCE Token0 FTM0.001240191776
0xb0a0a48806c80e317c0a64e37dfaf656465f005cf1ab2c3ad04fe7e4c9d59850Approve528544802022-12-25 20:15:3835 days 8 hrs ago0x06c6510ca3ff14113622d688ac719cab2a8542ca IN  SoulSwap: SEANCE Token0 FTM0.001420385117
0xe31addf376ac4c513ee573a2449a4e25143544a9bede8b151370db52b323f03aApprove528529752022-12-25 19:31:3735 days 9 hrs ago0x06c6510ca3ff14113622d688ac719cab2a8542ca IN  SoulSwap: SEANCE Token0 FTM0.001191560765
0x61e3d97ba4d10bca7b3ffb035572dbc8068c0fff4cdb03cef989230383864d21Approve528299902022-12-25 5:35:1735 days 23 hrs ago0x497d14a5932b3af2f5c0e1afe5cfca2953b59586 IN  SoulSwap: SEANCE Token0 FTM0.001298549621
0x8603c6746d5225b2f0f625c16be408151cbf8fe76d7e1ba80c48f01180d0346cApprove528299802022-12-25 5:34:5135 days 23 hrs ago0x497d14a5932b3af2f5c0e1afe5cfca2953b59586 IN  SoulSwap: SEANCE Token0 FTM0.001208532828
0x7b8fad025de3975fb24838c4d3d762528d6d431447b5c44c7732fd294ba42a3dApprove525598452022-12-20 0:05:3741 days 4 hrs ago0x84d1e7a6697e51a3eea7c131b8a755433071ce8b IN  SoulSwap: SEANCE Token0 FTM0.004052216308
0x634bbcee1510f3a3358179012f7b42dd0c62d80c5213bf7a2e2e4efc3c9e9c62Approve524785612022-12-17 17:59:5843 days 11 hrs ago0xc074887d140e276a8b892222f925440eaf3ff40b IN  SoulSwap: SEANCE Token0 FTM0.004122496978
0x2f629bf614d60658c43d583ae5adad5cef69e21073f2b5a1605786b3026a7538Transfer524350512022-12-16 12:18:4044 days 16 hrs ago0x6b1c0a9f375dc5241ec1751a3430d862eaabe2a9 IN  SoulSwap: SEANCE Token0 FTM0.0009853056
0x3507b764b00ee237e55f92b457c8799b334513c97e25dbdf0a960344687f09d8Approve523342562022-12-14 15:14:3146 days 13 hrs ago0x8a58f89cd7a2cdfd167ed99d2ff7139fa723aac8 IN  SoulSwap: SEANCE Token0 FTM0.001013796336
0x0f56818810074d4814b81887c88cc3feacec2c31857e98361b9c77b002e9aa34Approve518402442022-12-03 20:06:3857 days 8 hrs ago0xcbe3b1ab39cfeaef1734558a992dee8af24b5b83 IN  SoulSwap: SEANCE Token0 FTM0.00098657624
0xbaa59c4afb6abd755180f77ee9e950ca0b8f3b8492957a8f465361cc963a4060Approve515680632022-11-28 21:00:5162 days 8 hrs ago0x960d80997d5089b81afbf6c0d6e14c4ea0949a0f IN  SoulSwap: SEANCE Token0 FTM0.004783919531
[ Download CSV Export 

OVERVIEW

SEANCE represents staked SOUL and is required collateral for unlocking your staked SOUL. Namely, the only way to unstake SOUL is by burning SEANCE.

Latest 2 internal transactions
Parent Txn Hash Block From To Value
0xa6d68c9ba1e41110976862d463afceed6be6d69bd0333cd66235dee3598c84c8499930812022-10-25 21:52:5396 days 7 hrs ago 0xd3230e997608c38049952cdc92faf0f9767c2c82 SoulSwap: SEANCE Token0.001 FTM
0xd85846c4c255d5eef85a66f1af40400edffff7ba83575aa910cf09649dcf1bd8157710912021-08-28 23:15:31519 days 5 hrs ago Soul: Deployer  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SeanceCircle

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-28
*/

/*--------------------------------------------------------------------------------------------------
====================================================================================================
*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~
*~~~*~~~*~~* SeanceCircle.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());
        }
    }
}

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

        mint(supreme, 50000000 * 1e18); // mints initial supply of 50M
    }

    // 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);
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

abstract contract Operable is Context, Ownable {

    address[] public operators;
    mapping(address => bool) public operator;

    event OperatorUpdated(address indexed operator, bool indexed access);
    constructor () {
        address msgSender = _msgSender();
        operator[msgSender] = true;
        operators.push(msgSender);
        emit OperatorUpdated(msgSender, true);
    }

    modifier onlyOperator() {
        address msgSender = _msgSender();
        require(operator[msgSender], "Operator: caller is not an operator");
        _;
    }

    function removeOperator(address removingOperator) public virtual onlyOperator {
        require(operator[removingOperator], 'Operable: address is not an operator');
        operator[removingOperator] = false;
        for (uint8 i; i < operators.length; i++) {
            if (operators[i] == removingOperator) {
                operators[i] = operators[i+1];
                operators.pop();
                emit OperatorUpdated(removingOperator, false);
                return;
            }
        }
    }

    function addOperator(address newOperator) public virtual onlyOperator {
        require(newOperator != address(0), "Operable: new operator is the zero address");
        require(!operator[newOperator], 'Operable: address is already an operator');
        operator[newOperator] = true;
        operators.push(newOperator);
        emit OperatorUpdated(newOperator, true);
    }
}

// SeanceCircle with Governance.
contract SeanceCircle is ERC20('SeanceCircle', 'SEANCE'), Ownable, Operable {

    SoulPower public soul;
    bool isInitialized;

    function mint(address _to, uint256 _amount) public onlyOperator {
        require(isInitialized, 'the circle has not yet begun');
        _mint(_to, _amount);
        _moveDelegates(address(0), _delegates[_to], _amount);
    }

    function burn(address _from ,uint256 _amount) public onlyOperator {
        _burn(_from, _amount);
        _moveDelegates(_delegates[_from], address(0), _amount);
    }

    function initialize(SoulPower _soul) external onlyOwner {
        require(!isInitialized, 'the circle has already begun');
        soul = _soul;
        isInitialized = true;
    }

    // safe soul transfer function, just in case if rounding error causes pool to not have enough SOUL.
    function safeSoulTransfer(address _to, uint256 _amount) public onlyOperator {
        uint256 soulBal = soul.balanceOf(address(this));
        if (_amount > soulBal) {
            soul.transfer(_to, soulBal);
        } else {
            soul.transfer(_to, _amount);
        }
    }

    // record of each accounts delegate
    mapping (address => address) internal _delegates;

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

    // record of votes checkpoints for each account, by index
    mapping (address => mapping (uint256 => Checkpoint)) public checkpoints;

    // number of checkpoints for each account
    mapping (address => uint256) public numCheckpoints;

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

    // EIP-712 typehash for the delegation struct used by the contract
    bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");

    // record of states for signing / validating signatures
    mapping (address => uint) public nonces;

    // emitted when an account changes its delegate
    event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);

    // emitted when a delegate account's vote balance changes
    event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);

    // 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), "SOUL::delegateBySig: invalid signature");
        require(nonce == nonces[signatory]++, "SOUL::delegateBySig: invalid nonce");
        require(block.timestamp <= expiry, "SOUL::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 (uint256) {
        require(blockTimestamp < block.timestamp, "SOUL::getPriorVotes: not yet determined");

        uint256 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;
        }

        uint256 lower = 0;
        uint256 upper = nCheckpoints - 1;
        while (upper > lower) {
            uint256 center = upper - (upper - lower) / 2; // ceil, avoiding 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 _delegate(address delegator, address delegatee) internal {
        address currentDelegate = _delegates[delegator];
        uint256 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, uint256 amount) internal {
        if (srcRep != dstRep && amount > 0) {
            if (srcRep != address(0)) {
                // decrease old representative
                uint256 srcRepNum = numCheckpoints[srcRep];
                uint256 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;
                uint256 srcRepNew = srcRepOld - amount;
                _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
            }

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

    function _writeCheckpoint(
        address delegatee,
        uint256 nCheckpoints,
        uint256 oldVotes,
        uint256 newVotes
    )
        internal
    {
        uint256 blockTimestamp = safe256(block.timestamp, "SOUL::_writeCheckpoint: 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);
    }

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

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

    function newSoul(SoulPower _soul) external onlyOperator {
        require(soul != _soul, 'must be a new address');
        soul = _soul;
    }
}

Contract Security Audit

Contract ABI

[{"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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"bool","name":"access","type":"bool"}],"name":"OperatorUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"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":"newOperator","type":"address"}],"name":"addOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"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":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","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":"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":"contract SoulPower","name":"_soul","type":"address"}],"name":"initialize","outputs":[],"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":"contract SoulPower","name":"_soul","type":"address"}],"name":"newSoul","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":"address","name":"","type":"address"}],"name":"operator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"operators","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"removingOperator","type":"address"}],"name":"removeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"safeSoulTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"soul","outputs":[{"internalType":"contract SoulPower","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280600c81526020017f5365616e6365436972636c6500000000000000000000000000000000000000008152506040518060400160405280600681526020017f5345414e43450000000000000000000000000000000000000000000000000000815250816003908051906020019062000096929190620002bd565b508060049080519060200190620000af929190620002bd565b505050620000d2620000c6620001ef60201b60201c565b620001f760201b60201c565b6000620000e4620001ef60201b60201c565b90506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600115158173ffffffffffffffffffffffffffffffffffffffff167f966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672d60405160405180910390a350620003d2565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002cb906200036d565b90600052602060002090601f016020900481019282620002ef57600085556200033b565b82601f106200030a57805160ff19168380011785556200033b565b828001600101855582156200033b579182015b828111156200033a5782518255916020019190600101906200031d565b5b5090506200034a91906200034e565b5090565b5b80821115620003695760008160009055506001016200034f565b5090565b600060028204905060018216806200038657607f821691505b602082108114156200039d576200039c620003a3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61491b80620003e26000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c8063815b7a8c1161011a578063ac8a584a116100ad578063c4d66de81161007c578063c4d66de814610638578063dd62ed3e14610654578063e28d490614610684578063e7a324dc146106b4578063f2fde38b146106d257610206565b8063ac8a584a146105b4578063b2a142aa146105d0578063b4b5ea57146105ec578063c3cda5201461061c57610206565b80639a307391116100e95780639a307391146105085780639dc29fac14610538578063a457c2d714610554578063a9059cbb1461058457610206565b8063815b7a8c146104925780638da5cb5b146104b057806395d89b41146104ce5780639870d7fe146104ec57610206565b8063395093511161019d5780636fcfff451161016c5780636fcfff45146103c857806370a08231146103f8578063715018a614610428578063782d6fe1146104325780637ecebe001461046257610206565b8063395093511461033057806340c10f1914610360578063587cde1e1461037c5780635c19a95c146103ac57610206565b806320606b70116101d957806320606b70146102a857806323b872dd146102c6578063260cf996146102f6578063313ce5671461031257610206565b806306fdde031461020b578063095ea7b3146102295780630cdfebfa1461025957806318160ddd1461028a575b600080fd5b6102136106ee565b6040516102209190613b10565b60405180910390f35b610243600480360381019061023e919061341a565b610780565b60405161025091906139f0565b60405180910390f35b610273600480360381019061026e919061341a565b61079e565b604051610281929190613e2d565b60405180910390f35b6102926107cf565b60405161029f9190613e12565b60405180910390f35b6102b06107d9565b6040516102bd9190613a0b565b60405180910390f35b6102e060048036038101906102db91906133cb565b6107fd565b6040516102ed91906139f0565b60405180910390f35b610310600480360381019061030b9190613508565b6108fe565b005b61031a610a6c565b6040516103279190613e56565b60405180910390f35b61034a6004803603810190610345919061341a565b610a75565b60405161035791906139f0565b60405180910390f35b61037a6004803603810190610375919061341a565b610b21565b005b61039660048036038101906103919190613366565b610c82565b6040516103a391906139ac565b60405180910390f35b6103c660048036038101906103c19190613366565b610ceb565b005b6103e260048036038101906103dd9190613366565b610cf8565b6040516103ef9190613e12565b60405180910390f35b610412600480360381019061040d9190613366565b610d10565b60405161041f9190613e12565b60405180910390f35b610430610d58565b005b61044c6004803603810190610447919061341a565b610de0565b6040516104599190613e12565b60405180910390f35b61047c60048036038101906104779190613366565b61110b565b6040516104899190613e12565b60405180910390f35b61049a611123565b6040516104a79190613af5565b60405180910390f35b6104b8611149565b6040516104c591906139ac565b60405180910390f35b6104d6611173565b6040516104e39190613b10565b60405180910390f35b61050660048036038101906105019190613366565b611205565b005b610522600480360381019061051d9190613366565b6114a0565b60405161052f91906139f0565b60405180910390f35b610552600480360381019061054d919061341a565b6114c0565b005b61056e6004803603810190610569919061341a565b6115d2565b60405161057b91906139f0565b60405180910390f35b61059e6004803603810190610599919061341a565b6116c6565b6040516105ab91906139f0565b60405180910390f35b6105ce60048036038101906105c99190613366565b6116e4565b005b6105ea60048036038101906105e5919061341a565b611ada565b005b61060660048036038101906106019190613366565b611d95565b6040516106139190613e12565b60405180910390f35b61063660048036038101906106319190613456565b611e52565b005b610652600480360381019061064d9190613508565b6120e7565b005b61066e6004803603810190610669919061338f565b612212565b60405161067b9190613e12565b60405180910390f35b61069e60048036038101906106999190613531565b612299565b6040516106ab91906139ac565b60405180910390f35b6106bc6122d8565b6040516106c99190613a0b565b60405180910390f35b6106ec60048036038101906106e79190613366565b6122fc565b005b6060600380546106fd90614052565b80601f016020809104026020016040519081016040528092919081815260200182805461072990614052565b80156107765780601f1061074b57610100808354040283529160200191610776565b820191906000526020600020905b81548152906001019060200180831161075957829003601f168201915b5050505050905090565b600061079461078d6123f4565b84846123fc565b6001905092915050565b600a602052816000526040600020602052806000526040600020600091509150508060000154908060010154905082565b6000600254905090565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b600061080a8484846125c7565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108556123f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156108d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cc90613c52565b60405180910390fd5b6108f2856108e16123f4565b85846108ed9190613f56565b6123fc565b60019150509392505050565b60006109086123f4565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098d90613d52565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1e90613cb2565b60405180910390fd5b81600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60006012905090565b6000610b17610a826123f4565b848460016000610a906123f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b129190613e98565b6123fc565b6001905092915050565b6000610b2b6123f4565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb090613d52565b60405180910390fd5b600860149054906101000a900460ff16610c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bff90613d72565b60405180910390fd5b610c128383612851565b610c7d6000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846129b1565b505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610cf53382612c0e565b50565b600b6020528060005260406000206000915090505481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d606123f4565b73ffffffffffffffffffffffffffffffffffffffff16610d7e611149565b73ffffffffffffffffffffffffffffffffffffffff1614610dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcb90613c92565b60405180910390fd5b610dde6000612d7f565b565b6000428210610e24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1b90613c72565b60405180910390fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415610e7b576000915050611105565b82600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184610eca9190613f56565b81526020019081526020016000206000015411610f4957600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600183610f2f9190613f56565b815260200190815260200160002060010154915050611105565b82600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808152602001908152602001600020600001541115610fae576000915050611105565b600080600183610fbe9190613f56565b90505b818111156110ab57600060028383610fd99190613f56565b610fe39190613f25565b82610fee9190613f56565b90506000600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020604051806040016040529081600082015481526020016001820154815250509050868160000151141561108057806020015195505050505050611105565b8681600001511015611094578193506110a4565b6001826110a19190613f56565b92505b5050610fc1565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206001015493505050505b92915050565b600c6020528060005260406000206000915090505481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461118290614052565b80601f01602080910402602001604051908101604052809291908181526020018280546111ae90614052565b80156111fb5780601f106111d0576101008083540402835291602001916111fb565b820191906000526020600020905b8154815290600101906020018083116111de57829003601f168201915b5050505050905090565b600061120f6123f4565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661129d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129490613d52565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490613bb2565b60405180910390fd5b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561139a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139190613cd2565b60405180910390fd5b6001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600115158273ffffffffffffffffffffffffffffffffffffffff167f966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672d60405160405180910390a35050565b60076020528060005260406000206000915054906101000a900460ff1681565b60006114ca6123f4565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f90613d52565b60405180910390fd5b6115628383612e45565b6115cd600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000846129b1565b505050565b600080600160006115e16123f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561169e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169590613dd2565b60405180910390fd5b6116bb6116a96123f4565b8585846116b69190613f56565b6123fc565b600191505092915050565b60006116da6116d36123f4565b84846125c7565b6001905092915050565b60006116ee6123f4565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661177c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177390613d52565b60405180910390fd5b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ff90613c12565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060005b6006805490508160ff161015611ad4578273ffffffffffffffffffffffffffffffffffffffff1660068260ff16815481106118c7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611ac157600660018261191d9190613eee565b60ff1681548110611957577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068260ff16815481106119bf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506006805480611a3f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055600015158373ffffffffffffffffffffffffffffffffffffffff167f966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672d60405160405180910390a350611ad6565b8080611acc906140cd565b915050611863565b505b5050565b6000611ae46123f4565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6990613d52565b60405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611bcf91906139ac565b60206040518083038186803b158015611be757600080fd5b505afa158015611bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1f919061355a565b905080831115611cde57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85836040518363ffffffff1660e01b8152600401611c869291906139c7565b602060405180830381600087803b158015611ca057600080fd5b505af1158015611cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd891906134df565b50611d8f565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b8152600401611d3b9291906139c7565b602060405180830381600087803b158015611d5557600080fd5b505af1158015611d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8d91906134df565b505b50505050565b600080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111611de9576000611e4a565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600183611e379190613f56565b8152602001908152602001600020600101545b915050919050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866611e7d6106ee565b80519060200120611e8c613025565b30604051602001611ea09493929190613a6b565b60405160208183030381529060405280519060200120905060007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf888888604051602001611ef19493929190613a26565b60405160208183030381529060405280519060200120905060008282604051602001611f1e929190613975565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051611f5b9493929190613ab0565b6020604051602081039080840390855afa158015611f7d573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff090613c32565b60405180910390fd5b600c60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061204990614084565b91905055891461208e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208590613bd2565b60405180910390fd5b874211156120d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c890613db2565b60405180910390fd5b6120db818b612c0e565b50505050505050505050565b6120ef6123f4565b73ffffffffffffffffffffffffffffffffffffffff1661210d611149565b73ffffffffffffffffffffffffffffffffffffffff1614612163576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215a90613c92565b60405180910390fd5b600860149054906101000a900460ff16156121b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121aa90613d12565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860146101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600681815481106122a957600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6123046123f4565b73ffffffffffffffffffffffffffffffffffffffff16612322611149565b73ffffffffffffffffffffffffffffffffffffffff1614612378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236f90613c92565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156123e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123df90613b72565b60405180910390fd5b6123f181612d7f565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561246c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246390613d92565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d390613b92565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125ba9190613e12565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262e90613d32565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269e90613b32565b60405180910390fd5b6126b2838383613032565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272f90613bf2565b60405180910390fd5b81816127449190613f56565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127d49190613e98565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128389190613e12565b60405180910390a361284b848484613037565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b890613df2565b60405180910390fd5b6128cd60008383613032565b80600260008282546128df9190613e98565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129349190613e98565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129999190613e12565b60405180910390a36129ad60008383613037565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129ed5750600081115b15612c0957600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612afd576000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000808211612a7a576000612adb565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184612ac89190613f56565b8152602001908152602001600020600101545b905060008382612aeb9190613f56565b9050612af98684848461303c565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612c08576000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000808211612b85576000612be6565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184612bd39190613f56565b8152602001908152602001600020600101545b905060008382612bf69190613e98565b9050612c048584848461303c565b5050505b5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000612c7d84610d10565b905082600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4612d798284836129b1565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eac90613cf2565b60405180910390fd5b612ec182600083613032565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3e90613b52565b60405180910390fd5b8181612f539190613f56565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254612fa79190613f56565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161300c9190613e12565b60405180910390a361302083600084613037565b505050565b6000804690508091505090565b505050565b505050565b6000613060426040518060600160405280603881526020016148ae60389139613262565b90506000841180156130d0575080600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001876130bc9190613f56565b815260200190815260200160002060000154145b1561313e5781600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001876131249190613f56565b81526020019081526020016000206001018190555061320b565b604051806040016040528082815260200183815250600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060008201518160000155602082015181600101559050506001846131c79190613e98565b600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051613253929190613e2d565b60405180910390a25050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831082906132c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132c09190613b10565b60405180910390fd5b5082905092915050565b6000813590506132e281614823565b92915050565b6000815190506132f78161483a565b92915050565b60008135905061330c81614851565b92915050565b60008135905061332181614868565b92915050565b6000813590506133368161487f565b92915050565b60008151905061334b8161487f565b92915050565b60008135905061336081614896565b92915050565b60006020828403121561337857600080fd5b6000613386848285016132d3565b91505092915050565b600080604083850312156133a257600080fd5b60006133b0858286016132d3565b92505060206133c1858286016132d3565b9150509250929050565b6000806000606084860312156133e057600080fd5b60006133ee868287016132d3565b93505060206133ff868287016132d3565b925050604061341086828701613327565b9150509250925092565b6000806040838503121561342d57600080fd5b600061343b858286016132d3565b925050602061344c85828601613327565b9150509250929050565b60008060008060008060c0878903121561346f57600080fd5b600061347d89828a016132d3565b965050602061348e89828a01613327565b955050604061349f89828a01613327565b94505060606134b089828a01613351565b93505060806134c189828a016132fd565b92505060a06134d289828a016132fd565b9150509295509295509295565b6000602082840312156134f157600080fd5b60006134ff848285016132e8565b91505092915050565b60006020828403121561351a57600080fd5b600061352884828501613312565b91505092915050565b60006020828403121561354357600080fd5b600061355184828501613327565b91505092915050565b60006020828403121561356c57600080fd5b600061357a8482850161333c565b91505092915050565b61358c81613f8a565b82525050565b61359b81613f9c565b82525050565b6135aa81613fa8565b82525050565b6135c16135bc82613fa8565b6140f7565b82525050565b6135d081613ffb565b82525050565b60006135e182613e71565b6135eb8185613e7c565b93506135fb81856020860161401f565b6136048161418e565b840191505092915050565b600061361c602383613e7c565b91506136278261419f565b604082019050919050565b600061363f602283613e7c565b915061364a826141ee565b604082019050919050565b6000613662602683613e7c565b915061366d8261423d565b604082019050919050565b6000613685602283613e7c565b91506136908261428c565b604082019050919050565b60006136a8602a83613e7c565b91506136b3826142db565b604082019050919050565b60006136cb600283613e8d565b91506136d68261432a565b600282019050919050565b60006136ee602283613e7c565b91506136f982614353565b604082019050919050565b6000613711602683613e7c565b915061371c826143a2565b604082019050919050565b6000613734602483613e7c565b915061373f826143f1565b604082019050919050565b6000613757602683613e7c565b915061376282614440565b604082019050919050565b600061377a602883613e7c565b91506137858261448f565b604082019050919050565b600061379d602783613e7c565b91506137a8826144de565b604082019050919050565b60006137c0602083613e7c565b91506137cb8261452d565b602082019050919050565b60006137e3601583613e7c565b91506137ee82614556565b602082019050919050565b6000613806602883613e7c565b91506138118261457f565b604082019050919050565b6000613829602183613e7c565b9150613834826145ce565b604082019050919050565b600061384c601c83613e7c565b91506138578261461d565b602082019050919050565b600061386f602583613e7c565b915061387a82614646565b604082019050919050565b6000613892602383613e7c565b915061389d82614695565b604082019050919050565b60006138b5601c83613e7c565b91506138c0826146e4565b602082019050919050565b60006138d8602483613e7c565b91506138e38261470d565b604082019050919050565b60006138fb602683613e7c565b91506139068261475c565b604082019050919050565b600061391e602583613e7c565b9150613929826147ab565b604082019050919050565b6000613941601f83613e7c565b915061394c826147fa565b602082019050919050565b61396081613fe4565b82525050565b61396f81613fee565b82525050565b6000613980826136be565b915061398c82856135b0565b60208201915061399c82846135b0565b6020820191508190509392505050565b60006020820190506139c16000830184613583565b92915050565b60006040820190506139dc6000830185613583565b6139e96020830184613957565b9392505050565b6000602082019050613a056000830184613592565b92915050565b6000602082019050613a2060008301846135a1565b92915050565b6000608082019050613a3b60008301876135a1565b613a486020830186613583565b613a556040830185613957565b613a626060830184613957565b95945050505050565b6000608082019050613a8060008301876135a1565b613a8d60208301866135a1565b613a9a6040830185613957565b613aa76060830184613583565b95945050505050565b6000608082019050613ac560008301876135a1565b613ad26020830186613966565b613adf60408301856135a1565b613aec60608301846135a1565b95945050505050565b6000602082019050613b0a60008301846135c7565b92915050565b60006020820190508181036000830152613b2a81846135d6565b905092915050565b60006020820190508181036000830152613b4b8161360f565b9050919050565b60006020820190508181036000830152613b6b81613632565b9050919050565b60006020820190508181036000830152613b8b81613655565b9050919050565b60006020820190508181036000830152613bab81613678565b9050919050565b60006020820190508181036000830152613bcb8161369b565b9050919050565b60006020820190508181036000830152613beb816136e1565b9050919050565b60006020820190508181036000830152613c0b81613704565b9050919050565b60006020820190508181036000830152613c2b81613727565b9050919050565b60006020820190508181036000830152613c4b8161374a565b9050919050565b60006020820190508181036000830152613c6b8161376d565b9050919050565b60006020820190508181036000830152613c8b81613790565b9050919050565b60006020820190508181036000830152613cab816137b3565b9050919050565b60006020820190508181036000830152613ccb816137d6565b9050919050565b60006020820190508181036000830152613ceb816137f9565b9050919050565b60006020820190508181036000830152613d0b8161381c565b9050919050565b60006020820190508181036000830152613d2b8161383f565b9050919050565b60006020820190508181036000830152613d4b81613862565b9050919050565b60006020820190508181036000830152613d6b81613885565b9050919050565b60006020820190508181036000830152613d8b816138a8565b9050919050565b60006020820190508181036000830152613dab816138cb565b9050919050565b60006020820190508181036000830152613dcb816138ee565b9050919050565b60006020820190508181036000830152613deb81613911565b9050919050565b60006020820190508181036000830152613e0b81613934565b9050919050565b6000602082019050613e276000830184613957565b92915050565b6000604082019050613e426000830185613957565b613e4f6020830184613957565b9392505050565b6000602082019050613e6b6000830184613966565b92915050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b6000613ea382613fe4565b9150613eae83613fe4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ee357613ee2614101565b5b828201905092915050565b6000613ef982613fee565b9150613f0483613fee565b92508260ff03821115613f1a57613f19614101565b5b828201905092915050565b6000613f3082613fe4565b9150613f3b83613fe4565b925082613f4b57613f4a614130565b5b828204905092915050565b6000613f6182613fe4565b9150613f6c83613fe4565b925082821015613f7f57613f7e614101565b5b828203905092915050565b6000613f9582613fc4565b9050919050565b60008115159050919050565b6000819050919050565b6000613fbd82613f8a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006140068261400d565b9050919050565b600061401882613fc4565b9050919050565b60005b8381101561403d578082015181840152602081019050614022565b8381111561404c576000848401525b50505050565b6000600282049050600182168061406a57607f821691505b6020821081141561407e5761407d61415f565b5b50919050565b600061408f82613fe4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156140c2576140c1614101565b5b600182019050919050565b60006140d882613fee565b915060ff8214156140ec576140eb614101565b5b600182019050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f70657261626c653a206e6577206f70657261746f7220697320746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b7f534f554c3a3a64656c656761746542795369673a20696e76616c6964206e6f6e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f4f70657261626c653a2061646472657373206973206e6f7420616e206f70657260008201527f61746f7200000000000000000000000000000000000000000000000000000000602082015250565b7f534f554c3a3a64656c656761746542795369673a20696e76616c69642073696760008201527f6e61747572650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f534f554c3a3a6765745072696f72566f7465733a206e6f74207965742064657460008201527f65726d696e656400000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f6d7573742062652061206e657720616464726573730000000000000000000000600082015250565b7f4f70657261626c653a206164647265737320697320616c726561647920616e2060008201527f6f70657261746f72000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f74686520636972636c652068617320616c726561647920626567756e00000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4f70657261746f723a2063616c6c6572206973206e6f7420616e206f7065726160008201527f746f720000000000000000000000000000000000000000000000000000000000602082015250565b7f74686520636972636c6520686173206e6f742079657420626567756e00000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f534f554c3a3a64656c656761746542795369673a207369676e6174757265206560008201527f7870697265640000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61482c81613f8a565b811461483757600080fd5b50565b61484381613f9c565b811461484e57600080fd5b50565b61485a81613fa8565b811461486557600080fd5b50565b61487181613fb2565b811461487c57600080fd5b50565b61488881613fe4565b811461489357600080fd5b50565b61489f81613fee565b81146148aa57600080fd5b5056fe534f554c3a3a5f7772697465436865636b706f696e743a20626c6f636b2074696d657374616d702065786365656473203235362062697473a2646970667358221220dbf57a198d2d7806ce66999da684530b4d67b0f58595dbcfba083196662dc8cd64736f6c63430008040033

Deployed ByteCode Sourcemap

28530:8300:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6917:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7739:166;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30003:71;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;7190:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30240:122;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7913:412;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36682:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7105:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8333:212;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28670:230;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31084:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31243:90;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30130:50;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7287:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26517:94;;;:::i;:::-;;32984:1233;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30630:39;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28615:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26294:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7009:90;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28107:382;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27088:40;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28908:171;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8553:369;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7403:172;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27580:519;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29384:289;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32672:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31406:1190;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29087:184;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7583:148;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27055:26;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30443:117;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26619:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6917:86;6971:13;6995:5;6988:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6917:86;:::o;7739:166::-;7819:4;7836:39;7845:12;:10;:12::i;:::-;7859:7;7868:6;7836:8;:39::i;:::-;7893:4;7886:11;;7739:166;;;;:::o;30003:71::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7190:91::-;7251:4;7266:12;;7259:19;;7190:91;:::o;30240:122::-;30282:80;30240:122;:::o;7913:412::-;8016:4;8033:36;8043:6;8051:9;8062:6;8033:9;:36::i;:::-;8080:21;8104:11;:19;8116:6;8104:19;;;;;;;;;;;;;;;:33;8124:12;:10;:12::i;:::-;8104:33;;;;;;;;;;;;;;;;8080:57;;8176:6;8156:16;:26;;8148:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8238:57;8247:6;8255:12;:10;:12::i;:::-;8288:6;8269:16;:25;;;;:::i;:::-;8238:8;:57::i;:::-;8313:4;8306:11;;;7913:412;;;;;:::o;36682:145::-;27442:17;27462:12;:10;:12::i;:::-;27442:32;;27493:8;:19;27502:9;27493:19;;;;;;;;;;;;;;;;;;;;;;;;;27485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36765:5:::1;36757:13;;:4;;;;;;;;;;;:13;;;;36749:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;36814:5;36807:4;;:12;;;;;;;;;;;;;;;;;;36682:145:::0;;:::o;7105:79::-;7163:5;7179:2;7172:9;;7105:79;:::o;8333:212::-;8418:4;8435:80;8444:12;:10;:12::i;:::-;8458:7;8504:10;8467:11;:25;8479:12;:10;:12::i;:::-;8467:25;;;;;;;;;;;;;;;:34;8493:7;8467:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;8435:8;:80::i;:::-;8533:4;8526:11;;8333:212;;;;:::o;28670:230::-;27442:17;27462:12;:10;:12::i;:::-;27442:32;;27493:8;:19;27502:9;27493:19;;;;;;;;;;;;;;;;;;;;;;;;;27485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28753:13:::1;;;;;;;;;;;28745:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;28810:19;28816:3;28821:7;28810:5;:19::i;:::-;28840:52;28863:1;28867:10;:15;28878:3;28867:15;;;;;;;;;;;;;;;;;;;;;;;;;28884:7;28840:14;:52::i;:::-;28670:230:::0;;;:::o;31084:103::-;31145:7;31163:10;:21;31174:9;31163:21;;;;;;;;;;;;;;;;;;;;;;;;;31156:28;;31084:103;;;:::o;31243:90::-;31298:32;31308:10;31320:9;31298;:32::i;:::-;31243:90;:::o;30130:50::-;;;;;;;;;;;;;;;;;:::o;7287:110::-;7361:4;7376:9;:18;7386:7;7376:18;;;;;;;;;;;;;;;;7369:25;;7287:110;;;:::o;26517:94::-;26440:12;:10;:12::i;:::-;26429:23;;:7;:5;:7::i;:::-;:23;;;26421:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26582:21:::1;26600:1;26582:9;:21::i;:::-;26517:94::o:0;32984:1233::-;33068:7;33113:15;33096:14;:32;33088:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;33185:20;33208:14;:23;33223:7;33208:23;;;;;;;;;;;;;;;;33185:46;;33262:1;33246:12;:17;33242:58;;;33287:1;33280:8;;;;;33242:58;33406:14;33355:11;:20;33367:7;33355:20;;;;;;;;;;;;;;;:38;33391:1;33376:12;:16;;;;:::i;:::-;33355:38;;;;;;;;;;;:47;;;:65;33351:149;;33444:11;:20;33456:7;33444:20;;;;;;;;;;;;;;;:38;33480:1;33465:12;:16;;;;:::i;:::-;33444:38;;;;;;;;;;;:44;;;33437:51;;;;;33351:149;33592:14;33557:11;:20;33569:7;33557:20;;;;;;;;;;;;;;;:23;33578:1;33557:23;;;;;;;;;;;:32;;;:49;33553:90;;;33630:1;33623:8;;;;;33553:90;33655:13;33683;33714:1;33699:12;:16;;;;:::i;:::-;33683:32;;33726:433;33741:5;33733;:13;33726:433;;;33763:14;33806:1;33797:5;33789;:13;;;;:::i;:::-;33788:19;;;;:::i;:::-;33780:5;:27;;;;:::i;:::-;33763:44;;33849:20;33872:11;:20;33884:7;33872:20;;;;;;;;;;;;;;;:28;33893:6;33872:28;;;;;;;;;;;33849:51;;;;;;;;;;;;;;;;;;;;;;;;;;;33934:14;33919:2;:11;;;:29;33915:233;;;33976:2;:8;;;33969:15;;;;;;;;;33915:233;34024:14;34010:2;:11;;;:28;34006:142;;;34067:6;34059:14;;34006:142;;;34131:1;34122:6;:10;;;;:::i;:::-;34114:18;;34006:142;33726:433;;;;;34176:11;:20;34188:7;34176:20;;;;;;;;;;;;;;;:27;34197:5;34176:27;;;;;;;;;;;:33;;;34169:40;;;;;32984:1233;;;;;:::o;30630:39::-;;;;;;;;;;;;;;;;;:::o;28615:21::-;;;;;;;;;;;;;:::o;26294:87::-;26340:7;26367:6;;;;;;;;;;;26360:13;;26294:87;:::o;7009:90::-;7065:13;7089:7;7082:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7009:90;:::o;28107:382::-;27442:17;27462:12;:10;:12::i;:::-;27442:32;;27493:8;:19;27502:9;27493:19;;;;;;;;;;;;;;;;;;;;;;;;;27485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28219:1:::1;28196:25;;:11;:25;;;;28188:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;28288:8;:21;28297:11;28288:21;;;;;;;;;;;;;;;;;;;;;;;;;28287:22;28279:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;28389:4;28365:8;:21;28374:11;28365:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;28404:9;28419:11;28404:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28476:4;28447:34;;28463:11;28447:34;;;;;;;;;;;;28107:382:::0;;:::o;27088:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;28908:171::-;27442:17;27462:12;:10;:12::i;:::-;27442:32;;27493:8;:19;27502:9;27493:19;;;;;;;;;;;;;;;;;;;;;;;;;27485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28985:21:::1;28991:5;28998:7;28985:5;:21::i;:::-;29017:54;29032:10;:17;29043:5;29032:17;;;;;;;;;;;;;;;;;;;;;;;;;29059:1;29063:7;29017:14;:54::i;:::-;28908:171:::0;;;:::o;8553:369::-;8643:4;8660:21;8684:11;:25;8696:12;:10;:12::i;:::-;8684:25;;;;;;;;;;;;;;;:34;8710:7;8684:34;;;;;;;;;;;;;;;;8660:58;;8757:15;8737:16;:35;;8729:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;8825:67;8834:12;:10;:12::i;:::-;8848:7;8876:15;8857:16;:34;;;;:::i;:::-;8825:8;:67::i;:::-;8910:4;8903:11;;;8553:369;;;;:::o;7403:172::-;7486:4;7503:42;7513:12;:10;:12::i;:::-;7527:9;7538:6;7503:9;:42::i;:::-;7563:4;7556:11;;7403:172;;;;:::o;27580:519::-;27442:17;27462:12;:10;:12::i;:::-;27442:32;;27493:8;:19;27502:9;27493:19;;;;;;;;;;;;;;;;;;;;;;;;;27485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27677:8:::1;:26;27686:16;27677:26;;;;;;;;;;;;;;;;;;;;;;;;;27669:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;27784:5;27755:8;:26;27764:16;27755:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;27805:7;27800:292;27818:9;:16;;;;27814:1;:20;;;27800:292;;;27876:16;27860:32;;:9;27870:1;27860:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;27856:225;;;27928:9;27940:1;27938;:3;;;;:::i;:::-;27928:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27913:9;27923:1;27913:12;;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;27961:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28034:5;28000:40;;28016:16;28000:40;;;;;;;;;;;;28059:7;;;27856:225;27836:3;;;;;:::i;:::-;;;;27800:292;;;;27563:1;27580:519:::0;;:::o;29384:289::-;27442:17;27462:12;:10;:12::i;:::-;27442:32;;27493:8;:19;27502:9;27493:19;;;;;;;;;;;;;;;;;;;;;;;;;27485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29471:15:::1;29489:4;;;;;;;;;;;:14;;;29512:4;29489:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29471:47;;29543:7;29533;:17;29529:137;;;29567:4;;;;;;;;;;;:13;;;29581:3;29586:7;29567:27;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29529:137;;;29627:4;;;;;;;;;;;:13;;;29641:3;29646:7;29627:27;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29529:137;27563:1;29384:289:::0;;;:::o;32672:218::-;32737:4;32754:17;32774:14;:23;32789:7;32774:23;;;;;;;;;;;;;;;;32754:43;;32830:1;32815:12;:16;:67;;32881:1;32815:67;;;32834:11;:20;32846:7;32834:20;;;;;;;;;;;;;;;:38;32870:1;32855:12;:16;;;;:::i;:::-;32834:38;;;;;;;;;;;:44;;;32815:67;32808:74;;;32672:218;;;:::o;31406:1190::-;31599:23;30282:80;31728:6;:4;:6::i;:::-;31712:24;;;;;;31755:12;:10;:12::i;:::-;31794:4;31649:165;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;31625:200;;;;;;31599:226;;31838:18;30489:71;31950:9;31978:5;32002:6;31883:140;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;31859:175;;;;;;31838:196;;32047:14;32152:15;32186:10;32088:123;;;;;;;;;:::i;:::-;;;;;;;;;;;;;32064:158;;;;;;32047:175;;32235:17;32255:26;32265:6;32273:1;32276;32279;32255:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32235:46;;32321:1;32300:23;;:9;:23;;;;32292:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;32394:6;:17;32401:9;32394:17;;;;;;;;;;;;;;;;:19;;;;;;;;;:::i;:::-;;;;;32385:5;:28;32377:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;32490:6;32471:15;:25;;32463:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;32557:31;32567:9;32578;32557;:31::i;:::-;32550:38;;;;31406:1190;;;;;;:::o;29087:184::-;26440:12;:10;:12::i;:::-;26429:23;;:7;:5;:7::i;:::-;:23;;;26421:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29163:13:::1;;;;;;;;;;;29162:14;29154:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;29227:5;29220:4;;:12;;;;;;;;;;;;;;;;;;29259:4;29243:13;;:20;;;;;;;;;;;;;;;;;;29087:184:::0;:::o;7583:148::-;7672:4;7696:11;:18;7708:5;7696:18;;;;;;;;;;;;;;;:27;7715:7;7696:27;;;;;;;;;;;;;;;;7689:34;;7583:148;;;;:::o;27055:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;30443:117::-;30489:71;30443:117;:::o;26619:192::-;26440:12;:10;:12::i;:::-;26429:23;;:7;:5;:7::i;:::-;:23;;;26421:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26728:1:::1;26708:22;;:8;:22;;;;26700:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26784:19;26794:8;26784:9;:19::i;:::-;26619:192:::0;:::o;6342:84::-;6395:7;6413:10;6406:17;;6342:84;:::o;10534:341::-;10650:1;10633:19;;:5;:19;;;;10625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10731:1;10712:21;;:7;:21;;;;10704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10813:6;10783:11;:18;10795:5;10783:18;;;;;;;;;;;;;;;:27;10802:7;10783:27;;;;;;;;;;;;;;;:36;;;;10851:7;10835:32;;10844:5;10835:32;;;10860:6;10835:32;;;;;;:::i;:::-;;;;;;;;10534:341;;;:::o;8930:649::-;9051:1;9033:20;;:6;:20;;;;9025:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9135:1;9114:23;;:9;:23;;;;9106:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9188:47;9209:6;9217:9;9228:6;9188:20;:47::i;:::-;9246:18;9267:9;:17;9277:6;9267:17;;;;;;;;;;;;;;;;9246:38;;9320:6;9303:13;:23;;9295:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9416:6;9400:13;:22;;;;:::i;:::-;9380:9;:17;9390:6;9380:17;;;;;;;;;;;;;;;:42;;;;9457:6;9433:9;:20;9443:9;9433:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;9496:9;9479:35;;9488:6;9479:35;;;9507:6;9479:35;;;;;;:::i;:::-;;;;;;;;9525:46;9545:6;9553:9;9564:6;9525:19;:46::i;:::-;8930:649;;;;:::o;9587:390::-;9687:1;9668:21;;:7;:21;;;;9660:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;9736:49;9765:1;9769:7;9778:6;9736:20;:49::i;:::-;9812:6;9796:12;;:22;;;;;;;:::i;:::-;;;;;;;;9851:6;9829:9;:18;9839:7;9829:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;9894:7;9873:37;;9890:1;9873:37;;;9903:6;9873:37;;;;;;:::i;:::-;;;;;;;;9921:48;9949:1;9953:7;9962:6;9921:19;:48::i;:::-;9587:390;;:::o;34656:943::-;34762:6;34752:16;;:6;:16;;;;:30;;;;;34781:1;34772:6;:10;34752:30;34748:844;;;34821:1;34803:20;;:6;:20;;;34799:383;;34892:17;34912:14;:22;34927:6;34912:22;;;;;;;;;;;;;;;;34892:42;;34953:17;34985:1;34973:9;:13;:60;;35032:1;34973:60;;;34989:11;:19;35001:6;34989:19;;;;;;;;;;;;;;;:34;35021:1;35009:9;:13;;;;:::i;:::-;34989:34;;;;;;;;;;;:40;;;34973:60;34953:80;;35052:17;35084:6;35072:9;:18;;;;:::i;:::-;35052:38;;35109:57;35126:6;35134:9;35145;35156;35109:16;:57::i;:::-;34799:383;;;;35220:1;35202:20;;:6;:20;;;35198:383;;35291:17;35311:14;:22;35326:6;35311:22;;;;;;;;;;;;;;;;35291:42;;35352:17;35384:1;35372:9;:13;:60;;35431:1;35372:60;;;35388:11;:19;35400:6;35388:19;;;;;;;;;;;;;;;:34;35420:1;35408:9;:13;;;;:::i;:::-;35388:34;;;;;;;;;;;:40;;;35372:60;35352:80;;35451:17;35483:6;35471:9;:18;;;;:::i;:::-;35451:38;;35508:57;35525:6;35533:9;35544;35555;35508:16;:57::i;:::-;35198:383;;;;34748:844;34656:943;;;:::o;34225:423::-;34302:23;34328:10;:21;34339:9;34328:21;;;;;;;;;;;;;;;;;;;;;;;;;34302:47;;34360:24;34387:20;34397:9;34387;:20::i;:::-;34360:47;;34486:9;34462:10;:21;34473:9;34462:21;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;34557:9;34513:54;;34540:15;34513:54;;34529:9;34513:54;;;;;;;;;;;;34580:60;34595:15;34612:9;34623:16;34580:14;:60::i;:::-;34225:423;;;;:::o;26819:173::-;26875:16;26894:6;;;;;;;;;;;26875:25;;26920:8;26911:6;;:17;;;;;;;;;;;;;;;;;;26975:8;26944:40;;26965:8;26944:40;;;;;;;;;;;;26819:173;;:::o;9985:541::-;10085:1;10066:21;;:7;:21;;;;10058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10136:49;10157:7;10174:1;10178:6;10136:20;:49::i;:::-;10196:19;10218:9;:18;10228:7;10218:18;;;;;;;;;;;;;;;;10196:40;;10273:6;10255:14;:24;;10247:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10367:6;10350:14;:23;;;;:::i;:::-;10329:9;:18;10339:7;10329:18;;;;;;;;;;;;;;;:44;;;;10400:6;10384:12;;:22;;;;;;;:::i;:::-;;;;;;;;10448:1;10422:37;;10431:7;10422:37;;;10452:6;10422:37;;;;;;:::i;:::-;;;;;;;;10470:48;10490:7;10507:1;10511:6;10470:19;:48::i;:::-;9985:541;;;:::o;36521:153::-;36566:4;36583:15;36631:9;36620:20;;36659:7;36652:14;;;36521:153;:::o;10883:88::-;;;;:::o;10977:87::-;;;;:::o;35607:722::-;35787:22;35812:84;35820:15;35812:84;;;;;;;;;;;;;;;;;:7;:84::i;:::-;35787:109;;35928:1;35913:12;:16;:87;;;;;35986:14;35933:11;:22;35945:9;35933:22;;;;;;;;;;;;;;;:40;35971:1;35956:12;:16;;;;:::i;:::-;35933:40;;;;;;;;;;;:49;;;:67;35913:87;35909:344;;;36066:8;36017:11;:22;36029:9;36017:22;;;;;;;;;;;;;;;:40;36055:1;36040:12;:16;;;;:::i;:::-;36017:40;;;;;;;;;;;:46;;:57;;;;35909:344;;;36146:36;;;;;;;;36157:14;36146:36;;;;36173:8;36146:36;;;36107:11;:22;36119:9;36107:22;;;;;;;;;;;;;;;:36;36130:12;36107:36;;;;;;;;;;;:75;;;;;;;;;;;;;;;;;;;36240:1;36225:12;:16;;;;:::i;:::-;36197:14;:25;36212:9;36197:25;;;;;;;;;;;;;;;:44;;;;35909:344;36291:9;36270:51;;;36302:8;36312;36270:51;;;;;;;:::i;:::-;;;;;;;;35607:722;;;;;:::o;36337:176::-;36413:7;36445:17;36441:1;:21;36464:12;36433:44;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;36503:1;36488:17;;36337:176;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:137::-;206:5;237:6;231:13;222:22;;253:30;277:5;253:30;:::i;:::-;212:77;;;;:::o;295:139::-;341:5;379:6;366:20;357:29;;395:33;422:5;395:33;:::i;:::-;347:87;;;;:::o;440:175::-;504:5;542:6;529:20;520:29;;558:51;603:5;558:51;:::i;:::-;510:105;;;;:::o;621:139::-;667:5;705:6;692:20;683:29;;721:33;748:5;721:33;:::i;:::-;673:87;;;;:::o;766:143::-;823:5;854:6;848:13;839:22;;870:33;897:5;870:33;:::i;:::-;829:80;;;;:::o;915:135::-;959:5;997:6;984:20;975:29;;1013:31;1038:5;1013:31;:::i;:::-;965:85;;;;:::o;1056:262::-;1115:6;1164:2;1152:9;1143:7;1139:23;1135:32;1132:2;;;1180:1;1177;1170:12;1132:2;1223:1;1248:53;1293:7;1284:6;1273:9;1269:22;1248:53;:::i;:::-;1238:63;;1194:117;1122:196;;;;:::o;1324:407::-;1392:6;1400;1449:2;1437:9;1428:7;1424:23;1420:32;1417:2;;;1465:1;1462;1455:12;1417:2;1508:1;1533:53;1578:7;1569:6;1558:9;1554:22;1533:53;:::i;:::-;1523:63;;1479:117;1635:2;1661:53;1706:7;1697:6;1686:9;1682:22;1661:53;:::i;:::-;1651:63;;1606:118;1407:324;;;;;:::o;1737:552::-;1814:6;1822;1830;1879:2;1867:9;1858:7;1854:23;1850:32;1847:2;;;1895:1;1892;1885:12;1847:2;1938:1;1963:53;2008:7;1999:6;1988:9;1984:22;1963:53;:::i;:::-;1953:63;;1909:117;2065:2;2091:53;2136:7;2127:6;2116:9;2112:22;2091:53;:::i;:::-;2081:63;;2036:118;2193:2;2219:53;2264:7;2255:6;2244:9;2240:22;2219:53;:::i;:::-;2209:63;;2164:118;1837:452;;;;;:::o;2295:407::-;2363:6;2371;2420:2;2408:9;2399:7;2395:23;2391:32;2388:2;;;2436:1;2433;2426:12;2388:2;2479:1;2504:53;2549:7;2540:6;2529:9;2525:22;2504:53;:::i;:::-;2494:63;;2450:117;2606:2;2632:53;2677:7;2668:6;2657:9;2653:22;2632:53;:::i;:::-;2622:63;;2577:118;2378:324;;;;;:::o;2708:986::-;2810:6;2818;2826;2834;2842;2850;2899:3;2887:9;2878:7;2874:23;2870:33;2867:2;;;2916:1;2913;2906:12;2867:2;2959:1;2984:53;3029:7;3020:6;3009:9;3005:22;2984:53;:::i;:::-;2974:63;;2930:117;3086:2;3112:53;3157:7;3148:6;3137:9;3133:22;3112:53;:::i;:::-;3102:63;;3057:118;3214:2;3240:53;3285:7;3276:6;3265:9;3261:22;3240:53;:::i;:::-;3230:63;;3185:118;3342:2;3368:51;3411:7;3402:6;3391:9;3387:22;3368:51;:::i;:::-;3358:61;;3313:116;3468:3;3495:53;3540:7;3531:6;3520:9;3516:22;3495:53;:::i;:::-;3485:63;;3439:119;3597:3;3624:53;3669:7;3660:6;3649:9;3645:22;3624:53;:::i;:::-;3614:63;;3568:119;2857:837;;;;;;;;:::o;3700:278::-;3767:6;3816:2;3804:9;3795:7;3791:23;3787:32;3784:2;;;3832:1;3829;3822:12;3784:2;3875:1;3900:61;3953:7;3944:6;3933:9;3929:22;3900:61;:::i;:::-;3890:71;;3846:125;3774:204;;;;:::o;3984:298::-;4061:6;4110:2;4098:9;4089:7;4085:23;4081:32;4078:2;;;4126:1;4123;4116:12;4078:2;4169:1;4194:71;4257:7;4248:6;4237:9;4233:22;4194:71;:::i;:::-;4184:81;;4140:135;4068:214;;;;:::o;4288:262::-;4347:6;4396:2;4384:9;4375:7;4371:23;4367:32;4364:2;;;4412:1;4409;4402:12;4364:2;4455:1;4480:53;4525:7;4516:6;4505:9;4501:22;4480:53;:::i;:::-;4470:63;;4426:117;4354:196;;;;:::o;4556:284::-;4626:6;4675:2;4663:9;4654:7;4650:23;4646:32;4643:2;;;4691:1;4688;4681:12;4643:2;4734:1;4759:64;4815:7;4806:6;4795:9;4791:22;4759:64;:::i;:::-;4749:74;;4705:128;4633:207;;;;:::o;4846:118::-;4933:24;4951:5;4933:24;:::i;:::-;4928:3;4921:37;4911:53;;:::o;4970:109::-;5051:21;5066:5;5051:21;:::i;:::-;5046:3;5039:34;5029:50;;:::o;5085:118::-;5172:24;5190:5;5172:24;:::i;:::-;5167:3;5160:37;5150:53;;:::o;5209:157::-;5314:45;5334:24;5352:5;5334:24;:::i;:::-;5314:45;:::i;:::-;5309:3;5302:58;5292:74;;:::o;5372:167::-;5477:55;5526:5;5477:55;:::i;:::-;5472:3;5465:68;5455:84;;:::o;5545:364::-;5633:3;5661:39;5694:5;5661:39;:::i;:::-;5716:71;5780:6;5775:3;5716:71;:::i;:::-;5709:78;;5796:52;5841:6;5836:3;5829:4;5822:5;5818:16;5796:52;:::i;:::-;5873:29;5895:6;5873:29;:::i;:::-;5868:3;5864:39;5857:46;;5637:272;;;;;:::o;5915:366::-;6057:3;6078:67;6142:2;6137:3;6078:67;:::i;:::-;6071:74;;6154:93;6243:3;6154:93;:::i;:::-;6272:2;6267:3;6263:12;6256:19;;6061:220;;;:::o;6287:366::-;6429:3;6450:67;6514:2;6509:3;6450:67;:::i;:::-;6443:74;;6526:93;6615:3;6526:93;:::i;:::-;6644:2;6639:3;6635:12;6628:19;;6433:220;;;:::o;6659:366::-;6801:3;6822:67;6886:2;6881:3;6822:67;:::i;:::-;6815:74;;6898:93;6987:3;6898:93;:::i;:::-;7016:2;7011:3;7007:12;7000:19;;6805:220;;;:::o;7031:366::-;7173:3;7194:67;7258:2;7253:3;7194:67;:::i;:::-;7187:74;;7270:93;7359:3;7270:93;:::i;:::-;7388:2;7383:3;7379:12;7372:19;;7177:220;;;:::o;7403:366::-;7545:3;7566:67;7630:2;7625:3;7566:67;:::i;:::-;7559:74;;7642:93;7731:3;7642:93;:::i;:::-;7760:2;7755:3;7751:12;7744:19;;7549:220;;;:::o;7775:400::-;7935:3;7956:84;8038:1;8033:3;7956:84;:::i;:::-;7949:91;;8049:93;8138:3;8049:93;:::i;:::-;8167:1;8162:3;8158:11;8151:18;;7939:236;;;:::o;8181:366::-;8323:3;8344:67;8408:2;8403:3;8344:67;:::i;:::-;8337:74;;8420:93;8509:3;8420:93;:::i;:::-;8538:2;8533:3;8529:12;8522:19;;8327:220;;;:::o;8553:366::-;8695:3;8716:67;8780:2;8775:3;8716:67;:::i;:::-;8709:74;;8792:93;8881:3;8792:93;:::i;:::-;8910:2;8905:3;8901:12;8894:19;;8699:220;;;:::o;8925:366::-;9067:3;9088:67;9152:2;9147:3;9088:67;:::i;:::-;9081:74;;9164:93;9253:3;9164:93;:::i;:::-;9282:2;9277:3;9273:12;9266:19;;9071:220;;;:::o;9297:366::-;9439:3;9460:67;9524:2;9519:3;9460:67;:::i;:::-;9453:74;;9536:93;9625:3;9536:93;:::i;:::-;9654:2;9649:3;9645:12;9638:19;;9443:220;;;:::o;9669:366::-;9811:3;9832:67;9896:2;9891:3;9832:67;:::i;:::-;9825:74;;9908:93;9997:3;9908:93;:::i;:::-;10026:2;10021:3;10017:12;10010:19;;9815:220;;;:::o;10041:366::-;10183:3;10204:67;10268:2;10263:3;10204:67;:::i;:::-;10197:74;;10280:93;10369:3;10280:93;:::i;:::-;10398:2;10393:3;10389:12;10382:19;;10187:220;;;:::o;10413:366::-;10555:3;10576:67;10640:2;10635:3;10576:67;:::i;:::-;10569:74;;10652:93;10741:3;10652:93;:::i;:::-;10770:2;10765:3;10761:12;10754:19;;10559:220;;;:::o;10785:366::-;10927:3;10948:67;11012:2;11007:3;10948:67;:::i;:::-;10941:74;;11024:93;11113:3;11024:93;:::i;:::-;11142:2;11137:3;11133:12;11126:19;;10931:220;;;:::o;11157:366::-;11299:3;11320:67;11384:2;11379:3;11320:67;:::i;:::-;11313:74;;11396:93;11485:3;11396:93;:::i;:::-;11514:2;11509:3;11505:12;11498:19;;11303:220;;;:::o;11529:366::-;11671:3;11692:67;11756:2;11751:3;11692:67;:::i;:::-;11685:74;;11768:93;11857:3;11768:93;:::i;:::-;11886:2;11881:3;11877:12;11870:19;;11675:220;;;:::o;11901:366::-;12043:3;12064:67;12128:2;12123:3;12064:67;:::i;:::-;12057:74;;12140:93;12229:3;12140:93;:::i;:::-;12258:2;12253:3;12249:12;12242:19;;12047:220;;;:::o;12273:366::-;12415:3;12436:67;12500:2;12495:3;12436:67;:::i;:::-;12429:74;;12512:93;12601:3;12512:93;:::i;:::-;12630:2;12625:3;12621:12;12614:19;;12419:220;;;:::o;12645:366::-;12787:3;12808:67;12872:2;12867:3;12808:67;:::i;:::-;12801:74;;12884:93;12973:3;12884:93;:::i;:::-;13002:2;12997:3;12993:12;12986:19;;12791:220;;;:::o;13017:366::-;13159:3;13180:67;13244:2;13239:3;13180:67;:::i;:::-;13173:74;;13256:93;13345:3;13256:93;:::i;:::-;13374:2;13369:3;13365:12;13358:19;;13163:220;;;:::o;13389:366::-;13531:3;13552:67;13616:2;13611:3;13552:67;:::i;:::-;13545:74;;13628:93;13717:3;13628:93;:::i;:::-;13746:2;13741:3;13737:12;13730:19;;13535:220;;;:::o;13761:366::-;13903:3;13924:67;13988:2;13983:3;13924:67;:::i;:::-;13917:74;;14000:93;14089:3;14000:93;:::i;:::-;14118:2;14113:3;14109:12;14102:19;;13907:220;;;:::o;14133:366::-;14275:3;14296:67;14360:2;14355:3;14296:67;:::i;:::-;14289:74;;14372:93;14461:3;14372:93;:::i;:::-;14490:2;14485:3;14481:12;14474:19;;14279:220;;;:::o;14505:366::-;14647:3;14668:67;14732:2;14727:3;14668:67;:::i;:::-;14661:74;;14744:93;14833:3;14744:93;:::i;:::-;14862:2;14857:3;14853:12;14846:19;;14651:220;;;:::o;14877:118::-;14964:24;14982:5;14964:24;:::i;:::-;14959:3;14952:37;14942:53;;:::o;15001:112::-;15084:22;15100:5;15084:22;:::i;:::-;15079:3;15072:35;15062:51;;:::o;15119:663::-;15360:3;15382:148;15526:3;15382:148;:::i;:::-;15375:155;;15540:75;15611:3;15602:6;15540:75;:::i;:::-;15640:2;15635:3;15631:12;15624:19;;15653:75;15724:3;15715:6;15653:75;:::i;:::-;15753:2;15748:3;15744:12;15737:19;;15773:3;15766:10;;15364:418;;;;;:::o;15788:222::-;15881:4;15919:2;15908:9;15904:18;15896:26;;15932:71;16000:1;15989:9;15985:17;15976:6;15932:71;:::i;:::-;15886:124;;;;:::o;16016:332::-;16137:4;16175:2;16164:9;16160:18;16152:26;;16188:71;16256:1;16245:9;16241:17;16232:6;16188:71;:::i;:::-;16269:72;16337:2;16326:9;16322:18;16313:6;16269:72;:::i;:::-;16142:206;;;;;:::o;16354:210::-;16441:4;16479:2;16468:9;16464:18;16456:26;;16492:65;16554:1;16543:9;16539:17;16530:6;16492:65;:::i;:::-;16446:118;;;;:::o;16570:222::-;16663:4;16701:2;16690:9;16686:18;16678:26;;16714:71;16782:1;16771:9;16767:17;16758:6;16714:71;:::i;:::-;16668:124;;;;:::o;16798:553::-;16975:4;17013:3;17002:9;16998:19;16990:27;;17027:71;17095:1;17084:9;17080:17;17071:6;17027:71;:::i;:::-;17108:72;17176:2;17165:9;17161:18;17152:6;17108:72;:::i;:::-;17190;17258:2;17247:9;17243:18;17234:6;17190:72;:::i;:::-;17272;17340:2;17329:9;17325:18;17316:6;17272:72;:::i;:::-;16980:371;;;;;;;:::o;17357:553::-;17534:4;17572:3;17561:9;17557:19;17549:27;;17586:71;17654:1;17643:9;17639:17;17630:6;17586:71;:::i;:::-;17667:72;17735:2;17724:9;17720:18;17711:6;17667:72;:::i;:::-;17749;17817:2;17806:9;17802:18;17793:6;17749:72;:::i;:::-;17831;17899:2;17888:9;17884:18;17875:6;17831:72;:::i;:::-;17539:371;;;;;;;:::o;17916:545::-;18089:4;18127:3;18116:9;18112:19;18104:27;;18141:71;18209:1;18198:9;18194:17;18185:6;18141:71;:::i;:::-;18222:68;18286:2;18275:9;18271:18;18262:6;18222:68;:::i;:::-;18300:72;18368:2;18357:9;18353:18;18344:6;18300:72;:::i;:::-;18382;18450:2;18439:9;18435:18;18426:6;18382:72;:::i;:::-;18094:367;;;;;;;:::o;18467:258::-;18578:4;18616:2;18605:9;18601:18;18593:26;;18629:89;18715:1;18704:9;18700:17;18691:6;18629:89;:::i;:::-;18583:142;;;;:::o;18731:313::-;18844:4;18882:2;18871:9;18867:18;18859:26;;18931:9;18925:4;18921:20;18917:1;18906:9;18902:17;18895:47;18959:78;19032:4;19023:6;18959:78;:::i;:::-;18951:86;;18849:195;;;;:::o;19050:419::-;19216:4;19254:2;19243:9;19239:18;19231:26;;19303:9;19297:4;19293:20;19289:1;19278:9;19274:17;19267:47;19331:131;19457:4;19331:131;:::i;:::-;19323:139;;19221:248;;;:::o;19475:419::-;19641:4;19679:2;19668:9;19664:18;19656:26;;19728:9;19722:4;19718:20;19714:1;19703:9;19699:17;19692:47;19756:131;19882:4;19756:131;:::i;:::-;19748:139;;19646:248;;;:::o;19900:419::-;20066:4;20104:2;20093:9;20089:18;20081:26;;20153:9;20147:4;20143:20;20139:1;20128:9;20124:17;20117:47;20181:131;20307:4;20181:131;:::i;:::-;20173:139;;20071:248;;;:::o;20325:419::-;20491:4;20529:2;20518:9;20514:18;20506:26;;20578:9;20572:4;20568:20;20564:1;20553:9;20549:17;20542:47;20606:131;20732:4;20606:131;:::i;:::-;20598:139;;20496:248;;;:::o;20750:419::-;20916:4;20954:2;20943:9;20939:18;20931:26;;21003:9;20997:4;20993:20;20989:1;20978:9;20974:17;20967:47;21031:131;21157:4;21031:131;:::i;:::-;21023:139;;20921:248;;;:::o;21175:419::-;21341:4;21379:2;21368:9;21364:18;21356:26;;21428:9;21422:4;21418:20;21414:1;21403:9;21399:17;21392:47;21456:131;21582:4;21456:131;:::i;:::-;21448:139;;21346:248;;;:::o;21600:419::-;21766:4;21804:2;21793:9;21789:18;21781:26;;21853:9;21847:4;21843:20;21839:1;21828:9;21824:17;21817:47;21881:131;22007:4;21881:131;:::i;:::-;21873:139;;21771:248;;;:::o;22025:419::-;22191:4;22229:2;22218:9;22214:18;22206:26;;22278:9;22272:4;22268:20;22264:1;22253:9;22249:17;22242:47;22306:131;22432:4;22306:131;:::i;:::-;22298:139;;22196:248;;;:::o;22450:419::-;22616:4;22654:2;22643:9;22639:18;22631:26;;22703:9;22697:4;22693:20;22689:1;22678:9;22674:17;22667:47;22731:131;22857:4;22731:131;:::i;:::-;22723:139;;22621:248;;;:::o;22875:419::-;23041:4;23079:2;23068:9;23064:18;23056:26;;23128:9;23122:4;23118:20;23114:1;23103:9;23099:17;23092:47;23156:131;23282:4;23156:131;:::i;:::-;23148:139;;23046:248;;;:::o;23300:419::-;23466:4;23504:2;23493:9;23489:18;23481:26;;23553:9;23547:4;23543:20;23539:1;23528:9;23524:17;23517:47;23581:131;23707:4;23581:131;:::i;:::-;23573:139;;23471:248;;;:::o;23725:419::-;23891:4;23929:2;23918:9;23914:18;23906:26;;23978:9;23972:4;23968:20;23964:1;23953:9;23949:17;23942:47;24006:131;24132:4;24006:131;:::i;:::-;23998:139;;23896:248;;;:::o;24150:419::-;24316:4;24354:2;24343:9;24339:18;24331:26;;24403:9;24397:4;24393:20;24389:1;24378:9;24374:17;24367:47;24431:131;24557:4;24431:131;:::i;:::-;24423:139;;24321:248;;;:::o;24575:419::-;24741:4;24779:2;24768:9;24764:18;24756:26;;24828:9;24822:4;24818:20;24814:1;24803:9;24799:17;24792:47;24856:131;24982:4;24856:131;:::i;:::-;24848:139;;24746:248;;;:::o;25000:419::-;25166:4;25204:2;25193:9;25189:18;25181:26;;25253:9;25247:4;25243:20;25239:1;25228:9;25224:17;25217:47;25281:131;25407:4;25281:131;:::i;:::-;25273:139;;25171:248;;;:::o;25425:419::-;25591:4;25629:2;25618:9;25614:18;25606:26;;25678:9;25672:4;25668:20;25664:1;25653:9;25649:17;25642:47;25706:131;25832:4;25706:131;:::i;:::-;25698:139;;25596:248;;;:::o;25850:419::-;26016:4;26054:2;26043:9;26039:18;26031:26;;26103:9;26097:4;26093:20;26089:1;26078:9;26074:17;26067:47;26131:131;26257:4;26131:131;:::i;:::-;26123:139;;26021:248;;;:::o;26275:419::-;26441:4;26479:2;26468:9;26464:18;26456:26;;26528:9;26522:4;26518:20;26514:1;26503:9;26499:17;26492:47;26556:131;26682:4;26556:131;:::i;:::-;26548:139;;26446:248;;;:::o;26700:419::-;26866:4;26904:2;26893:9;26889:18;26881:26;;26953:9;26947:4;26943:20;26939:1;26928:9;26924:17;26917:47;26981:131;27107:4;26981:131;:::i;:::-;26973:139;;26871:248;;;:::o;27125:419::-;27291:4;27329:2;27318:9;27314:18;27306:26;;27378:9;27372:4;27368:20;27364:1;27353:9;27349:17;27342:47;27406:131;27532:4;27406:131;:::i;:::-;27398:139;;27296:248;;;:::o;27550:419::-;27716:4;27754:2;27743:9;27739:18;27731:26;;27803:9;27797:4;27793:20;27789:1;27778:9;27774:17;27767:47;27831:131;27957:4;27831:131;:::i;:::-;27823:139;;27721:248;;;:::o;27975:419::-;28141:4;28179:2;28168:9;28164:18;28156:26;;28228:9;28222:4;28218:20;28214:1;28203:9;28199:17;28192:47;28256:131;28382:4;28256:131;:::i;:::-;28248:139;;28146:248;;;:::o;28400:419::-;28566:4;28604:2;28593:9;28589:18;28581:26;;28653:9;28647:4;28643:20;28639:1;28628:9;28624:17;28617:47;28681:131;28807:4;28681:131;:::i;:::-;28673:139;;28571:248;;;:::o;28825:222::-;28918:4;28956:2;28945:9;28941:18;28933:26;;28969:71;29037:1;29026:9;29022:17;29013:6;28969:71;:::i;:::-;28923:124;;;;:::o;29053:332::-;29174:4;29212:2;29201:9;29197:18;29189:26;;29225:71;29293:1;29282:9;29278:17;29269:6;29225:71;:::i;:::-;29306:72;29374:2;29363:9;29359:18;29350:6;29306:72;:::i;:::-;29179:206;;;;;:::o;29391:214::-;29480:4;29518:2;29507:9;29503:18;29495:26;;29531:67;29595:1;29584:9;29580:17;29571:6;29531:67;:::i;:::-;29485:120;;;;:::o;29611:99::-;29663:6;29697:5;29691:12;29681:22;;29670:40;;;:::o;29716:169::-;29800:11;29834:6;29829:3;29822:19;29874:4;29869:3;29865:14;29850:29;;29812:73;;;;:::o;29891:148::-;29993:11;30030:3;30015:18;;30005:34;;;;:::o;30045:305::-;30085:3;30104:20;30122:1;30104:20;:::i;:::-;30099:25;;30138:20;30156:1;30138:20;:::i;:::-;30133:25;;30292:1;30224:66;30220:74;30217:1;30214:81;30211:2;;;30298:18;;:::i;:::-;30211:2;30342:1;30339;30335:9;30328:16;;30089:261;;;;:::o;30356:237::-;30394:3;30413:18;30429:1;30413:18;:::i;:::-;30408:23;;30445:18;30461:1;30445:18;:::i;:::-;30440:23;;30535:1;30529:4;30525:12;30522:1;30519:19;30516:2;;;30541:18;;:::i;:::-;30516:2;30585:1;30582;30578:9;30571:16;;30398:195;;;;:::o;30599:185::-;30639:1;30656:20;30674:1;30656:20;:::i;:::-;30651:25;;30690:20;30708:1;30690:20;:::i;:::-;30685:25;;30729:1;30719:2;;30734:18;;:::i;:::-;30719:2;30776:1;30773;30769:9;30764:14;;30641:143;;;;:::o;30790:191::-;30830:4;30850:20;30868:1;30850:20;:::i;:::-;30845:25;;30884:20;30902:1;30884:20;:::i;:::-;30879:25;;30923:1;30920;30917:8;30914:2;;;30928:18;;:::i;:::-;30914:2;30973:1;30970;30966:9;30958:17;;30835:146;;;;:::o;30987:96::-;31024:7;31053:24;31071:5;31053:24;:::i;:::-;31042:35;;31032:51;;;:::o;31089:90::-;31123:7;31166:5;31159:13;31152:21;31141:32;;31131:48;;;:::o;31185:77::-;31222:7;31251:5;31240:16;;31230:32;;;:::o;31268:114::-;31323:7;31352:24;31370:5;31352:24;:::i;:::-;31341:35;;31331:51;;;:::o;31388:126::-;31425:7;31465:42;31458:5;31454:54;31443:65;;31433:81;;;:::o;31520:77::-;31557:7;31586:5;31575:16;;31565:32;;;:::o;31603:86::-;31638:7;31678:4;31671:5;31667:16;31656:27;;31646:43;;;:::o;31695:162::-;31763:9;31796:55;31845:5;31796:55;:::i;:::-;31783:68;;31773:84;;;:::o;31863:131::-;31931:9;31964:24;31982:5;31964:24;:::i;:::-;31951:37;;31941:53;;;:::o;32000:307::-;32068:1;32078:113;32092:6;32089:1;32086:13;32078:113;;;32177:1;32172:3;32168:11;32162:18;32158:1;32153:3;32149:11;32142:39;32114:2;32111:1;32107:10;32102:15;;32078:113;;;32209:6;32206:1;32203:13;32200:2;;;32289:1;32280:6;32275:3;32271:16;32264:27;32200:2;32049:258;;;;:::o;32313:320::-;32357:6;32394:1;32388:4;32384:12;32374:22;;32441:1;32435:4;32431:12;32462:18;32452:2;;32518:4;32510:6;32506:17;32496:27;;32452:2;32580;32572:6;32569:14;32549:18;32546:38;32543:2;;;32599:18;;:::i;:::-;32543:2;32364:269;;;;:::o;32639:233::-;32678:3;32701:24;32719:5;32701:24;:::i;:::-;32692:33;;32747:66;32740:5;32737:77;32734:2;;;32817:18;;:::i;:::-;32734:2;32864:1;32857:5;32853:13;32846:20;;32682:190;;;:::o;32878:167::-;32915:3;32938:22;32954:5;32938:22;:::i;:::-;32929:31;;32982:4;32975:5;32972:15;32969:2;;;32990:18;;:::i;:::-;32969:2;33037:1;33030:5;33026:13;33019:20;;32919:126;;;:::o;33051:79::-;33090:7;33119:5;33108:16;;33098:32;;;:::o;33136:180::-;33184:77;33181:1;33174:88;33281:4;33278:1;33271:15;33305:4;33302:1;33295:15;33322:180;33370:77;33367:1;33360:88;33467:4;33464:1;33457:15;33491:4;33488:1;33481:15;33508:180;33556:77;33553:1;33546:88;33653:4;33650:1;33643:15;33677:4;33674:1;33667:15;33694:102;33735:6;33786:2;33782:7;33777:2;33770:5;33766:14;33762:28;33752:38;;33742:54;;;:::o;33802:222::-;33942:34;33938:1;33930:6;33926:14;33919:58;34011:5;34006:2;33998:6;33994:15;33987:30;33908:116;:::o;34030:221::-;34170:34;34166:1;34158:6;34154:14;34147:58;34239:4;34234:2;34226:6;34222:15;34215:29;34136:115;:::o;34257:225::-;34397:34;34393:1;34385:6;34381:14;34374:58;34466:8;34461:2;34453:6;34449:15;34442:33;34363:119;:::o;34488:221::-;34628:34;34624:1;34616:6;34612:14;34605:58;34697:4;34692:2;34684:6;34680:15;34673:29;34594:115;:::o;34715:229::-;34855:34;34851:1;34843:6;34839:14;34832:58;34924:12;34919:2;34911:6;34907:15;34900:37;34821:123;:::o;34950:214::-;35090:66;35086:1;35078:6;35074:14;35067:90;35056:108;:::o;35170:221::-;35310:34;35306:1;35298:6;35294:14;35287:58;35379:4;35374:2;35366:6;35362:15;35355:29;35276:115;:::o;35397:225::-;35537:34;35533:1;35525:6;35521:14;35514:58;35606:8;35601:2;35593:6;35589:15;35582:33;35503:119;:::o;35628:223::-;35768:34;35764:1;35756:6;35752:14;35745:58;35837:6;35832:2;35824:6;35820:15;35813:31;35734:117;:::o;35857:225::-;35997:34;35993:1;35985:6;35981:14;35974:58;36066:8;36061:2;36053:6;36049:15;36042:33;35963:119;:::o;36088:227::-;36228:34;36224:1;36216:6;36212:14;36205:58;36297:10;36292:2;36284:6;36280:15;36273:35;36194:121;:::o;36321:226::-;36461:34;36457:1;36449:6;36445:14;36438:58;36530:9;36525:2;36517:6;36513:15;36506:34;36427:120;:::o;36553:182::-;36693:34;36689:1;36681:6;36677:14;36670:58;36659:76;:::o;36741:171::-;36881:23;36877:1;36869:6;36865:14;36858:47;36847:65;:::o;36918:227::-;37058:34;37054:1;37046:6;37042:14;37035:58;37127:10;37122:2;37114:6;37110:15;37103:35;37024:121;:::o;37151:220::-;37291:34;37287:1;37279:6;37275:14;37268:58;37360:3;37355:2;37347:6;37343:15;37336:28;37257:114;:::o;37377:178::-;37517:30;37513:1;37505:6;37501:14;37494:54;37483:72;:::o;37561:224::-;37701:34;37697:1;37689:6;37685:14;37678:58;37770:7;37765:2;37757:6;37753:15;37746:32;37667:118;:::o;37791:222::-;37931:34;37927:1;37919:6;37915:14;37908:58;38000:5;37995:2;37987:6;37983:15;37976:30;37897:116;:::o;38019:178::-;38159:30;38155:1;38147:6;38143:14;38136:54;38125:72;:::o;38203:223::-;38343:34;38339:1;38331:6;38327:14;38320:58;38412:6;38407:2;38399:6;38395:15;38388:31;38309:117;:::o;38432:225::-;38572:34;38568:1;38560:6;38556:14;38549:58;38641:8;38636:2;38628:6;38624:15;38617:33;38538:119;:::o;38663:224::-;38803:34;38799:1;38791:6;38787:14;38780:58;38872:7;38867:2;38859:6;38855:15;38848:32;38769:118;:::o;38893:181::-;39033:33;39029:1;39021:6;39017:14;39010:57;38999:75;:::o;39080:122::-;39153:24;39171:5;39153:24;:::i;:::-;39146:5;39143:35;39133:2;;39192:1;39189;39182:12;39133:2;39123:79;:::o;39208:116::-;39278:21;39293:5;39278:21;:::i;:::-;39271:5;39268:32;39258:2;;39314:1;39311;39304:12;39258:2;39248:76;:::o;39330:122::-;39403:24;39421:5;39403:24;:::i;:::-;39396:5;39393:35;39383:2;;39442:1;39439;39432:12;39383:2;39373:79;:::o;39458:158::-;39549:42;39585:5;39549:42;:::i;:::-;39542:5;39539:53;39529:2;;39606:1;39603;39596:12;39529:2;39519:97;:::o;39622:122::-;39695:24;39713:5;39695:24;:::i;:::-;39688:5;39685:35;39675:2;;39734:1;39731;39724:12;39675:2;39665:79;:::o;39750:118::-;39821:22;39837:5;39821:22;:::i;:::-;39814:5;39811:33;39801:2;;39858:1;39855;39848:12;39801:2;39791:77;:::o

Swarm Source

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