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
0x608060405234801561001057600080fd5b506040805180820190915260048152631554d11560e21b6020820152600690610039908261023a565b506040805180820190915260048152631554d11560e21b6020820152600790610062908261023a565b50600480546001600160a01b0319163390811782556000908152600360205260409020805460ff19166001179055546100af906001600160a01b03166a01a784379d99db420000006100b4565b61031f565b6001600160a01b03821661010e5760405162461bcd60e51b815260206004820152601e60248201527f555344543a206d696e7420746f20746865207a65726f20616464726573730000604482015260640160405180910390fd5b806005600082825461012091906102f8565b90915550506001600160a01b0382166000908152602081905260408120805483929061014d9084906102f8565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806101c657607f821691505b6020821081036101e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561019757806000526020600020601f840160051c810160208510156102135750805b601f840160051c820191505b81811015610233576000815560010161021f565b5050505050565b81516001600160401b038111156102535761025361019c565b6102678161026184546101b2565b846101ec565b6020601f82116001811461029b57600083156102835750848201515b600019600385901b1c1916600184901b178455610233565b600084815260208120601f198516915b828110156102cb57878501518255602094850194600190920191016102ab565b50848210156102e95786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b8082018082111561031957634e487b7160e01b600052601160045260246000fd5b92915050565b6112538061032e6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806342966c68116100b857806395d89b411161007c57806395d89b4114610297578063a457c2d71461029f578063a9059cbb146102b2578063dd62ed3e146102c5578063fe9fbb80146102fe578063ff1b636d1461032157600080fd5b806342966c68146102125780634838d16514610225578063704b6c021461024857806370a082311461025b57806379cc67901461028457600080fd5b8063313ce567116100ff578063313ce567146101b757806332cb6b0c146101c657806339509351146101d9578063404e5129146101ec57806340c10f19146101ff57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806323b872dd1461018f5780632d1fb389146101a2575b600080fd5b61014461034c565b604051610151919061102c565b60405180910390f35b61016d610168366004611096565b6103de565b6040519015158152602001610151565b6005545b604051908152602001610151565b61016d61019d3660046110c0565b6103f5565b6101b56101b03660046110fd565b6104aa565b005b60405160128152602001610151565b6101816b019d971e4fe8401e7400000081565b61016d6101e7366004611096565b61052f565b6101b56101fa3660046110fd565b610566565b61016d61020d366004611096565b6105e7565b6101b5610220366004611139565b6106cf565b61016d610233366004611152565b60026020526000908152604090205460ff1681565b6101b5610256366004611152565b61073b565b610181610269366004611152565b6001600160a01b031660009081526020819052604090205490565b6101b5610292366004611096565b61088d565b61014461098a565b61016d6102ad366004611096565b610999565b61016d6102c0366004611096565b610a32565b6101816102d3366004611174565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61016d61030c366004611152565b60036020526000908152604090205460ff1681565b600454610334906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b60606006805461035b906111a7565b80601f0160208091040260200160405190810160405280929190818152602001828054610387906111a7565b80156103d45780601f106103a9576101008083540402835291602001916103d4565b820191906000526020600020905b8154815290600101906020018083116103b757829003601f168201915b5050505050905090565b60006103eb338484610a3f565b5060015b92915050565b6000610402848484610b63565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561048b5760405162461bcd60e51b815260206004820152602760248201527f555344543a207472616e7366657220616d6f756e74206578636565647320616c6044820152666c6f77616e636560c81b60648201526084015b60405180910390fd5b61049f853361049a86856111f7565b610a3f565b506001949350505050565b6004546001600160a01b031633146105045760405162461bcd60e51b815260206004820152601f60248201527f555344543a20617574686f72697a6174696f6e206e6f7420616c6c6f776564006044820152606401610482565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103eb91859061049a90869061120a565b3360009081526003602052604090205460ff166105bc5760405162461bcd60e51b81526020600482015260146024820152731554d1150e881b9bdd08185d5d1a1bdc9a5e995960621b6044820152606401610482565b6001600160a01b03919091166000908152600260205260409020805460ff1916911515919091179055565b6000816105f360055490565b6105fd919061120a565b6b019d971e4fe8401e7400000010156106665760405162461bcd60e51b815260206004820152602560248201527f555344543a206d696e74696e6720776f756c6420657863656564206d617820736044820152647570706c7960d81b6064820152608401610482565b3360009081526003602052604090205460ff166106c55760405162461bcd60e51b815260206004820152601c60248201527f555344543a206e6f7420617574686f72697a656420746f206d696e74000000006044820152606401610482565b6103eb8383610e09565b3360009081526003602052604090205460ff1661072e5760405162461bcd60e51b815260206004820152601c60248201527f555344543a206e6f7420617574686f72697a656420746f206275726e000000006044820152606401610482565b6107383382610ee8565b50565b6004546001600160a01b031633146107955760405162461bcd60e51b815260206004820152601f60248201527f555344543a20617574686f72697a6174696f6e206e6f7420616c6c6f776564006044820152606401610482565b6004546001600160a01b038083169116036107f25760405162461bcd60e51b815260206004820152601d60248201527f555344543a2061646d696e2063616e6e6f74206265206368616e6765640000006044820152606401610482565b6001600160a01b0381166108535760405162461bcd60e51b815260206004820152602260248201527f555344543a2061646d696e2063616e6e6f74206265207a65726f206164647265604482015261737360f01b6064820152608401610482565b600480546001600160a01b039092166001600160a01b0319909216821790556000908152600360205260409020805460ff19166001179055565b3360009081526003602052604090205460ff166108ec5760405162461bcd60e51b815260206004820152601e60248201527f555344543a2063616c6c6572206973206e6f7420617574686f72697a656400006044820152606401610482565b6001600160a01b03821660009081526001602090815260408083203384529091529020548181101561096c5760405162461bcd60e51b815260206004820152602360248201527f555344543a206275726e20616d6f756e74206578636565647320616c6c6f77616044820152626e636560e81b6064820152608401610482565b61097b833361049a85856111f7565b6109858383610ee8565b505050565b60606007805461035b906111a7565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610a195760405162461bcd60e51b8152602060048201526024808201527f555344543a2064656372656173656420616c6c6f77616e63652062656c6f77206044820152637a65726f60e01b6064820152608401610482565b610a28338561049a86856111f7565b5060019392505050565b60006103eb338484610b63565b6001600160a01b038316610aa15760405162461bcd60e51b815260206004820152602360248201527f555344543a20617070726f76652066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610482565b6001600160a01b038216610b015760405162461bcd60e51b815260206004820152602160248201527f555344543a20617070726f766520746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610482565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610bc55760405162461bcd60e51b8152602060048201526024808201527f555344543a207472616e736665722066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610482565b6001600160a01b038216610c265760405162461bcd60e51b815260206004820152602260248201527f555344543a207472616e7366657220746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610482565b6001600160a01b03831660009081526002602052604090205460ff1615610c8f5760405162461bcd60e51b815260206004820152601b60248201527f555344543a2073656e64657220697320626c61636b6c697374656400000000006044820152606401610482565b6001600160a01b03821660009081526002602052604090205460ff1615610cf85760405162461bcd60e51b815260206004820152601e60248201527f555344543a20726563697069656e7420697320626c61636b6c697374656400006044820152606401610482565b6001600160a01b03831660009081526020819052604090205481811015610d6f5760405162461bcd60e51b815260206004820152602560248201527f555344543a207472616e7366657220616d6f756e7420657863656564732062616044820152646c616e636560d81b6064820152608401610482565b610d7982826111f7565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290610daf90849061120a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610dfb91815260200190565b60405180910390a350505050565b6001600160a01b038216610e5f5760405162461bcd60e51b815260206004820152601e60248201527f555344543a206d696e7420746f20746865207a65726f206164647265737300006044820152606401610482565b8060056000828254610e71919061120a565b90915550506001600160a01b03821660009081526020819052604081208054839290610e9e90849061120a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610f3e5760405162461bcd60e51b815260206004820181905260248201527f555344543a206275726e2066726f6d20746865207a65726f20616464726573736044820152606401610482565b6001600160a01b03821660009081526020819052604090205481811015610fb15760405162461bcd60e51b815260206004820152602160248201527f555344543a206275726e20616d6f756e7420657863656564732062616c616e636044820152606560f81b6064820152608401610482565b610fbb82826111f7565b6001600160a01b03841660009081526020819052604081209190915560058054849290610fe99084906111f7565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610b56565b602081526000825180602084015260005b8181101561105a576020818601810151604086840101520161103d565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461109157600080fd5b919050565b600080604083850312156110a957600080fd5b6110b28361107a565b946020939093013593505050565b6000806000606084860312156110d557600080fd5b6110de8461107a565b92506110ec6020850161107a565b929592945050506040919091013590565b6000806040838503121561111057600080fd5b6111198361107a565b91506020830135801515811461112e57600080fd5b809150509250929050565b60006020828403121561114b57600080fd5b5035919050565b60006020828403121561116457600080fd5b61116d8261107a565b9392505050565b6000806040838503121561118757600080fd5b6111908361107a565b915061119e6020840161107a565b90509250929050565b600181811c908216806111bb57607f821691505b6020821081036111db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156103ef576103ef6111e1565b808201808211156103ef576103ef6111e156fea2646970667358221220e5975684a84508b0dc288c222337506658e0acacd5d205553334e75e6338365264736f6c634300081a0033
Deployed ByteCode
0x608060405234801561001057600080fd5b50600436106101375760003560e01c806342966c68116100b857806395d89b411161007c57806395d89b4114610297578063a457c2d71461029f578063a9059cbb146102b2578063dd62ed3e146102c5578063fe9fbb80146102fe578063ff1b636d1461032157600080fd5b806342966c68146102125780634838d16514610225578063704b6c021461024857806370a082311461025b57806379cc67901461028457600080fd5b8063313ce567116100ff578063313ce567146101b757806332cb6b0c146101c657806339509351146101d9578063404e5129146101ec57806340c10f19146101ff57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806323b872dd1461018f5780632d1fb389146101a2575b600080fd5b61014461034c565b604051610151919061102c565b60405180910390f35b61016d610168366004611096565b6103de565b6040519015158152602001610151565b6005545b604051908152602001610151565b61016d61019d3660046110c0565b6103f5565b6101b56101b03660046110fd565b6104aa565b005b60405160128152602001610151565b6101816b019d971e4fe8401e7400000081565b61016d6101e7366004611096565b61052f565b6101b56101fa3660046110fd565b610566565b61016d61020d366004611096565b6105e7565b6101b5610220366004611139565b6106cf565b61016d610233366004611152565b60026020526000908152604090205460ff1681565b6101b5610256366004611152565b61073b565b610181610269366004611152565b6001600160a01b031660009081526020819052604090205490565b6101b5610292366004611096565b61088d565b61014461098a565b61016d6102ad366004611096565b610999565b61016d6102c0366004611096565b610a32565b6101816102d3366004611174565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61016d61030c366004611152565b60036020526000908152604090205460ff1681565b600454610334906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b60606006805461035b906111a7565b80601f0160208091040260200160405190810160405280929190818152602001828054610387906111a7565b80156103d45780601f106103a9576101008083540402835291602001916103d4565b820191906000526020600020905b8154815290600101906020018083116103b757829003601f168201915b5050505050905090565b60006103eb338484610a3f565b5060015b92915050565b6000610402848484610b63565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561048b5760405162461bcd60e51b815260206004820152602760248201527f555344543a207472616e7366657220616d6f756e74206578636565647320616c6044820152666c6f77616e636560c81b60648201526084015b60405180910390fd5b61049f853361049a86856111f7565b610a3f565b506001949350505050565b6004546001600160a01b031633146105045760405162461bcd60e51b815260206004820152601f60248201527f555344543a20617574686f72697a6174696f6e206e6f7420616c6c6f776564006044820152606401610482565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103eb91859061049a90869061120a565b3360009081526003602052604090205460ff166105bc5760405162461bcd60e51b81526020600482015260146024820152731554d1150e881b9bdd08185d5d1a1bdc9a5e995960621b6044820152606401610482565b6001600160a01b03919091166000908152600260205260409020805460ff1916911515919091179055565b6000816105f360055490565b6105fd919061120a565b6b019d971e4fe8401e7400000010156106665760405162461bcd60e51b815260206004820152602560248201527f555344543a206d696e74696e6720776f756c6420657863656564206d617820736044820152647570706c7960d81b6064820152608401610482565b3360009081526003602052604090205460ff166106c55760405162461bcd60e51b815260206004820152601c60248201527f555344543a206e6f7420617574686f72697a656420746f206d696e74000000006044820152606401610482565b6103eb8383610e09565b3360009081526003602052604090205460ff1661072e5760405162461bcd60e51b815260206004820152601c60248201527f555344543a206e6f7420617574686f72697a656420746f206275726e000000006044820152606401610482565b6107383382610ee8565b50565b6004546001600160a01b031633146107955760405162461bcd60e51b815260206004820152601f60248201527f555344543a20617574686f72697a6174696f6e206e6f7420616c6c6f776564006044820152606401610482565b6004546001600160a01b038083169116036107f25760405162461bcd60e51b815260206004820152601d60248201527f555344543a2061646d696e2063616e6e6f74206265206368616e6765640000006044820152606401610482565b6001600160a01b0381166108535760405162461bcd60e51b815260206004820152602260248201527f555344543a2061646d696e2063616e6e6f74206265207a65726f206164647265604482015261737360f01b6064820152608401610482565b600480546001600160a01b039092166001600160a01b0319909216821790556000908152600360205260409020805460ff19166001179055565b3360009081526003602052604090205460ff166108ec5760405162461bcd60e51b815260206004820152601e60248201527f555344543a2063616c6c6572206973206e6f7420617574686f72697a656400006044820152606401610482565b6001600160a01b03821660009081526001602090815260408083203384529091529020548181101561096c5760405162461bcd60e51b815260206004820152602360248201527f555344543a206275726e20616d6f756e74206578636565647320616c6c6f77616044820152626e636560e81b6064820152608401610482565b61097b833361049a85856111f7565b6109858383610ee8565b505050565b60606007805461035b906111a7565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610a195760405162461bcd60e51b8152602060048201526024808201527f555344543a2064656372656173656420616c6c6f77616e63652062656c6f77206044820152637a65726f60e01b6064820152608401610482565b610a28338561049a86856111f7565b5060019392505050565b60006103eb338484610b63565b6001600160a01b038316610aa15760405162461bcd60e51b815260206004820152602360248201527f555344543a20617070726f76652066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610482565b6001600160a01b038216610b015760405162461bcd60e51b815260206004820152602160248201527f555344543a20617070726f766520746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610482565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610bc55760405162461bcd60e51b8152602060048201526024808201527f555344543a207472616e736665722066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610482565b6001600160a01b038216610c265760405162461bcd60e51b815260206004820152602260248201527f555344543a207472616e7366657220746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610482565b6001600160a01b03831660009081526002602052604090205460ff1615610c8f5760405162461bcd60e51b815260206004820152601b60248201527f555344543a2073656e64657220697320626c61636b6c697374656400000000006044820152606401610482565b6001600160a01b03821660009081526002602052604090205460ff1615610cf85760405162461bcd60e51b815260206004820152601e60248201527f555344543a20726563697069656e7420697320626c61636b6c697374656400006044820152606401610482565b6001600160a01b03831660009081526020819052604090205481811015610d6f5760405162461bcd60e51b815260206004820152602560248201527f555344543a207472616e7366657220616d6f756e7420657863656564732062616044820152646c616e636560d81b6064820152608401610482565b610d7982826111f7565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290610daf90849061120a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610dfb91815260200190565b60405180910390a350505050565b6001600160a01b038216610e5f5760405162461bcd60e51b815260206004820152601e60248201527f555344543a206d696e7420746f20746865207a65726f206164647265737300006044820152606401610482565b8060056000828254610e71919061120a565b90915550506001600160a01b03821660009081526020819052604081208054839290610e9e90849061120a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610f3e5760405162461bcd60e51b815260206004820181905260248201527f555344543a206275726e2066726f6d20746865207a65726f20616464726573736044820152606401610482565b6001600160a01b03821660009081526020819052604090205481811015610fb15760405162461bcd60e51b815260206004820152602160248201527f555344543a206275726e20616d6f756e7420657863656564732062616c616e636044820152606560f81b6064820152608401610482565b610fbb82826111f7565b6001600160a01b03841660009081526020819052604081209190915560058054849290610fe99084906111f7565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610b56565b602081526000825180602084015260005b8181101561105a576020818601810151604086840101520161103d565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461109157600080fd5b919050565b600080604083850312156110a957600080fd5b6110b28361107a565b946020939093013593505050565b6000806000606084860312156110d557600080fd5b6110de8461107a565b92506110ec6020850161107a565b929592945050506040919091013590565b6000806040838503121561111057600080fd5b6111198361107a565b91506020830135801515811461112e57600080fd5b809150509250929050565b60006020828403121561114b57600080fd5b5035919050565b60006020828403121561116457600080fd5b61116d8261107a565b9392505050565b6000806040838503121561118757600080fd5b6111908361107a565b915061119e6020840161107a565b90509250929050565b600181811c908216806111bb57607f821691505b6020821081036111db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156103ef576103ef6111e1565b808201808211156103ef576103ef6111e156fea2646970667358221220e5975684a84508b0dc288c222337506658e0acacd5d205553334e75e6338365264736f6c634300081a0033