false
false
0
The new Blockscout UI is now open source! Learn how to deploy it here

Contract Address Details

0xB24322100F51196272502BA10DA1bDE657323e74

Token
USDT (USDT)
Creator
0xdfef88–208669 at 0x0944a0–6818f8
Balance
0 ETH
Tokens
Fetching tokens...
Transactions
1 Transactions
Transfers
0 Transfers
Gas Used
56,091
Last Balance Update
2430717
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
USDT




Optimization enabled
true
Compiler version
v0.8.26+commit.8a97fa7a




Optimization runs
200
EVM Version
paris




Verified at
2025-03-02T09:32:33.079229Z

Contract source code

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

//fortct
contract USDT {
    uint256 public constant MAX_SUPPLY = 500000000 * 10 ** 18;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public blackList;
    mapping(address => bool) public isAuthorized;
    address public Admin;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    constructor() {
        _name = "USDT";
        _symbol = "USDT";
        Admin = msg.sender;
        isAuthorized[Admin] = true;
        _mint(Admin, 2000000 * 10 ** 18);
    }

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

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

    function decimals() public pure returns (uint8) {
        return 18;
    }

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

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

    function transfer(address recipient, uint256 amount) public returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) public returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(
            currentAllowance >= amount,
            "USDT: transfer amount exceeds allowance"
        );
        _approve(sender, msg.sender, currentAllowance - amount);
        return true;
    }

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public returns (bool) {
        _approve(
            msg.sender,
            spender,
            _allowances[msg.sender][spender] + addedValue
        );
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public returns (bool) {
        uint256 currentAllowance = _allowances[msg.sender][spender];
        require(
            currentAllowance >= subtractedValue,
            "USDT: decreased allowance below zero"
        );
        _approve(msg.sender, spender, currentAllowance - subtractedValue);
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal {
        require(sender != address(0), "USDT: transfer from the zero address");
        require(recipient != address(0), "USDT: transfer to the zero address");
        require(!blackList[sender], "USDT: sender is blacklisted");
        require(!blackList[recipient], "USDT: recipient is blacklisted");
        _beforeTokenTransfer(sender, recipient, amount);
        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "USDT: transfer amount exceeds balance"
        );
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "USDT: mint to the zero address");
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

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

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal {}

    function burnFrom(address account, uint256 amount) public {
        require(isAuthorized[msg.sender], "USDT: caller is not authorized");
        uint256 currentAllowance = allowance(account, msg.sender);
        require(
            currentAllowance >= amount,
            "USDT: burn amount exceeds allowance"
        );
        _approve(account, msg.sender, currentAllowance - amount);
        _burn(account, amount);
    }

    function mint(address to, uint256 amount) public returns (bool) {
        require(
            MAX_SUPPLY >= totalSupply() + amount,
            "USDT: minting would exceed max supply"
        );
        require(isAuthorized[msg.sender], "USDT: not authorized to mint");
        _mint(to, amount);
        return true;
    }

    function burn(uint256 amount) public {
        require(isAuthorized[msg.sender], "USDT: not authorized to burn");
        _burn(msg.sender, amount);
    }

    function blacklist(address account, bool isSpam) public {
        require(isAuthorized[msg.sender], "USDT: not authorized");
        blackList[account] = isSpam;
    }

    function authorize(address account, bool Authorized) public {
        require(msg.sender == Admin, "USDT: authorization not allowed");
        isAuthorized[account] = Authorized;
    }

    function setAdmin(address account) public {
        require(msg.sender == Admin, "USDT: authorization not allowed");
        require(Admin != account, "USDT: admin cannot be changed");
        require(account != address(0), "USDT: admin cannot be zero address");
        Admin = account;
        isAuthorized[account] = true;
    }
}
        

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"Admin","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"MAX_SUPPLY","inputs":[]},{"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":"nonpayable","outputs":[],"name":"authorize","inputs":[{"type":"address","name":"account","internalType":"address"},{"type":"bool","name":"Authorized","internalType":"bool"}]},{"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":"bool","name":"","internalType":"bool"}],"name":"blackList","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"blacklist","inputs":[{"type":"address","name":"account","internalType":"address"},{"type":"bool","name":"isSpam","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"burn","inputs":[{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"burnFrom","inputs":[{"type":"address","name":"account","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"pure","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"decreaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"subtractedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"increaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"addedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isAuthorized","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"mint","inputs":[{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setAdmin","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"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"}]}]
              

Contract Creation Code

Verify & Publish
0x608060405234801561001057600080fd5b506040805180820190915260048152631554d11560e21b6020820152600690610039908261023a565b506040805180820190915260048152631554d11560e21b6020820152600790610062908261023a565b50600480546001600160a01b0319163390811782556000908152600360205260409020805460ff19166001179055546100af906001600160a01b03166a01a784379d99db420000006100b4565b61031f565b6001600160a01b03821661010e5760405162461bcd60e51b815260206004820152601e60248201527f555344543a206d696e7420746f20746865207a65726f20616464726573730000604482015260640160405180910390fd5b806005600082825461012091906102f8565b90915550506001600160a01b0382166000908152602081905260408120805483929061014d9084906102f8565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806101c657607f821691505b6020821081036101e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561019757806000526020600020601f840160051c810160208510156102135750805b601f840160051c820191505b81811015610233576000815560010161021f565b5050505050565b81516001600160401b038111156102535761025361019c565b6102678161026184546101b2565b846101ec565b6020601f82116001811461029b57600083156102835750848201515b600019600385901b1c1916600184901b178455610233565b600084815260208120601f198516915b828110156102cb57878501518255602094850194600190920191016102ab565b50848210156102e95786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b8082018082111561031957634e487b7160e01b600052601160045260246000fd5b92915050565b6112538061032e6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806342966c68116100b857806395d89b411161007c57806395d89b4114610297578063a457c2d71461029f578063a9059cbb146102b2578063dd62ed3e146102c5578063fe9fbb80146102fe578063ff1b636d1461032157600080fd5b806342966c68146102125780634838d16514610225578063704b6c021461024857806370a082311461025b57806379cc67901461028457600080fd5b8063313ce567116100ff578063313ce567146101b757806332cb6b0c146101c657806339509351146101d9578063404e5129146101ec57806340c10f19146101ff57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806323b872dd1461018f5780632d1fb389146101a2575b600080fd5b61014461034c565b604051610151919061102c565b60405180910390f35b61016d610168366004611096565b6103de565b6040519015158152602001610151565b6005545b604051908152602001610151565b61016d61019d3660046110c0565b6103f5565b6101b56101b03660046110fd565b6104aa565b005b60405160128152602001610151565b6101816b019d971e4fe8401e7400000081565b61016d6101e7366004611096565b61052f565b6101b56101fa3660046110fd565b610566565b61016d61020d366004611096565b6105e7565b6101b5610220366004611139565b6106cf565b61016d610233366004611152565b60026020526000908152604090205460ff1681565b6101b5610256366004611152565b61073b565b610181610269366004611152565b6001600160a01b031660009081526020819052604090205490565b6101b5610292366004611096565b61088d565b61014461098a565b61016d6102ad366004611096565b610999565b61016d6102c0366004611096565b610a32565b6101816102d3366004611174565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61016d61030c366004611152565b60036020526000908152604090205460ff1681565b600454610334906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b60606006805461035b906111a7565b80601f0160208091040260200160405190810160405280929190818152602001828054610387906111a7565b80156103d45780601f106103a9576101008083540402835291602001916103d4565b820191906000526020600020905b8154815290600101906020018083116103b757829003601f168201915b5050505050905090565b60006103eb338484610a3f565b5060015b92915050565b6000610402848484610b63565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561048b5760405162461bcd60e51b815260206004820152602760248201527f555344543a207472616e7366657220616d6f756e74206578636565647320616c6044820152666c6f77616e636560c81b60648201526084015b60405180910390fd5b61049f853361049a86856111f7565b610a3f565b506001949350505050565b6004546001600160a01b031633146105045760405162461bcd60e51b815260206004820152601f60248201527f555344543a20617574686f72697a6174696f6e206e6f7420616c6c6f776564006044820152606401610482565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103eb91859061049a90869061120a565b3360009081526003602052604090205460ff166105bc5760405162461bcd60e51b81526020600482015260146024820152731554d1150e881b9bdd08185d5d1a1bdc9a5e995960621b6044820152606401610482565b6001600160a01b03919091166000908152600260205260409020805460ff1916911515919091179055565b6000816105f360055490565b6105fd919061120a565b6b019d971e4fe8401e7400000010156106665760405162461bcd60e51b815260206004820152602560248201527f555344543a206d696e74696e6720776f756c6420657863656564206d617820736044820152647570706c7960d81b6064820152608401610482565b3360009081526003602052604090205460ff166106c55760405162461bcd60e51b815260206004820152601c60248201527f555344543a206e6f7420617574686f72697a656420746f206d696e74000000006044820152606401610482565b6103eb8383610e09565b3360009081526003602052604090205460ff1661072e5760405162461bcd60e51b815260206004820152601c60248201527f555344543a206e6f7420617574686f72697a656420746f206275726e000000006044820152606401610482565b6107383382610ee8565b50565b6004546001600160a01b031633146107955760405162461bcd60e51b815260206004820152601f60248201527f555344543a20617574686f72697a6174696f6e206e6f7420616c6c6f776564006044820152606401610482565b6004546001600160a01b038083169116036107f25760405162461bcd60e51b815260206004820152601d60248201527f555344543a2061646d696e2063616e6e6f74206265206368616e6765640000006044820152606401610482565b6001600160a01b0381166108535760405162461bcd60e51b815260206004820152602260248201527f555344543a2061646d696e2063616e6e6f74206265207a65726f206164647265604482015261737360f01b6064820152608401610482565b600480546001600160a01b039092166001600160a01b0319909216821790556000908152600360205260409020805460ff19166001179055565b3360009081526003602052604090205460ff166108ec5760405162461bcd60e51b815260206004820152601e60248201527f555344543a2063616c6c6572206973206e6f7420617574686f72697a656400006044820152606401610482565b6001600160a01b03821660009081526001602090815260408083203384529091529020548181101561096c5760405162461bcd60e51b815260206004820152602360248201527f555344543a206275726e20616d6f756e74206578636565647320616c6c6f77616044820152626e636560e81b6064820152608401610482565b61097b833361049a85856111f7565b6109858383610ee8565b505050565b60606007805461035b906111a7565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610a195760405162461bcd60e51b8152602060048201526024808201527f555344543a2064656372656173656420616c6c6f77616e63652062656c6f77206044820152637a65726f60e01b6064820152608401610482565b610a28338561049a86856111f7565b5060019392505050565b60006103eb338484610b63565b6001600160a01b038316610aa15760405162461bcd60e51b815260206004820152602360248201527f555344543a20617070726f76652066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610482565b6001600160a01b038216610b015760405162461bcd60e51b815260206004820152602160248201527f555344543a20617070726f766520746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610482565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610bc55760405162461bcd60e51b8152602060048201526024808201527f555344543a207472616e736665722066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610482565b6001600160a01b038216610c265760405162461bcd60e51b815260206004820152602260248201527f555344543a207472616e7366657220746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610482565b6001600160a01b03831660009081526002602052604090205460ff1615610c8f5760405162461bcd60e51b815260206004820152601b60248201527f555344543a2073656e64657220697320626c61636b6c697374656400000000006044820152606401610482565b6001600160a01b03821660009081526002602052604090205460ff1615610cf85760405162461bcd60e51b815260206004820152601e60248201527f555344543a20726563697069656e7420697320626c61636b6c697374656400006044820152606401610482565b6001600160a01b03831660009081526020819052604090205481811015610d6f5760405162461bcd60e51b815260206004820152602560248201527f555344543a207472616e7366657220616d6f756e7420657863656564732062616044820152646c616e636560d81b6064820152608401610482565b610d7982826111f7565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290610daf90849061120a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610dfb91815260200190565b60405180910390a350505050565b6001600160a01b038216610e5f5760405162461bcd60e51b815260206004820152601e60248201527f555344543a206d696e7420746f20746865207a65726f206164647265737300006044820152606401610482565b8060056000828254610e71919061120a565b90915550506001600160a01b03821660009081526020819052604081208054839290610e9e90849061120a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610f3e5760405162461bcd60e51b815260206004820181905260248201527f555344543a206275726e2066726f6d20746865207a65726f20616464726573736044820152606401610482565b6001600160a01b03821660009081526020819052604090205481811015610fb15760405162461bcd60e51b815260206004820152602160248201527f555344543a206275726e20616d6f756e7420657863656564732062616c616e636044820152606560f81b6064820152608401610482565b610fbb82826111f7565b6001600160a01b03841660009081526020819052604081209190915560058054849290610fe99084906111f7565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610b56565b602081526000825180602084015260005b8181101561105a576020818601810151604086840101520161103d565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461109157600080fd5b919050565b600080604083850312156110a957600080fd5b6110b28361107a565b946020939093013593505050565b6000806000606084860312156110d557600080fd5b6110de8461107a565b92506110ec6020850161107a565b929592945050506040919091013590565b6000806040838503121561111057600080fd5b6111198361107a565b91506020830135801515811461112e57600080fd5b809150509250929050565b60006020828403121561114b57600080fd5b5035919050565b60006020828403121561116457600080fd5b61116d8261107a565b9392505050565b6000806040838503121561118757600080fd5b6111908361107a565b915061119e6020840161107a565b90509250929050565b600181811c908216806111bb57607f821691505b6020821081036111db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156103ef576103ef6111e1565b808201808211156103ef576103ef6111e156fea2646970667358221220e5975684a84508b0dc288c222337506658e0acacd5d205553334e75e6338365264736f6c634300081a0033

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106101375760003560e01c806342966c68116100b857806395d89b411161007c57806395d89b4114610297578063a457c2d71461029f578063a9059cbb146102b2578063dd62ed3e146102c5578063fe9fbb80146102fe578063ff1b636d1461032157600080fd5b806342966c68146102125780634838d16514610225578063704b6c021461024857806370a082311461025b57806379cc67901461028457600080fd5b8063313ce567116100ff578063313ce567146101b757806332cb6b0c146101c657806339509351146101d9578063404e5129146101ec57806340c10f19146101ff57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806323b872dd1461018f5780632d1fb389146101a2575b600080fd5b61014461034c565b604051610151919061102c565b60405180910390f35b61016d610168366004611096565b6103de565b6040519015158152602001610151565b6005545b604051908152602001610151565b61016d61019d3660046110c0565b6103f5565b6101b56101b03660046110fd565b6104aa565b005b60405160128152602001610151565b6101816b019d971e4fe8401e7400000081565b61016d6101e7366004611096565b61052f565b6101b56101fa3660046110fd565b610566565b61016d61020d366004611096565b6105e7565b6101b5610220366004611139565b6106cf565b61016d610233366004611152565b60026020526000908152604090205460ff1681565b6101b5610256366004611152565b61073b565b610181610269366004611152565b6001600160a01b031660009081526020819052604090205490565b6101b5610292366004611096565b61088d565b61014461098a565b61016d6102ad366004611096565b610999565b61016d6102c0366004611096565b610a32565b6101816102d3366004611174565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61016d61030c366004611152565b60036020526000908152604090205460ff1681565b600454610334906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b60606006805461035b906111a7565b80601f0160208091040260200160405190810160405280929190818152602001828054610387906111a7565b80156103d45780601f106103a9576101008083540402835291602001916103d4565b820191906000526020600020905b8154815290600101906020018083116103b757829003601f168201915b5050505050905090565b60006103eb338484610a3f565b5060015b92915050565b6000610402848484610b63565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561048b5760405162461bcd60e51b815260206004820152602760248201527f555344543a207472616e7366657220616d6f756e74206578636565647320616c6044820152666c6f77616e636560c81b60648201526084015b60405180910390fd5b61049f853361049a86856111f7565b610a3f565b506001949350505050565b6004546001600160a01b031633146105045760405162461bcd60e51b815260206004820152601f60248201527f555344543a20617574686f72697a6174696f6e206e6f7420616c6c6f776564006044820152606401610482565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103eb91859061049a90869061120a565b3360009081526003602052604090205460ff166105bc5760405162461bcd60e51b81526020600482015260146024820152731554d1150e881b9bdd08185d5d1a1bdc9a5e995960621b6044820152606401610482565b6001600160a01b03919091166000908152600260205260409020805460ff1916911515919091179055565b6000816105f360055490565b6105fd919061120a565b6b019d971e4fe8401e7400000010156106665760405162461bcd60e51b815260206004820152602560248201527f555344543a206d696e74696e6720776f756c6420657863656564206d617820736044820152647570706c7960d81b6064820152608401610482565b3360009081526003602052604090205460ff166106c55760405162461bcd60e51b815260206004820152601c60248201527f555344543a206e6f7420617574686f72697a656420746f206d696e74000000006044820152606401610482565b6103eb8383610e09565b3360009081526003602052604090205460ff1661072e5760405162461bcd60e51b815260206004820152601c60248201527f555344543a206e6f7420617574686f72697a656420746f206275726e000000006044820152606401610482565b6107383382610ee8565b50565b6004546001600160a01b031633146107955760405162461bcd60e51b815260206004820152601f60248201527f555344543a20617574686f72697a6174696f6e206e6f7420616c6c6f776564006044820152606401610482565b6004546001600160a01b038083169116036107f25760405162461bcd60e51b815260206004820152601d60248201527f555344543a2061646d696e2063616e6e6f74206265206368616e6765640000006044820152606401610482565b6001600160a01b0381166108535760405162461bcd60e51b815260206004820152602260248201527f555344543a2061646d696e2063616e6e6f74206265207a65726f206164647265604482015261737360f01b6064820152608401610482565b600480546001600160a01b039092166001600160a01b0319909216821790556000908152600360205260409020805460ff19166001179055565b3360009081526003602052604090205460ff166108ec5760405162461bcd60e51b815260206004820152601e60248201527f555344543a2063616c6c6572206973206e6f7420617574686f72697a656400006044820152606401610482565b6001600160a01b03821660009081526001602090815260408083203384529091529020548181101561096c5760405162461bcd60e51b815260206004820152602360248201527f555344543a206275726e20616d6f756e74206578636565647320616c6c6f77616044820152626e636560e81b6064820152608401610482565b61097b833361049a85856111f7565b6109858383610ee8565b505050565b60606007805461035b906111a7565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610a195760405162461bcd60e51b8152602060048201526024808201527f555344543a2064656372656173656420616c6c6f77616e63652062656c6f77206044820152637a65726f60e01b6064820152608401610482565b610a28338561049a86856111f7565b5060019392505050565b60006103eb338484610b63565b6001600160a01b038316610aa15760405162461bcd60e51b815260206004820152602360248201527f555344543a20617070726f76652066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610482565b6001600160a01b038216610b015760405162461bcd60e51b815260206004820152602160248201527f555344543a20617070726f766520746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610482565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610bc55760405162461bcd60e51b8152602060048201526024808201527f555344543a207472616e736665722066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610482565b6001600160a01b038216610c265760405162461bcd60e51b815260206004820152602260248201527f555344543a207472616e7366657220746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610482565b6001600160a01b03831660009081526002602052604090205460ff1615610c8f5760405162461bcd60e51b815260206004820152601b60248201527f555344543a2073656e64657220697320626c61636b6c697374656400000000006044820152606401610482565b6001600160a01b03821660009081526002602052604090205460ff1615610cf85760405162461bcd60e51b815260206004820152601e60248201527f555344543a20726563697069656e7420697320626c61636b6c697374656400006044820152606401610482565b6001600160a01b03831660009081526020819052604090205481811015610d6f5760405162461bcd60e51b815260206004820152602560248201527f555344543a207472616e7366657220616d6f756e7420657863656564732062616044820152646c616e636560d81b6064820152608401610482565b610d7982826111f7565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290610daf90849061120a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610dfb91815260200190565b60405180910390a350505050565b6001600160a01b038216610e5f5760405162461bcd60e51b815260206004820152601e60248201527f555344543a206d696e7420746f20746865207a65726f206164647265737300006044820152606401610482565b8060056000828254610e71919061120a565b90915550506001600160a01b03821660009081526020819052604081208054839290610e9e90849061120a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610f3e5760405162461bcd60e51b815260206004820181905260248201527f555344543a206275726e2066726f6d20746865207a65726f20616464726573736044820152606401610482565b6001600160a01b03821660009081526020819052604090205481811015610fb15760405162461bcd60e51b815260206004820152602160248201527f555344543a206275726e20616d6f756e7420657863656564732062616c616e636044820152606560f81b6064820152608401610482565b610fbb82826111f7565b6001600160a01b03841660009081526020819052604081209190915560058054849290610fe99084906111f7565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610b56565b602081526000825180602084015260005b8181101561105a576020818601810151604086840101520161103d565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461109157600080fd5b919050565b600080604083850312156110a957600080fd5b6110b28361107a565b946020939093013593505050565b6000806000606084860312156110d557600080fd5b6110de8461107a565b92506110ec6020850161107a565b929592945050506040919091013590565b6000806040838503121561111057600080fd5b6111198361107a565b91506020830135801515811461112e57600080fd5b809150509250929050565b60006020828403121561114b57600080fd5b5035919050565b60006020828403121561116457600080fd5b61116d8261107a565b9392505050565b6000806040838503121561118757600080fd5b6111908361107a565b915061119e6020840161107a565b90509250929050565b600181811c908216806111bb57607f821691505b6020821081036111db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156103ef576103ef6111e1565b808201808211156103ef576103ef6111e156fea2646970667358221220e5975684a84508b0dc288c222337506658e0acacd5d205553334e75e6338365264736f6c634300081a0033
<script src="{@file}"> </script>