Contract 0xdfdec49462f7d3c3b0a48e729f77a0645cdfa7c0

 

Contract Overview

Safegem.finance: GEMS Token
Balance:
0 BNB

BNB Value:
$0.00

Token:
 
Txn Hash
Block
From
To
Value [Txn Fee]
0x3fc10d33957aca57bb977f58f631b9d77f5bd0449063e6a70c44fd1a4018e06994697902021-07-25 16:11:196 mins ago0x7941f2ed8d108bde12b3626d6168b7f407d1c58a IN  Safegem.finance: GEMS Token0 BNB0.0005
0x6ac070b1ca9d5b2a4dcc3d1221c21a6fc9f75e9a249fb46dc95e63e55210258f94696942021-07-25 16:06:3111 mins ago0x7941f2ed8d108bde12b3626d6168b7f407d1c58a IN  Safegem.finance: GEMS Token0 BNB0.0005
0xa7205569bed7aaa4af4b36f500dda85baa604b1e72f9b8e5073308badd54b1e694696872021-07-25 16:06:1011 mins ago0x25da7de6924d85299af569a4075659918f63c446 IN  Safegem.finance: GEMS Token0 BNB0.00022266
0x1e7ba7c1a9cddefeea27f3eecfe88700396f33ee124d308f9287bc57300b425894688412021-07-25 15:21:4255 mins ago0xdc90b3e50dabeb0f76c7dea3743ef7751a4c9f45 IN  Safegem.finance: GEMS Token0 BNB0.00069384
0x8084509641d987764f892088f343fa848ff79e568366351e4f8411f3ec273d7d94682892021-07-25 14:53:011 hr 24 mins ago0x02c5a802dec228ebab871c1e4102afee96b7a407 IN  Safegem.finance: GEMS Token0 BNB0.00022266
0x9a7ec6f0c6690c0627d1a9abc335f3e3faf87c3104b971b9f34fa17492eb74fe94681022021-07-25 14:43:211 hr 34 mins ago0x31233e57db3e6770fa5fb265d3904bb3a14e4203 IN  Safegem.finance: GEMS Token0 BNB0.00022266
0x4b57dc86c3ced0b451150ec4611bb4cf6b6b7252fee44a1938529ba4ae939c3d94679822021-07-25 14:37:161 hr 40 mins ago0x02c5a802dec228ebab871c1e4102afee96b7a407 IN  Safegem.finance: GEMS Token0 BNB0.00022266
0x0871f826273dd1ac6633d36f32f6052d29d276850621046c74ed11e428d1db8c94667542021-07-25 13:32:102 hrs 45 mins ago0x7388a00fd8725ac9705f4c5262d89da13aab0168 IN  Safegem.finance: GEMS Token0 BNB0.00022266
0x682859893d44373389977f451c14c2743291c354438443662788459732880be894663412021-07-25 13:11:063 hrs 6 mins ago0xe77d16aa72e5209c41bec381ad27590e3803222e IN  Safegem.finance: GEMS Token0 BNB0.0007689
0xc7b715180ccd1be7d9fa2e8d29ba9384285ea104de696acd01d7e4ec611a37a194659482021-07-25 12:51:263 hrs 26 mins ago0x0dfd2646b1382c97c2b6b50e9c3f9c881d1fda8b IN  Safegem.finance: GEMS Token0 BNB0.00022266
0x10679ea674dbaaa014edc8e84df30c7eb599a9e55cca3159d98ef8d87ca123c094655152021-07-25 12:29:303 hrs 48 mins ago0x64cd3b2c2beabda16eff12116a8d4d02acc6c1ce IN  Safegem.finance: GEMS Token0 BNB0.00022266
0x4c3fbdacbd47315ec7e90825bdd86815b904660aa3aa0aeb9130bc571bf740f894650102021-07-25 12:04:154 hrs 13 mins ago0x244e332d8ae1fa493e2de6acca304f9d9c7307a6 IN  Safegem.finance: GEMS Token0 BNB0.00022266
0x83a76f0627b4cac989c9d93945dc6a247319d0f11564d4e4567655cb6ff5df4794649392021-07-25 12:00:424 hrs 16 mins ago0xedb29906ce5e92f9638a15eadd9544a1e7f1a4dc IN  Safegem.finance: GEMS Token0 BNB0.00022266
0x6023752afb8d780a79a32e970efbdecec11daa53db3ff783c3dce12ba6aac0fb94647162021-07-25 11:49:334 hrs 28 mins ago0x92d15dc26b8c57455445f63679a790557e3691bf IN  Safegem.finance: GEMS Token0 BNB0.00022266
0x1f07873ab198a6530671f33fbce813a2a6c22e79b1c2c7cea31be468c10db14094644062021-07-25 11:34:034 hrs 43 mins ago0xe6adff69b238a3ce5a93b95652753ab2c9394515 IN  Safegem.finance: GEMS Token0 BNB0.00022266
0x56b0896e7eb23d9d3981588491ee9c3b03ce1e2d4406ca3d11c1405f44aecda894640242021-07-25 11:14:525 hrs 2 mins ago0xbc9bea5b39d88801971f3a52016e7a18c8db2af2 IN  Safegem.finance: GEMS Token0 BNB0.00022266
0x6b771195ffe510d7e3fa3d4df1bd5d06b8c200a93f12064392d814cdbc13c91494631362021-07-25 10:30:275 hrs 47 mins ago0xdcf84fc18864d344d879a564c6114906f20e604d IN  Safegem.finance: GEMS Token0 BNB0.00022266
0x4eb496641eec8555c72ab70734b0ef97084a08524d7372873957d84af479d07994627342021-07-25 10:10:216 hrs 7 mins ago0x0fb2467e58f9863a5bbb901deae5623f1d4bd326 IN  Safegem.finance: GEMS Token0 BNB0.00022266
0x25e8f2f451c8708ae600cd035d5821984e47abc238f268c7ef29d2e04455057b94624062021-07-25 9:53:156 hrs 24 mins ago0x3c902163a5283fd3758fdbcdcce1f1f9a6547bfa IN  Safegem.finance: GEMS Token0 BNB0.00022266
0x9bef5d8881af805c6dc670f596846d4d937cac5d1565b1cd203245aaac5f5cd194603892021-07-25 8:11:288 hrs 6 mins ago0x65a2c489fdbca158d4ce5bc6b03c85edd90bf0bb IN  Safegem.finance: GEMS Token0 BNB0.00076878
0x64a7dac1d50bc16432aa741b4fe4826e1e022cf5707c83eb71888b5730c70db394580932021-07-25 6:16:3710 hrs 1 min ago0x4d9c7635137a841457a9f4b1441b555cd3a79c36 IN  Safegem.finance: GEMS Token0 BNB0.00022266
0x2415d6fd14324e76733084a642cbe870331657f39d60f2e93de99c7d3dcdd48b94577122021-07-25 5:57:3410 hrs 20 mins ago0xd780352162b0da0880e1f5eca2a38b4101cd9661 IN  Safegem.finance: GEMS Token0 BNB0.00076872
0x1393bbe4173a40ca9a5c7dc54ae0ae1890c360455a22ff4b9f70744c067c29d094573052021-07-25 5:37:1310 hrs 40 mins ago0x6ce1084c9c0d5ba44dbca380f0e2f4779894d68c IN  Safegem.finance: GEMS Token0 BNB0.00022266
0x7a0a980f4d97b912949b97147a81218708d0e23e50778cc6244012551920688494547212021-07-25 3:27:2112 hrs 50 mins ago0xb02cbf791526295c1125fd51a47d6626214800cb IN  Safegem.finance: GEMS Token0 BNB0.000267192
0xb819a033962803e0a9c7799d53a5b690d00ae99e3868202f31686ae54c1a34bb94538562021-07-25 2:44:0513 hrs 33 mins ago0x4660ed67333c5be1db953c489a9eb6298fd1bed6 IN  Safegem.finance: GEMS Token0 BNB0.00022266
[ Download CSV Export 

OVERVIEW

SafeGem's vision is to create a platform that will authenticate precious stones by providing digital certification for gems, through NFTs. SafeGem is a high-yield generation protocol combined with a continuous permanent burn.

Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Safegem

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier:  MIT

/*

Welcome to SafeGem - a frictionless high-yield generation protocol combined with continuous permanent burn and a grand vision!

Frictionless yield - 6% 

Continuous burn - 5%

Locked liquidity

Dropped Ownership

53% of the Total Supply burned forever

www.safegem.finance

Hold on to your $GEMS and meet you on the Moon!


░██████╗░█████╗░███████╗███████╗░██████╗░███████╗███╗░░░███╗░██████╗░░░███████╗██╗███╗░░██╗░█████╗░███╗░░██╗░█████╗░███████╗
██╔════╝██╔══██╗██╔════╝██╔════╝██╔════╝░██╔════╝████╗░████║██╔════╝░░░██╔════╝██║████╗░██║██╔══██╗████╗░██║██╔══██╗██╔════╝
╚█████╗░███████║█████╗░░█████╗░░██║░░██╗░█████╗░░██╔████╔██║╚█████╗░░░░█████╗░░██║██╔██╗██║███████║██╔██╗██║██║░░╚═╝█████╗░░
░╚═══██╗██╔══██║██╔══╝░░██╔══╝░░██║░░╚██╗██╔══╝░░██║╚██╔╝██║░╚═══██╗░░░██╔══╝░░██║██║╚████║██╔══██║██║╚████║██║░░██╗██╔══╝░░
██████╔╝██║░░██║██║░░░░░███████╗╚██████╔╝███████╗██║░╚═╝░██║██████╔╝██╗██║░░░░░██║██║░╚███║██║░░██║██║░╚███║╚█████╔╝███████╗
╚═════╝░╚═╝░░╚═╝╚═╝░░░░░╚══════╝░╚═════╝░╚══════╝╚═╝░░░░░╚═╝╚═════╝░╚═╝╚═╝░░░░░╚═╝╚═╝░░╚══╝╚═╝░░╚═╝╚═╝░░╚══╝░╚════╝░╚══════╝


*/


pragma solidity ^0.8.4;

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

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

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

interface BEP20 {

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

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

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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



contract Safegem is Context, BEP20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
   
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 100000000000 * 10**6 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = 'Safegem.finance';
    string private _symbol = 'GEMS';
    uint8 private _decimals = 9;
    
    uint256 private _tBurnTotal;
    uint256 public _burnFee = 5;
    uint256 public _holdersFee = 6;
    uint256 private _previousholdersFee = _holdersFee;
    uint256 private _previousburnFee = _burnFee;
    uint256 public maximumTXamount = _tTotal.div(10**3);

    
    constructor () {
        _isExcludedFromFee[owner()] = true;
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "BEP20: transfer amount exceeds allowance"));
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "BEP20: decreased allowance below zero"));
        return true;
    }

    function isExcluded(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function reflect(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if(_holdersFee == 0) return;
        _previousholdersFee = _holdersFee;
        _previousburnFee = _burnFee;
        _burnFee = 0;
        _holdersFee = 0;
    }
    
    function restoreAllFee() private {
        _holdersFee = _previousholdersFee;
        _burnFee = _previousburnFee;
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
    
    function excludeFromReward(address account) public onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function excludeAccount(address account) external onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeAccount(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "BEP20: approve from the zero address");
        require(spender != address(0), "BEP20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "BEP20: transfer from the zero address");
        require(recipient != address(0), "BEP20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if(!_isExcludedFromFee[sender] && !_isExcludedFromFee[recipient]) require(amount <= maximumTXamount, "Transfer amount exceeds the maximum transfer amount.");
        if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) removeAllFee();
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);       
        uint256 currentRate = _getRate();
        uint256 rBurn = tBurn.mul(currentRate);
        _reflectFee(rFee, tFee, rBurn, tBurn);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        uint256 currentRate = _getRate();
        uint256 rBurn = tBurn.mul(currentRate);
        _reflectFee(rFee, tFee, rBurn, tBurn);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        uint256 currentRate = _getRate();
        uint256 rBurn = tBurn.mul(currentRate);
        _reflectFee(rFee, tFee, rBurn, tBurn);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
        uint256 currentRate = _getRate();
        uint256 rBurn = tBurn.mul(currentRate);
        _reflectFee(rFee, tFee, rBurn, tBurn);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _reflectFee(uint256 rFee, uint256 tFee, uint256 rBurn, uint256 tBurn) private {
        _rTotal = _rTotal.sub(rFee).sub(rBurn);
        _tFeeTotal = _tFeeTotal.add(tFee);
        _tBurnTotal = _tBurnTotal.add(tBurn);
        _tTotal = _tTotal.sub(tBurn);
        maximumTXamount = _tTotal.div(10**3);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tBurn) = _getTValues(tAmount);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate, tBurn);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tBurn);
    }

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.div(100).mul(_holdersFee);
        uint256 tBurn = tAmount.mul(_burnFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tBurn);
        return (tTransferAmount, tFee, tBurn);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate, uint256 tBurn) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rBurn = tBurn.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rBurn);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
}

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_holdersFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[],"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":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maximumTXamount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"reflect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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"}]

60806040526a52b7d2dcc80cd2e400000060078190556200002390600019620003fb565b62000031906000196200039a565b60085560408051808201909152600f8082526e5361666567656d2e66696e616e636560881b60209092019182526200006c91600a9162000287565b506040805180820190915260048082526347454d5360e01b60209092019182526200009a91600b9162000287565b50600c8054600960ff199091161790556005600e8190556006600f819055601055601155600754620000db906103e8620001f1602090811b62000db217901c565b601255348015620000eb57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600160046000620001466000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000908120805460ff19169215159290921790915560085490600190620001803390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620001e391815260200190565b60405180910390a362000428565b60006200023b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200024260201b60201c565b9392505050565b600081836200026f5760405162461bcd60e51b81526004016200026691906200032d565b60405180910390fd5b5060006200027e848662000383565b95945050505050565b8280546200029590620003be565b90600052602060002090601f016020900481019282620002b9576000855562000304565b82601f10620002d457805160ff191683800117855562000304565b8280016001018555821562000304579182015b8281111562000304578251825591602001919060010190620002e7565b506200031292915062000316565b5090565b5b8082111562000312576000815560010162000317565b6000602080835283518082850152825b818110156200035b578581018301518582016040015282016200033d565b818111156200036d5783604083870101525b50601f01601f1916929092016040019392505050565b60008262000395576200039562000412565b500490565b600082821015620003b957634e487b7160e01b81526011600452602481fd5b500390565b600181811c90821680620003d357607f821691505b60208210811415620003f557634e487b7160e01b600052602260045260246000fd5b50919050565b6000826200040d576200040d62000412565b500690565b634e487b7160e01b600052601260045260246000fd5b611dbf80620004386000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063696ae2b9116100f9578063c0b0fda211610097578063ea2f0b3711610071578063ea2f0b37146103b7578063f2cc0c18146102c9578063f2fde38b146103ca578063f84354f1146103dd57600080fd5b8063c0b0fda214610349578063cba0e99614610352578063dd62ed3e1461037e57600080fd5b80638da5cb5b116100d35780638da5cb5b1461030057806395d89b411461031b578063a457c2d714610323578063a9059cbb1461033657600080fd5b8063696ae2b9146102dc57806370a08231146102e5578063715018a6146102f857600080fd5b80632d8381191161016657806339509351116101405780633950935114610290578063437823ec146102a35780634549b039146102b657806352390c02146102c957600080fd5b80632d83811914610255578063313ce567146102685780633685d4191461027d57600080fd5b806313114a9d116101a257806313114a9d1461021f57806318160ddd146102315780631d158d5c1461023957806323b872dd1461024257600080fd5b8063053ab182146101c957806306fdde03146101de578063095ea7b3146101fc575b600080fd5b6101dc6101d7366004611b58565b6103f0565b005b6101e66104df565b6040516101f39190611ba3565b60405180910390f35b61020f61020a366004611b2f565b610571565b60405190151581526020016101f3565b6009545b6040519081526020016101f3565b600754610223565b610223600f5481565b61020f610250366004611af4565b610588565b610223610263366004611b58565b6105f1565b600c5460405160ff90911681526020016101f3565b6101dc61028b366004611aa8565b610675565b61020f61029e366004611b2f565b610834565b6101dc6102b1366004611aa8565b61086a565b6102236102c4366004611b70565b6108b8565b6101dc6102d7366004611aa8565b610945565b61022360125481565b6102236102f3366004611aa8565b610a68565b6101dc610ac7565b6000546040516001600160a01b0390911681526020016101f3565b6101e6610b3b565b61020f610331366004611b2f565b610b4a565b61020f610344366004611b2f565b610b99565b610223600e5481565b61020f610360366004611aa8565b6001600160a01b031660009081526005602052604090205460ff1690565b61022361038c366004611ac2565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6101dc6103c5366004611aa8565b610ba6565b6101dc6103d8366004611aa8565b610bf1565b6101dc6103eb366004611aa8565b610cdb565b3360008181526005602052604090205460ff161561046a5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084015b60405180910390fd5b600061047583610df4565b505050506001600160a01b0384166000908152600160205260409020549192506104a191905082610e4b565b6001600160a01b0383166000908152600160205260409020556008546104c79082610e4b565b6008556009546104d79084610e8d565b600955505050565b6060600a80546104ee90611cd0565b80601f016020809104026020016040519081016040528092919081815260200182805461051a90611cd0565b80156105675780601f1061053c57610100808354040283529160200191610567565b820191906000526020600020905b81548152906001019060200180831161054a57829003601f168201915b5050505050905090565b600061057e338484610eec565b5060015b92915050565b6000610595848484611010565b6105e784336105e285604051806060016040528060288152602001611d3d602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906113e8565b610eec565b5060019392505050565b60006008548211156106585760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610461565b6000610662611422565b905061066e8382610db2565b9392505050565b6000546001600160a01b0316331461069f5760405162461bcd60e51b815260040161046190611c2d565b6001600160a01b03811660009081526005602052604090205460ff166106d75760405162461bcd60e51b815260040161046190611bf6565b60005b60065481101561083057816001600160a01b03166006828154811061070f57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561081e576006805461073a90600190611cb9565b8154811061075857634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600680546001600160a01b03909216918390811061079257634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff1916905560068054806107f857634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061082881611d0b565b9150506106da565b5050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909161057e9185906105e29086610e8d565b6000546001600160a01b031633146108945760405162461bcd60e51b815260040161046190611c2d565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b600060075483111561090c5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610461565b8161092b57600061091c84610df4565b50939550610582945050505050565b600061093684610df4565b50929550610582945050505050565b6000546001600160a01b0316331461096f5760405162461bcd60e51b815260040161046190611c2d565b6001600160a01b03811660009081526005602052604090205460ff16156109a85760405162461bcd60e51b815260040161046190611bf6565b6001600160a01b03811660009081526001602052604090205415610a02576001600160a01b0381166000908152600160205260409020546109e8906105f1565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6001600160a01b03811660009081526005602052604081205460ff1615610aa557506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610582906105f1565b6000546001600160a01b03163314610af15760405162461bcd60e51b815260040161046190611c2d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6060600b80546104ee90611cd0565b600061057e33846105e285604051806060016040528060258152602001611d65602591393360009081526003602090815260408083206001600160a01b038d16845290915290205491906113e8565b600061057e338484611010565b6000546001600160a01b03163314610bd05760405162461bcd60e51b815260040161046190611c2d565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314610c1b5760405162461bcd60e51b815260040161046190611c2d565b6001600160a01b038116610c805760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610461565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d055760405162461bcd60e51b815260040161046190611c2d565b6001600160a01b03811660009081526005602052604090205460ff16610d3d5760405162461bcd60e51b815260040161046190611bf6565b60005b60065481101561083057816001600160a01b031660068281548110610d7557634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610da0576006805461073a90600190611cb9565b80610daa81611d0b565b915050610d40565b600061066e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611445565b6000806000806000806000806000610e0b8a611473565b9250925092506000610e1b611422565b90506000806000610e2e8e8786886114e3565b919e509c509a509598509396509194505050505091939550919395565b600061066e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113e8565b600080610e9a8385611c62565b90508381101561066e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610461565b6001600160a01b038316610f4e5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610461565b6001600160a01b038216610faf5760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610461565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110745760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610461565b6001600160a01b0382166110d65760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610461565b600081116111385760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610461565b6001600160a01b03831660009081526004602052604090205460ff1615801561117a57506001600160a01b03821660009081526004602052604090205460ff16155b156111ee576012548111156111ee5760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61786960448201527336bab6903a3930b739b332b91030b6b7bab73a1760611b6064820152608401610461565b6001600160a01b03831660009081526004602052604090205460ff168061122d57506001600160a01b03821660009081526004602052604090205460ff165b1561123a5761123a611533565b6001600160a01b03831660009081526005602052604090205460ff16801561127b57506001600160a01b03821660009081526005602052604090205460ff16155b156112905761128b838383611554565b61138e565b6001600160a01b03831660009081526005602052604090205460ff161580156112d157506001600160a01b03821660009081526005602052604090205460ff165b156112e15761128b838383611690565b6001600160a01b03831660009081526005602052604090205460ff1615801561132357506001600160a01b03821660009081526005602052604090205460ff16155b156113335761128b838383611739565b6001600160a01b03831660009081526005602052604090205460ff16801561137357506001600160a01b03821660009081526005602052604090205460ff165b156113835761128b83838361177d565b61138e838383611739565b6001600160a01b03831660009081526004602052604090205460ff16806113cd57506001600160a01b03821660009081526004602052604090205460ff165b156113e3576113e3601054600f55601154600e55565b505050565b6000818484111561140c5760405162461bcd60e51b81526004016104619190611ba3565b5060006114198486611cb9565b95945050505050565b600080600061142f6117f0565b909250905061143e8282610db2565b9250505090565b600081836114665760405162461bcd60e51b81526004016104619190611ba3565b5060006114198486611c7a565b600080600080611499600f54611493606488610db290919063ffffffff16565b906119aa565b905060006114bd60646114b7600e54896119aa90919063ffffffff16565b90610db2565b905060006114d5826114cf8986610e4b565b90610e4b565b979296509094509092505050565b60008080806114f288876119aa565b9050600061150088886119aa565b9050600061150e87896119aa565b90506000611520826114cf8686610e4b565b939b939a50919850919650505050505050565b600f5461153c57565b600f8054601055600e80546011556000908190559055565b60008060008060008061156687610df4565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506115989088610e4b565b6001600160a01b038a166000908152600260209081526040808320939093556001905220546115c79087610e4b565b6001600160a01b03808b1660009081526001602052604080822093909355908a16815220546115f69086610e8d565b6001600160a01b03891660009081526001602052604081209190915561161a611422565b9050600061162883836119aa565b905061163686858386611a29565b896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161167b91815260200190565b60405180910390a35050505050505050505050565b6000806000806000806116a287610df4565b6001600160a01b038f16600090815260016020526040902054959b509399509197509550935091506116d49087610e4b565b6001600160a01b03808b16600090815260016020908152604080832094909455918b1681526002909152205461170a9084610e8d565b6001600160a01b0389166000908152600260209081526040808320939093556001905220546115f69086610e8d565b60008060008060008061174b87610df4565b6001600160a01b038f16600090815260016020526040902054959b509399509197509550935091506115c79087610e4b565b60008060008060008061178f87610df4565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506117c19088610e4b565b6001600160a01b038a166000908152600260209081526040808320939093556001905220546116d49087610e4b565b6008546007546000918291825b60065481101561197a5782600160006006848154811061182d57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806118a6575081600260006006848154811061187f57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156118bc57600854600754945094505050509091565b61191060016000600684815481106118e457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490610e4b565b9250611966600260006006848154811061193a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390610e4b565b91508061197281611d0b565b9150506117fd565b5060075460085461198a91610db2565b8210156119a1576008546007549350935050509091565b90939092509050565b6000826119b957506000610582565b60006119c58385611c9a565b9050826119d28583611c7a565b1461066e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610461565b611a42826114cf86600854610e4b90919063ffffffff16565b600855600954611a529084610e8d565b600955600d54611a629082610e8d565b600d55600754611a729082610e4b565b6007819055611a83906103e8610db2565b60125550505050565b80356001600160a01b0381168114611aa357600080fd5b919050565b600060208284031215611ab9578081fd5b61066e82611a8c565b60008060408385031215611ad4578081fd5b611add83611a8c565b9150611aeb60208401611a8c565b90509250929050565b600080600060608486031215611b08578081fd5b611b1184611a8c565b9250611b1f60208501611a8c565b9150604084013590509250925092565b60008060408385031215611b41578182fd5b611b4a83611a8c565b946020939093013593505050565b600060208284031215611b69578081fd5b5035919050565b60008060408385031215611b82578182fd5b8235915060208301358015158114611b98578182fd5b809150509250929050565b6000602080835283518082850152825b81811015611bcf57858101830151858201604001528201611bb3565b81811115611be05783604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115611c7557611c75611d26565b500190565b600082611c9557634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611cb457611cb4611d26565b500290565b600082821015611ccb57611ccb611d26565b500390565b600181811c90821680611ce457607f821691505b60208210811415611d0557634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611d1f57611d1f611d26565b5060010190565b634e487b7160e01b600052601160045260246000fdfe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220620f64356a288cf1305c4ede37ef3db3468e2aa2ae9820498ba6c5560bdfd7f164736f6c63430008040033

Deployed ByteCode Sourcemap

9095:13162:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12445:377;;;;;;:::i;:::-;;:::i;:::-;;10327:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11239:161;;;;;;:::i;:::-;;:::i;:::-;;;2214:14:1;;2207:22;2189:41;;2177:2;2162:18;11239:161:0;2144:92:1;12350:87:0;12419:10;;12350:87;;;8510:25:1;;;8498:2;8483:18;12350:87:0;8465:76:1;10604:95:0;10684:7;;10604:95;;9941:30;;;;;;11408:313;;;;;;:::i;:::-;;:::i;13274:253::-;;;;;;:::i;:::-;;:::i;10513:83::-;10579:9;;10513:83;;10579:9;;;;8688:36:1;;8676:2;8661:18;10513:83:0;8643:87:1;14473:479:0;;;;;;:::i;:::-;;:::i;11729:218::-;;;;;;:::i;:::-;;:::i;13887:111::-;;;;;;:::i;:::-;;:::i;12830:436::-;;;;;;:::i;:::-;;:::i;14132:333::-;;;;;;:::i;:::-;;:::i;10084:51::-;;;;;;10707:198;;;;;;:::i;:::-;;:::i;8684:148::-;;;:::i;8127:79::-;8165:7;8192:6;8127:79;;-1:-1:-1;;;;;8192:6:0;;;1987:51:1;;1975:2;1960:18;8127:79:0;1942:102:1;10418:87:0;;;:::i;11955:269::-;;;;;;:::i;:::-;;:::i;10913:167::-;;;;;;:::i;:::-;;:::i;9907:27::-;;;;;;12232:110;;;;;;:::i;:::-;-1:-1:-1;;;;;12314:20:0;12290:4;12314:20;;;:11;:20;;;;;;;;;12232:110;11088:143;;;;;;:::i;:::-;-1:-1:-1;;;;;11196:18:0;;;11169:7;11196:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11088:143;14010:110;;;;;;:::i;:::-;;:::i;8840:244::-;;;;;;:::i;:::-;;:::i;15300:478::-;;;;;;:::i;:::-;;:::i;12445:377::-;2779:10;12497:14;12546:19;;;:11;:19;;;;;;;;12545:20;12537:77;;;;-1:-1:-1;;;12537:77:0;;7750:2:1;12537:77:0;;;7732:21:1;7789:2;7769:18;;;7762:30;7828:34;7808:18;;;7801:62;-1:-1:-1;;;7879:18:1;;;7872:42;7931:19;;12537:77:0;;;;;;;;;12626:15;12650:19;12661:7;12650:10;:19::i;:::-;-1:-1:-1;;;;;;;;;12698:15:0;;;;;;:7;:15;;;;;;12625:44;;-1:-1:-1;12698:28:0;;:15;-1:-1:-1;12625:44:0;12698:19;:28::i;:::-;-1:-1:-1;;;;;12680:15:0;;;;;;:7;:15;;;;;:46;12747:7;;:20;;12759:7;12747:11;:20::i;:::-;12737:7;:30;12791:10;;:23;;12806:7;12791:14;:23::i;:::-;12778:10;:36;-1:-1:-1;;;12445:377:0:o;10327:83::-;10364:13;10397:5;10390:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10327:83;:::o;11239:161::-;11314:4;11331:39;2779:10;11354:7;11363:6;11331:8;:39::i;:::-;-1:-1:-1;11388:4:0;11239:161;;;;;:::o;11408:313::-;11506:4;11523:36;11533:6;11541:9;11552:6;11523:9;:36::i;:::-;11570:121;11579:6;2779:10;11601:89;11639:6;11601:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11601:19:0;;;;;;:11;:19;;;;;;;;2779:10;11601:33;;;;;;;;;;:37;:89::i;:::-;11570:8;:121::i;:::-;-1:-1:-1;11709:4:0;11408:313;;;;;:::o;13274:253::-;13340:7;13379;;13368;:18;;13360:73;;;;-1:-1:-1;;;13360:73:0;;3862:2:1;13360:73:0;;;3844:21:1;3901:2;3881:18;;;3874:30;3940:34;3920:18;;;3913:62;-1:-1:-1;;;3991:18:1;;;3984:40;4041:19;;13360:73:0;3834:232:1;13360:73:0;13444:19;13467:10;:8;:10::i;:::-;13444:33;-1:-1:-1;13495:24:0;:7;13444:33;13495:11;:24::i;:::-;13488:31;13274:253;-1:-1:-1;;;13274:253:0:o;14473:479::-;8254:6;;-1:-1:-1;;;;;8254:6:0;2779:10;8254:22;8246:67;;;;-1:-1:-1;;;8246:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14555:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;14547:60;;;;-1:-1:-1::0;;;14547:60:0::1;;;;;;;:::i;:::-;14623:9;14618:327;14642:9;:16:::0;14638:20;::::1;14618:327;;;14700:7;-1:-1:-1::0;;;;;14684:23:0::1;:9;14694:1;14684:12;;;;;;-1:-1:-1::0;;;14684:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;14684:12:0::1;:23;14680:254;;;14743:9;14753:16:::0;;:20:::1;::::0;14772:1:::1;::::0;14753:20:::1;:::i;:::-;14743:31;;;;;;-1:-1:-1::0;;;14743:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;14728:9:::1;:12:::0;;-1:-1:-1;;;;;14743:31:0;;::::1;::::0;14738:1;;14728:12;::::1;;;-1:-1:-1::0;;;14728:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;14728:46:0::1;-1:-1:-1::0;;;;;14728:46:0;;::::1;;::::0;;14793:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;14832:11:::1;:20:::0;;;;:28;;-1:-1:-1;;14832:28:0::1;::::0;;14879:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;14879:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;14879:15:0;;;;;-1:-1:-1;;;;;;14879:15:0::1;::::0;;;;;14618:327:::1;14473:479:::0;:::o;14680:254::-:1;14660:3:::0;::::1;::::0;::::1;:::i;:::-;;;;14618:327;;;;14473:479:::0;:::o;11729:218::-;2779:10;11817:4;11866:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11866:34:0;;;;;;;;;;11817:4;;11834:83;;11857:7;;11866:50;;11905:10;11866:38;:50::i;13887:111::-;8254:6;;-1:-1:-1;;;;;8254:6:0;2779:10;8254:22;8246:67;;;;-1:-1:-1;;;8246:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13956:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;13956:34:0::1;13986:4;13956:34;::::0;;13887:111::o;12830:436::-;12920:7;12959;;12948;:18;;12940:62;;;;-1:-1:-1;;;12940:62:0;;5392:2:1;12940:62:0;;;5374:21:1;5431:2;5411:18;;;5404:30;5470:33;5450:18;;;5443:61;5521:18;;12940:62:0;5364:181:1;12940:62:0;13018:17;13013:246;;13053:15;13077:19;13088:7;13077:10;:19::i;:::-;-1:-1:-1;13052:44:0;;-1:-1:-1;13111:14:0;;-1:-1:-1;;;;;13111:14:0;13013:246;13160:23;13191:19;13202:7;13191:10;:19::i;:::-;-1:-1:-1;13158:52:0;;-1:-1:-1;13225:22:0;;-1:-1:-1;;;;;13225:22:0;14132:333;8254:6;;-1:-1:-1;;;;;8254:6:0;2779:10;8254:22;8246:67;;;;-1:-1:-1;;;8246:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14215:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;14214:21;14206:61;;;;-1:-1:-1::0;;;14206:61:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14281:16:0;::::1;14300:1;14281:16:::0;;;:7:::1;:16;::::0;;;;;:20;14278:108:::1;;-1:-1:-1::0;;;;;14357:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;14337:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;14318:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;14278:108:::1;-1:-1:-1::0;;;;;14396:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;14396:27:0::1;14419:4;14396:27:::0;;::::1;::::0;;;14434:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;14434:23:0::1;::::0;;::::1;::::0;;14132:333::o;10707:198::-;-1:-1:-1;;;;;10797:20:0;;10773:7;10797:20;;;:11;:20;;;;;;;;10793:49;;;-1:-1:-1;;;;;;10826:16:0;;;;;:7;:16;;;;;;;10707:198::o;10793:49::-;-1:-1:-1;;;;;10880:16:0;;;;;;:7;:16;;;;;;10860:37;;:19;:37::i;8684:148::-;8254:6;;-1:-1:-1;;;;;8254:6:0;2779:10;8254:22;8246:67;;;;-1:-1:-1;;;8246:67:0;;;;;;;:::i;:::-;8791:1:::1;8775:6:::0;;8754:40:::1;::::0;-1:-1:-1;;;;;8775:6:0;;::::1;::::0;8754:40:::1;::::0;8791:1;;8754:40:::1;8822:1;8805:19:::0;;-1:-1:-1;;;;;;8805:19:0::1;::::0;;8684:148::o;10418:87::-;10457:13;10490:7;10483:14;;;;;:::i;11955:269::-;12048:4;12065:129;2779:10;12088:7;12097:96;12136:15;12097:96;;;;;;;;;;;;;;;;;2779:10;12097:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12097:34:0;;;;;;;;;;;;:38;:96::i;10913:167::-;10991:4;11008:42;2779:10;11032:9;11043:6;11008:9;:42::i;14010:110::-;8254:6;;-1:-1:-1;;;;;8254:6:0;2779:10;8254:22;8246:67;;;;-1:-1:-1;;;8246:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14077:27:0::1;14107:5;14077:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;14077:35:0::1;::::0;;14010:110::o;8840:244::-;8254:6;;-1:-1:-1;;;;;8254:6:0;2779:10;8254:22;8246:67;;;;-1:-1:-1;;;8246:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8929:22:0;::::1;8921:73;;;::::0;-1:-1:-1;;;8921:73:0;;4273:2:1;8921:73:0::1;::::0;::::1;4255:21:1::0;4312:2;4292:18;;;4285:30;4351:34;4331:18;;;4324:62;-1:-1:-1;;;4402:18:1;;;4395:36;4448:19;;8921:73:0::1;4245:228:1::0;8921:73:0::1;9031:6;::::0;;9010:38:::1;::::0;-1:-1:-1;;;;;9010:38:0;;::::1;::::0;9031:6;::::1;::::0;9010:38:::1;::::0;::::1;9059:6;:17:::0;;-1:-1:-1;;;;;;9059:17:0::1;-1:-1:-1::0;;;;;9059:17:0;;;::::1;::::0;;;::::1;::::0;;8840:244::o;15300:478::-;8254:6;;-1:-1:-1;;;;;8254:6:0;2779:10;8254:22;8246:67;;;;-1:-1:-1;;;8246:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15381:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;15373:60;;;;-1:-1:-1::0;;;15373:60:0::1;;;;;;;:::i;:::-;15449:9;15444:327;15468:9;:16:::0;15464:20;::::1;15444:327;;;15526:7;-1:-1:-1::0;;;;;15510:23:0::1;:9;15520:1;15510:12;;;;;;-1:-1:-1::0;;;15510:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;15510:12:0::1;:23;15506:254;;;15569:9;15579:16:::0;;:20:::1;::::0;15598:1:::1;::::0;15579:20:::1;:::i;15506:254::-;15486:3:::0;::::1;::::0;::::1;:::i;:::-;;;;15444:327;;3863:132:::0;3921:7;3948:39;3952:1;3955;3948:39;;;;;;;;;;;;;;;;;:3;:39::i;20316:449::-;20375:7;20384;20393;20402;20411;20420;20441:23;20466:12;20480:13;20497:20;20509:7;20497:11;:20::i;:::-;20440:77;;;;;;20528:19;20551:10;:8;:10::i;:::-;20528:33;;20573:15;20590:23;20615:12;20631:46;20643:7;20652:4;20658:11;20671:5;20631:11;:46::i;:::-;20572:105;;-1:-1:-1;20572:105:0;-1:-1:-1;20572:105:0;-1:-1:-1;20728:15:0;;-1:-1:-1;20745:4:0;;-1:-1:-1;20751:5:0;;-1:-1:-1;;;;;20316:449:0;;;;;;;:::o;3261:136::-;3319:7;3346:43;3350:1;3353;3346:43;;;;;;;;;;;;;;;;;:3;:43::i;3072:181::-;3130:7;;3162:5;3166:1;3162;:5;:::i;:::-;3150:17;;3191:1;3186;:6;;3178:46;;;;-1:-1:-1;;;3178:46:0;;4680:2:1;3178:46:0;;;4662:21:1;4719:2;4699:18;;;4692:30;4758:29;4738:18;;;4731:57;4805:18;;3178:46:0;4652:177:1;15786:335:0;-1:-1:-1;;;;;15879:19:0;;15871:68;;;;-1:-1:-1;;;15871:68:0;;3457:2:1;15871:68:0;;;3439:21:1;3496:2;3476:18;;;3469:30;3535:34;3515:18;;;3508:62;-1:-1:-1;;;3586:18:1;;;3579:34;3630:19;;15871:68:0;3429:226:1;15871:68:0;-1:-1:-1;;;;;15958:21:0;;15950:68;;;;-1:-1:-1;;;15950:68:0;;8163:2:1;15950:68:0;;;8145:21:1;8202:2;8182:18;;;8175:30;8241:34;8221:18;;;8214:62;-1:-1:-1;;;8292:18:1;;;8285:32;8334:19;;15950:68:0;8135:224:1;15950:68:0;-1:-1:-1;;;;;16029:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16081:32;;8510:25:1;;;16081:32:0;;8483:18:1;16081:32:0;;;;;;;15786:335;;;:::o;16129:1277::-;-1:-1:-1;;;;;16226:20:0;;16218:70;;;;-1:-1:-1;;;16218:70:0;;3051:2:1;16218:70:0;;;3033:21:1;3090:2;3070:18;;;3063:30;3129:34;3109:18;;;3102:62;-1:-1:-1;;;3180:18:1;;;3173:35;3225:19;;16218:70:0;3023:227:1;16218:70:0;-1:-1:-1;;;;;16307:23:0;;16299:71;;;;-1:-1:-1;;;16299:71:0;;6925:2:1;16299:71:0;;;6907:21:1;6964:2;6944:18;;;6937:30;7003:34;6983:18;;;6976:62;-1:-1:-1;;;7054:18:1;;;7047:33;7097:19;;16299:71:0;6897:225:1;16299:71:0;16398:1;16389:6;:10;16381:64;;;;-1:-1:-1;;;16381:64:0;;6515:2:1;16381:64:0;;;6497:21:1;6554:2;6534:18;;;6527:30;6593:34;6573:18;;;6566:62;-1:-1:-1;;;6644:18:1;;;6637:39;6693:19;;16381:64:0;6487:231:1;16381:64:0;-1:-1:-1;;;;;16460:26:0;;;;;;:18;:26;;;;;;;;16459:27;:61;;;;-1:-1:-1;;;;;;16491:29:0;;;;;;:18;:29;;;;;;;;16490:30;16459:61;16456:156;;;16540:15;;16530:6;:25;;16522:90;;;;-1:-1:-1;;;16522:90:0;;7329:2:1;16522:90:0;;;7311:21:1;7368:2;7348:18;;;7341:30;7407:34;7387:18;;;7380:62;-1:-1:-1;;;7458:18:1;;;7451:50;7518:19;;16522:90:0;7301:242:1;16522:90:0;-1:-1:-1;;;;;16626:26:0;;;;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;16656:29:0;;;;;;:18;:29;;;;;;;;16626:59;16623:78;;;16687:14;:12;:14::i;:::-;-1:-1:-1;;;;;16716:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;16740:22:0;;;;;;:11;:22;;;;;;;;16739:23;16716:46;16712:597;;;16779:48;16801:6;16809:9;16820:6;16779:21;:48::i;:::-;16712:597;;;-1:-1:-1;;;;;16850:19:0;;;;;;:11;:19;;;;;;;;16849:20;:46;;;;-1:-1:-1;;;;;;16873:22:0;;;;;;:11;:22;;;;;;;;16849:46;16845:464;;;16912:46;16932:6;16940:9;16951:6;16912:19;:46::i;16845:464::-;-1:-1:-1;;;;;16981:19:0;;;;;;:11;:19;;;;;;;;16980:20;:47;;;;-1:-1:-1;;;;;;17005:22:0;;;;;;:11;:22;;;;;;;;17004:23;16980:47;16976:333;;;17044:44;17062:6;17070:9;17081:6;17044:17;:44::i;16976:333::-;-1:-1:-1;;;;;17110:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;17133:22:0;;;;;;:11;:22;;;;;;;;17110:45;17106:203;;;17172:48;17194:6;17202:9;17213:6;17172:21;:48::i;17106:203::-;17253:44;17271:6;17279:9;17290:6;17253:17;:44::i;:::-;-1:-1:-1;;;;;17322:26:0;;;;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;17352:29:0;;;;;;:18;:29;;;;;;;;17322:59;17319:79;;;17383:15;13814:19;;13800:11;:33;13855:16;;13844:8;:27;13756:123;17383:15;16129:1277;;;:::o;3405:192::-;3491:7;3527:12;3519:6;;;;3511:29;;;;-1:-1:-1;;;3511:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3551:9:0;3563:5;3567:1;3563;:5;:::i;:::-;3551:17;3405:192;-1:-1:-1;;;;;3405:192:0:o;21522:163::-;21563:7;21584:15;21601;21620:19;:17;:19::i;:::-;21583:56;;-1:-1:-1;21583:56:0;-1:-1:-1;21657:20:0;21583:56;;21657:11;:20::i;:::-;21650:27;;;;21522:163;:::o;4003:189::-;4089:7;4124:12;4117:5;4109:28;;;;-1:-1:-1;;;4109:28:0;;;;;;;;:::i;:::-;-1:-1:-1;4148:9:0;4160:5;4164:1;4160;:5;:::i;20773:324::-;20833:7;20842;20851;20871:12;20886:33;20907:11;;20886:16;20898:3;20886:7;:11;;:16;;;;:::i;:::-;:20;;:33::i;:::-;20871:48;;20930:13;20946:30;20972:3;20946:21;20958:8;;20946:7;:11;;:21;;;;:::i;:::-;:25;;:30::i;:::-;20930:46;-1:-1:-1;20987:23:0;21013:28;20930:46;21013:17;:7;21025:4;21013:11;:17::i;:::-;:21;;:28::i;:::-;20987:54;21077:4;;-1:-1:-1;21083:5:0;;-1:-1:-1;20773:324:0;;-1:-1:-1;;;20773:324:0:o;21105:409::-;21215:7;;;;21271:24;:7;21283:11;21271;:24::i;:::-;21253:42;-1:-1:-1;21306:12:0;21321:21;:4;21330:11;21321:8;:21::i;:::-;21306:36;-1:-1:-1;21353:13:0;21369:22;:5;21379:11;21369:9;:22::i;:::-;21353:38;-1:-1:-1;21402:23:0;21428:28;21353:38;21428:17;:7;21440:4;21428:11;:17::i;:28::-;21475:7;;;;-1:-1:-1;21501:4:0;;-1:-1:-1;21105:409:0;;-1:-1:-1;;;;;;;21105:409:0:o;13535:209::-;13581:11;;13578:28;;13535:209::o;13578:28::-;13638:11;;;13616:19;:33;13679:8;;;13660:16;:27;-1:-1:-1;13698:12:0;;;;13721:15;;13535:209::o;18642:630::-;18745:15;18762:23;18787:12;18801:23;18826:12;18840:13;18857:19;18868:7;18857:10;:19::i;:::-;-1:-1:-1;;;;;18905:15:0;;;;;;:7;:15;;;;;;18744:132;;-1:-1:-1;18744:132:0;;-1:-1:-1;18744:132:0;;-1:-1:-1;18744:132:0;-1:-1:-1;18744:132:0;-1:-1:-1;18744:132:0;-1:-1:-1;18905:28:0;;18925:7;18905:19;:28::i;:::-;-1:-1:-1;;;;;18887:15:0;;;;;;:7;:15;;;;;;;;:46;;;;18962:7;:15;;;;:28;;18982:7;18962:19;:28::i;:::-;-1:-1:-1;;;;;18944:15:0;;;;;;;:7;:15;;;;;;:46;;;;19022:18;;;;;;;:39;;19045:15;19022:22;:39::i;:::-;-1:-1:-1;;;;;19001:18:0;;;;;;:7;:18;;;;;:60;;;;19097:10;:8;:10::i;:::-;19075:32;-1:-1:-1;19118:13:0;19134:22;:5;19075:32;19134:9;:22::i;:::-;19118:38;;19167:37;19179:4;19185;19191:5;19198;19167:11;:37::i;:::-;19237:9;-1:-1:-1;;;;;19220:44:0;19229:6;-1:-1:-1;;;;;19220:44:0;;19248:15;19220:44;;;;8510:25:1;;8498:2;8483:18;;8465:76;19220:44:0;;;;;;;;18642:630;;;;;;;;;;;:::o;17995:639::-;18096:15;18113:23;18138:12;18152:23;18177:12;18191:13;18208:19;18219:7;18208:10;:19::i;:::-;-1:-1:-1;;;;;18256:15:0;;;;;;:7;:15;;;;;;18095:132;;-1:-1:-1;18095:132:0;;-1:-1:-1;18095:132:0;;-1:-1:-1;18095:132:0;-1:-1:-1;18095:132:0;-1:-1:-1;18095:132:0;-1:-1:-1;18256:28:0;;18095:132;18256:19;:28::i;:::-;-1:-1:-1;;;;;18238:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;18316:18;;;;;:7;:18;;;;;:39;;18339:15;18316:22;:39::i;:::-;-1:-1:-1;;;;;18295:18:0;;;;;;:7;:18;;;;;;;;:60;;;;18387:7;:18;;;;:39;;18410:15;18387:22;:39::i;17414:573::-;17513:15;17530:23;17555:12;17569:23;17594:12;17608:13;17625:19;17636:7;17625:10;:19::i;:::-;-1:-1:-1;;;;;17673:15:0;;;;;;:7;:15;;;;;;17512:132;;-1:-1:-1;17512:132:0;;-1:-1:-1;17512:132:0;;-1:-1:-1;17512:132:0;-1:-1:-1;17512:132:0;-1:-1:-1;17512:132:0;-1:-1:-1;17673:28:0;;17512:132;17673:19;:28::i;19280:699::-;19383:15;19400:23;19425:12;19439:23;19464:12;19478:13;19495:19;19506:7;19495:10;:19::i;:::-;-1:-1:-1;;;;;19543:15:0;;;;;;:7;:15;;;;;;19382:132;;-1:-1:-1;19382:132:0;;-1:-1:-1;19382:132:0;;-1:-1:-1;19382:132:0;-1:-1:-1;19382:132:0;-1:-1:-1;19382:132:0;-1:-1:-1;19543:28:0;;19563:7;19543:19;:28::i;:::-;-1:-1:-1;;;;;19525:15:0;;;;;;:7;:15;;;;;;;;:46;;;;19600:7;:15;;;;:28;;19620:7;19600:19;:28::i;21693:561::-;21790:7;;21826;;21743;;;;;21850:289;21874:9;:16;21870:20;;21850:289;;;21940:7;21916;:21;21924:9;21934:1;21924:12;;;;;;-1:-1:-1;;;21924:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21924:12:0;21916:21;;;;;;;;;;;;;:31;;:66;;;21975:7;21951;:21;21959:9;21969:1;21959:12;;;;;;-1:-1:-1;;;21959:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21959:12:0;21951:21;;;;;;;;;;;;;:31;21916:66;21912:97;;;21992:7;;22001;;21984:25;;;;;;;21693:561;;:::o;21912:97::-;22034:34;22046:7;:21;22054:9;22064:1;22054:12;;;;;;-1:-1:-1;;;22054:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22054:12:0;22046:21;;;;;;;;;;;;;22034:7;;:11;:34::i;:::-;22024:44;;22093:34;22105:7;:21;22113:9;22123:1;22113:12;;;;;;-1:-1:-1;;;22113:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22113:12:0;22105:21;;;;;;;;;;;;;22093:7;;:11;:34::i;:::-;22083:44;-1:-1:-1;21892:3:0;;;;:::i;:::-;;;;21850:289;;;-1:-1:-1;22175:7:0;;22163;;:20;;:11;:20::i;:::-;22153:7;:30;22149:61;;;22193:7;;22202;;22185:25;;;;;;21693:561;;:::o;22149:61::-;22229:7;;22238;;-1:-1:-1;21693:561:0;-1:-1:-1;21693:561:0:o;3605:250::-;3663:7;3687:6;3683:47;;-1:-1:-1;3717:1:0;3710:8;;3683:47;3742:9;3754:5;3758:1;3754;:5;:::i;:::-;3742:17;-1:-1:-1;3787:1:0;3778:5;3782:1;3742:17;3778:5;:::i;:::-;:10;3770:56;;;;-1:-1:-1;;;3770:56:0;;5752:2:1;3770:56:0;;;5734:21:1;5791:2;5771:18;;;5764:30;5830:34;5810:18;;;5803:62;-1:-1:-1;;;5881:18:1;;;5874:31;5922:19;;3770:56:0;5724:223:1;19987:321:0;20095:28;20117:5;20095:17;20107:4;20095:7;;:11;;:17;;;;:::i;:28::-;20085:7;:38;20147:10;;:20;;20162:4;20147:14;:20::i;:::-;20134:10;:33;20192:11;;:22;;20208:5;20192:15;:22::i;:::-;20178:11;:36;20235:7;;:18;;20247:5;20235:11;:18::i;:::-;20225:7;:28;;;20282:18;;20294:5;20282:11;:18::i;:::-;20264:15;:36;-1:-1:-1;;;;19987:321:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:196::-;251:6;304:2;292:9;283:7;279:23;275:32;272:2;;;325:6;317;310:22;272:2;353:29;372:9;353:29;:::i;393:270::-;461:6;469;522:2;510:9;501:7;497:23;493:32;490:2;;;543:6;535;528:22;490:2;571:29;590:9;571:29;:::i;:::-;561:39;;619:38;653:2;642:9;638:18;619:38;:::i;:::-;609:48;;480:183;;;;;:::o;668:338::-;745:6;753;761;814:2;802:9;793:7;789:23;785:32;782:2;;;835:6;827;820:22;782:2;863:29;882:9;863:29;:::i;:::-;853:39;;911:38;945:2;934:9;930:18;911:38;:::i;:::-;901:48;;996:2;985:9;981:18;968:32;958:42;;772:234;;;;;:::o;1011:264::-;1079:6;1087;1140:2;1128:9;1119:7;1115:23;1111:32;1108:2;;;1161:6;1153;1146:22;1108:2;1189:29;1208:9;1189:29;:::i;:::-;1179:39;1265:2;1250:18;;;;1237:32;;-1:-1:-1;;;1098:177:1:o;1280:190::-;1339:6;1392:2;1380:9;1371:7;1367:23;1363:32;1360:2;;;1413:6;1405;1398:22;1360:2;-1:-1:-1;1441:23:1;;1350:120;-1:-1:-1;1350:120:1:o;1475:361::-;1540:6;1548;1601:2;1589:9;1580:7;1576:23;1572:32;1569:2;;;1622:6;1614;1607:22;1569:2;1663:9;1650:23;1640:33;;1723:2;1712:9;1708:18;1695:32;1770:5;1763:13;1756:21;1749:5;1746:32;1736:2;;1797:6;1789;1782:22;1736:2;1825:5;1815:15;;;1559:277;;;;;:::o;2241:603::-;2353:4;2382:2;2411;2400:9;2393:21;2443:6;2437:13;2486:6;2481:2;2470:9;2466:18;2459:34;2511:4;2524:140;2538:6;2535:1;2532:13;2524:140;;;2633:14;;;2629:23;;2623:30;2599:17;;;2618:2;2595:26;2588:66;2553:10;;2524:140;;;2682:6;2679:1;2676:13;2673:2;;;2752:4;2747:2;2738:6;2727:9;2723:22;2719:31;2712:45;2673:2;-1:-1:-1;2828:2:1;2807:15;-1:-1:-1;;2803:29:1;2788:45;;;;2835:2;2784:54;;2362:482;-1:-1:-1;;;2362:482:1:o;4834:351::-;5036:2;5018:21;;;5075:2;5055:18;;;5048:30;5114:29;5109:2;5094:18;;5087:57;5176:2;5161:18;;5008:177::o;5952:356::-;6154:2;6136:21;;;6173:18;;;6166:30;6232:34;6227:2;6212:18;;6205:62;6299:2;6284:18;;6126:182::o;8735:128::-;8775:3;8806:1;8802:6;8799:1;8796:13;8793:2;;;8812:18;;:::i;:::-;-1:-1:-1;8848:9:1;;8783:80::o;8868:217::-;8908:1;8934;8924:2;;-1:-1:-1;;;8959:31:1;;9013:4;9010:1;9003:15;9041:4;8966:1;9031:15;8924:2;-1:-1:-1;9070:9:1;;8914:171::o;9090:168::-;9130:7;9196:1;9192;9188:6;9184:14;9181:1;9178:21;9173:1;9166:9;9159:17;9155:45;9152:2;;;9203:18;;:::i;:::-;-1:-1:-1;9243:9:1;;9142:116::o;9263:125::-;9303:4;9331:1;9328;9325:8;9322:2;;;9336:18;;:::i;:::-;-1:-1:-1;9373:9:1;;9312:76::o;9393:380::-;9472:1;9468:12;;;;9515;;;9536:2;;9590:4;9582:6;9578:17;9568:27;;9536:2;9643;9635:6;9632:14;9612:18;9609:38;9606:2;;;9689:10;9684:3;9680:20;9677:1;9670:31;9724:4;9721:1;9714:15;9752:4;9749:1;9742:15;9606:2;;9448:325;;;:::o;9778:135::-;9817:3;-1:-1:-1;;9838:17:1;;9835:2;;;9858:18;;:::i;:::-;-1:-1:-1;9905:1:1;9894:13;;9825:88::o;9918:127::-;9979:10;9974:3;9970:20;9967:1;9960:31;10010:4;10007:1;10000:15;10034:4;10031:1;10024:15

Swarm Source

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