@etherisc/gif-contracts
Version:
This repository holds the GIF core contracts and tools to develop, test and deploy GIF instances.
1,337 lines • 219 kB
JSON
{
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [],
"name": "INITIAL_SUPPLY",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "NAME",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "SYMBOL",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"allSourcePaths": {
"12": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC20/ERC20.sol",
"13": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC20/IERC20.sol",
"14": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC20/extensions/IERC20Metadata.sol",
"22": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Context.sol",
"92": "contracts/test/TestCoin.sol"
},
"ast": {
"absolutePath": "contracts/test/TestCoin.sol",
"exportedSymbols": {
"Context": [
24074
],
"ERC20": [
21536
],
"IERC20": [
18510
],
"IERC20Metadata": [
27166
],
"TestCoin": [
15321
],
"TestCoinX": [
15349
]
},
"id": 15350,
"license": "Apache-2.0",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 15292,
"literals": [
"solidity",
"0.8",
".2"
],
"nodeType": "PragmaDirective",
"src": "39:22:92"
},
{
"absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC20/ERC20.sol",
"file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
"id": 15293,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 15350,
"sourceUnit": 21537,
"src": "63:55:92",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 15294,
"name": "ERC20",
"nodeType": "IdentifierPath",
"referencedDeclaration": 21536,
"src": "141:5:92"
},
"id": 15295,
"nodeType": "InheritanceSpecifier",
"src": "141:5:92"
}
],
"contractDependencies": [
18510,
21536,
24074,
27166
],
"contractKind": "contract",
"fullyImplemented": true,
"id": 15321,
"linearizedBaseContracts": [
15321,
21536,
27166,
18510,
24074
],
"name": "TestCoin",
"nameLocation": "129:8:92",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"functionSelector": "a3f4df7e",
"id": 15298,
"mutability": "constant",
"name": "NAME",
"nameLocation": "177:4:92",
"nodeType": "VariableDeclaration",
"scope": 15321,
"src": "154:42:92",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 15296,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "154:6:92",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": {
"hexValue": "546573742044756d6d79",
"id": 15297,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "184:12:92",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_d92c7e80c7e0511acb00e5cc9dfd1dfa061ae58fd11b1e7b920c4ff279ba2149",
"typeString": "literal_string \"Test Dummy\""
},
"value": "Test Dummy"
},
"visibility": "public"
},
{
"constant": true,
"functionSelector": "f76f8d78",
"id": 15301,
"mutability": "constant",
"name": "SYMBOL",
"nameLocation": "225:6:92",
"nodeType": "VariableDeclaration",
"scope": 15321,
"src": "202:37:92",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 15299,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "202:6:92",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": {
"hexValue": "544459",
"id": 15300,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "234:5:92",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_004af10049653c704ac6f1b2bc023dd9f0dfb627aec0912ea505bfdd2845eef3",
"typeString": "literal_string \"TDY\""
},
"value": "TDY"
},
"visibility": "public"
},
{
"constant": true,
"functionSelector": "2ff2e9dc",
"id": 15306,
"mutability": "constant",
"name": "INITIAL_SUPPLY",
"nameLocation": "270:14:92",
"nodeType": "VariableDeclaration",
"scope": 15321,
"src": "246:47:92",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 15302,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "246:7:92",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": {
"commonType": {
"typeIdentifier": "t_rational_1000000000000000000000000_by_1",
"typeString": "int_const 1000000000000000000000000"
},
"id": 15305,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"leftExpression": {
"hexValue": "3130",
"id": 15303,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "287:2:92",
"typeDescriptions": {
"typeIdentifier": "t_rational_10_by_1",
"typeString": "int_const 10"
},
"value": "10"
},
"nodeType": "BinaryOperation",
"operator": "**",
"rightExpression": {
"hexValue": "3234",
"id": 15304,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "291:2:92",
"typeDescriptions": {
"typeIdentifier": "t_rational_24_by_1",
"typeString": "int_const 24"
},
"value": "24"
},
"src": "287:6:92",
"typeDescriptions": {
"typeIdentifier": "t_rational_1000000000000000000000000_by_1",
"typeString": "int_const 1000000000000000000000000"
}
},
"visibility": "public"
},
{
"body": {
"id": 15319,
"nodeType": "Block",
"src": "346:86:92",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 15314,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 24064,
"src": "375:10:92",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 15315,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "375:12:92",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 15316,
"name": "INITIAL_SUPPLY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 15306,
"src": "401:14:92",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 15313,
"name": "_mint",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21353,
"src": "356:5:92",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 15317,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "356:69:92",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 15318,
"nodeType": "ExpressionStatement",
"src": "356:69:92"
}
]
},
"id": 15320,
"implemented": true,
"kind": "constructor",
"modifiers": [
{
"arguments": [
{
"id": 15309,
"name": "NAME",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 15298,
"src": "328:4:92",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"id": 15310,
"name": "SYMBOL",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 15301,
"src": "334:6:92",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"id": 15311,
"modifierName": {
"id": 15308,
"name": "ERC20",
"nodeType": "IdentifierPath",
"referencedDeclaration": 21536,
"src": "322:5:92"
},
"nodeType": "ModifierInvocation",
"src": "322:19:92"
}
],
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 15307,
"nodeType": "ParameterList",
"parameters": [],
"src": "311:2:92"
},
"returnParameters": {
"id": 15312,
"nodeType": "ParameterList",
"parameters": [],
"src": "346:0:92"
},
"scope": 15321,
"src": "300:132:92",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
}
],
"scope": 15350,
"src": "120:314:92"
},
{
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 15322,
"name": "ERC20",
"nodeType": "IdentifierPath",
"referencedDeclaration": 21536,
"src": "458:5:92"
},
"id": 15323,
"nodeType": "InheritanceSpecifier",
"src": "458:5:92"
}
],
"contractDependencies": [
18510,
21536,
24074,
27166
],
"contractKind": "contract",
"fullyImplemented": true,
"id": 15349,
"linearizedBaseContracts": [
15349,
21536,
27166,
18510,
24074
],
"name": "TestCoinX",
"nameLocation": "445:9:92",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"functionSelector": "a3f4df7e",
"id": 15326,
"mutability": "constant",
"name": "NAME",
"nameLocation": "494:4:92",
"nodeType": "VariableDeclaration",
"scope": 15349,
"src": "471:44:92",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 15324,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "471:6:92",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": {
"hexValue": "546573742044756d6d792058",
"id": 15325,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "501:14:92",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_a30ac64b7d6e6ff167c2e60e6a29fb2c9ee94154569a03703430822e25699e9b",
"typeString": "literal_string \"Test Dummy X\""
},
"value": "Test Dummy X"
},
"visibility": "public"
},
{
"constant": true,
"functionSelector": "f76f8d78",
"id": 15329,
"mutability": "constant",
"name": "SYMBOL",
"nameLocation": "544:6:92",
"nodeType": "VariableDeclaration",
"scope": 15349,
"src": "521:37:92",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 15327,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "521:6:92",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": {
"hexValue": "544458",
"id": 15328,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "553:5:92",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_511eea2d30970d4c48faad7052d30e893c13eff5d8ac0180bdf8d28babd3c979",
"typeString": "literal_string \"TDX\""
},
"value": "TDX"
},
"visibility": "public"
},
{
"constant": true,
"functionSelector": "2ff2e9dc",
"id": 15334,
"mutability": "constant",
"name": "INITIAL_SUPPLY",
"nameLocation": "589:14:92",
"nodeType": "VariableDeclaration",
"scope": 15349,
"src": "565:47:92",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 15330,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "565:7:92",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": {
"commonType": {
"typeIdentifier": "t_rational_1000000000000000000000000_by_1",
"typeString": "int_const 1000000000000000000000000"
},
"id": 15333,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"leftExpression": {
"hexValue": "3130",
"id": 15331,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "606:2:92",
"typeDescriptions": {
"typeIdentifier": "t_rational_10_by_1",
"typeString": "int_const 10"
},
"value": "10"
},
"nodeType": "BinaryOperation",
"operator": "**",
"rightExpression": {
"hexValue": "3234",
"id": 15332,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "610:2:92",
"typeDescriptions": {
"typeIdentifier": "t_rational_24_by_1",
"typeString": "int_const 24"
},
"value": "24"
},
"src": "606:6:92",
"typeDescriptions": {
"typeIdentifier": "t_rational_1000000000000000000000000_by_1",
"typeString": "int_const 1000000000000000000000000"
}
},
"visibility": "public"
},
{
"body": {
"id": 15347,
"nodeType": "Block",
"src": "665:86:92",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 15342,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 24064,
"src": "694:10:92",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 15343,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "694:12:92",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 15344,
"name": "INITIAL_SUPPLY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 15334,
"src": "720:14:92",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 15341,
"name": "_mint",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21353,
"src": "675:5:92",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 15345,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "675:69:92",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 15346,
"nodeType": "ExpressionStatement",
"src": "675:69:92"
}
]
},
"id": 15348,
"implemented": true,
"kind": "constructor",
"modifiers": [
{
"arguments": [
{
"id": 15337,
"name": "NAME",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 15326,
"src": "647:4:92",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"id": 15338,
"name": "SYMBOL",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 15329,
"src": "653:6:92",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"id": 15339,
"modifierName": {
"id": 15336,
"name": "ERC20",
"nodeType": "IdentifierPath",
"referencedDeclaration": 21536,
"src": "641:5:92"
},
"nodeType": "ModifierInvocation",
"src": "641:19:92"
}
],
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 15335,
"nodeType": "ParameterList",
"parameters": [],
"src": "630:2:92"
},
"returnParameters": {
"id": 15340,
"nodeType": "ParameterList",
"parameters": [],
"src": "665:0:92"
},
"scope": 15349,
"src": "619:132:92",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
}
],
"scope": 15350,
"src": "436:317:92"
}
],
"src": "39:715:92"
},
"bytecode": "60806040523480156200001157600080fd5b506040518060400160405280600a815260200169546573742044756d6d7960b01b8152506040518060400160405280600381526020016254445960e81b81525081600390805190602001906200006992919062000199565b5080516200007f90600490602084019062000199565b505050620000a762000096620000ad60201b60201c565b69d3c21bcecceda1000000620000b1565b620002a1565b3390565b6001600160a01b0382166200010c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600260008282546200012091906200023f565b90915550506001600160a01b038216600090815260208190526040812080548392906200014f9084906200023f565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001a79062000264565b90600052602060002090601f016020900481019282620001cb576000855562000216565b82601f10620001e657805160ff191683800117855562000216565b8280016001018555821562000216579182015b8281111562000216578251825591602001919060010190620001f9565b506200022492915062000228565b5090565b5b8082111562000224576000815560010162000229565b600082198211156200025f57634e487b7160e01b81526011600452602481fd5b500190565b6002810460018216806200027957607f821691505b602082108114156200029b57634e487b7160e01b600052602260045260246000fd5b50919050565b61092080620002b16000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a457c2d711610066578063a457c2d7146101cc578063a9059cbb146101df578063dd62ed3e146101f2578063f76f8d7814610205576100ea565b806370a082311461018857806395d89b411461019b578063a3f4df7e146101a3576100ea565b806323b872dd116100c857806323b872dd146101425780632ff2e9dc14610155578063313ce567146101665780633950935114610175576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f7610227565b6040516101049190610838565b60405180910390f35b61012061011b36600461080f565b6102b9565b6040519015158152602001610104565b6002545b604051908152602001610104565b6101206101503660046107d4565b6102d1565b61013469d3c21bcecceda100000081565b60405160128152602001610104565b61012061018336600461080f565b6102f5565b610134610196366004610781565b610317565b6100f7610336565b6100f76040518060400160405280600a815260200169546573742044756d6d7960b01b81525081565b6101206101da36600461080f565b610345565b6101206101ed36600461080f565b6103c5565b6101346102003660046107a2565b6103d3565b6100f76040518060400160405280600381526020016254445960e81b81525081565b606060038054610236906108af565b80601f0160208091040260200160405190810160405280929190818152602001828054610262906108af565b80156102af5780601f10610284576101008083540402835291602001916102af565b820191906000526020600020905b81548152906001019060200180831161029257829003601f168201915b5050505050905090565b6000336102c78185856103fe565b5060019392505050565b6000336102df858285610522565b6102ea85858561059c565b506001949350505050565b6000336102c781858561030883836103d3565b610312919061088b565b6103fe565b6001600160a01b0381166000908152602081905260409020545b919050565b606060048054610236906108af565b6000338161035382866103d3565b9050838110156103b85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102ea82868684036103fe565b6000336102c781858561059c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104605760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103af565b6001600160a01b0382166104c15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103af565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061052e84846103d3565b9050600019811461059657818110156105895760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103af565b61059684848484036103fe565b50505050565b6001600160a01b0383166106005760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103af565b6001600160a01b0382166106625760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103af565b6001600160a01b038316600090815260208190526040902054818110156106da5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103af565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061071190849061088b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161075d91815260200190565b60405180910390a3610596565b80356001600160a01b038116811461033157600080fd5b600060208284031215610792578081fd5b61079b8261076a565b9392505050565b600080604083850312156107b4578081fd5b6107bd8361076a565b91506107cb6020840161076a565b90509250929050565b6000806000606084860312156107e8578081fd5b6107f18461076a565b92506107ff6020850161076a565b9150604084013590509250925092565b60008060408385031215610821578182fd5b61082a8361076a565b946020939093013593505050565b6000602080835283518082850152825b8181101561086457858101830151858201604001528201610848565b818111156108755783604083870101525b50601f01601f1916929092016040019392505050565b600082198211156108aa57634e487b7160e01b81526011600452602481fd5b500190565b6002810460018216806108c357607f821691505b602082108114156108e457634e487b7160e01b600052602260045260246000fd5b5091905056fea264697066735822122028b4a6ac1bf8359950d95561233648940f59f36ccadad5b0cf0e0158da49949464736f6c63430008020033",
"bytecodeSha1": "ee7c840207398804b56837c21bc223a84f70f585",
"compiler": {
"evm_version": "istanbul",
"optimizer": {
"enabled": true,
"runs": 200
},
"version": "0.8.2+commit.661d1103"
},
"contractName": "TestCoin",
"coverageMap": {
"branches": {
"12": {
"ERC20._approve": {
"30": [
10241,
10260,
true
],
"31": [
10319,
10340,
true
]
},
"ERC20._spendAllowance": {
"32": [
10957,
10994,
false
],
"33": [
11018,
11044,
true
]
},
"ERC20._transfer": {
"34": [
7601,
7619,
true
],
"35": [
7679,
7695,
true
],
"36": [
7850,
7871,
true
]
},
"ERC20.decreaseAllowance": {
"29": [
6811,
6846,
true
]
}
},
"13": {},
"14": {},
"22": {},
"92": {}
},
"statements": {
"12": {
"ERC20._approve": {
"16": [
10233,
10301
],
"17": [
10311,
10379
],
"18": [
10390,
10426
],
"19": [
10436,
10473
]
},
"ERC20._spendAllowance": {
"20": [
11010,
11078
],
"21": [
11120,
11171
]
},
"ERC20._transfer": {
"22": [
7593,
7661
],
"23": [
7671,
7735
],
"24": [
7842,
7914
],
"25": [
7948,
7986
],
"26": [
8006,
8029
],
"27": [
8040,
8071
],
"28": [
8082,
8119
]
},
"ERC20.allowance": {
"15": [
4084,
4118
]
},
"ERC20.approve": {
"4": [
4570,
4602
],
"5": [
4612,
4623
]
},
"ERC20.balanceOf": {
"10": [
3501,
3526
]
},
"ERC20.decimals": {
"1": [
3168,
3177
]
},
"ERC20.decreaseAllowance": {
"12": [
6803,
6888
],
"13": [
6922,
6982
]
},
"ERC20.increaseAllowance": {
"9": [
6015,
6079
]
},
"ERC20.name": {
"2": [
2235,
2247
]
},
"ERC20.symbol": {
"11": [
2448,
2462
]
},
"ERC20.totalSupply": {
"0": [
3324,
3343
]
},
"ERC20.transfer": {
"14": [
3862,
3890
]
},
"ERC20.transferFrom": {
"6": [
5375,
5413
],
"7": [
5423,
5450
],
"8": [
5460,
5471
]
}
},
"13": {},
"14": {},
"22": {
"Context._msgSender": {
"3": [
712,
729
]
}
},
"92": {}
}
},
"dependencies": [
"OpenZeppelin/openzeppelin-contracts@4.7.3/Context",
"OpenZeppelin/openzeppelin-contracts@4.7.3/ERC20",
"OpenZeppelin/openzeppelin-contracts@4.7.3/IERC20",
"OpenZeppelin/openzeppelin-contracts@4.7.3/IERC20Metadata"
],
"deployedBytecode": "608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a457c2d711610066578063a457c2d7146101cc578063a9059cbb146101df578063dd62ed3e146101f2578063f76f8d7814610205576100ea565b806370a082311461018857806395d89b411461019b578063a3f4df7e146101a3576100ea565b806323b872dd116100c857806323b872dd146101425780632ff2e9dc14610155578063313ce567146101665780633950935114610175576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f7610227565b6040516101049190610838565b60405180910390f35b61012061011b36600461080f565b6102b9565b6040519015158152602001610104565b6002545b604051908152602001610104565b6101206101503660046107d4565b6102d1565b61013469d3c21bcecceda100000081565b60405160128152602001610104565b61012061018336600461080f565b6102f5565b610134610196366004610781565b610317565b6100f7610336565b6100f76040518060400160405280600a815260200169546573742044756d6d7960b01b81525081565b6101206101da36600461080f565b610345565b6101206101ed36600461080f565b6103c5565b6101346102003660046107a2565b6103d3565b6100f76040518060400160405280600381526020016254445960e81b81525081565b606060038054610236906108af565b80601f0160208091040260200160405190810160405280929190818152602001828054610262906108af565b80156102af5780601f10610284576101008083540402835291602001916102af565b820191906000526020600020905b81548152906001019060200180831161029257829003601f168201915b5050505050905090565b6000336102c78185856103fe565b5060019392505050565b6000336102df858285610522565b6102ea85858561059c565b506001949350505050565b6000336102c781858561030883836103d3565b610312919061088b565b6103fe565b6001600160a01b0381166000908152602081905260409020545b919050565b606060048054610236906108af565b6000338161035382866103d3565b9050838110156103b85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102ea82868684036103fe565b6000336102c781858561059c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104605760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103af565b6001600160a01b0382166104c15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103af565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061052e84846103d3565b9050600019811461059657818110156105895760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103af565b61059684848484036103fe565b50505050565b6001600160a01b0383166106005760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103af565b6001600160a01b0382166106625760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103af565b6001600160a01b038316600090815260208190526040902054818110156106da5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103af565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061071190849061088b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161075d91815260200190565b60405180910390a3610596565b80356001600160a01b038116811461033157600080fd5b600060208284031215610792578081fd5b61079b8261076a565b9392505050565b600080604083850312156107b4578081fd5b6107bd8361076a565b91506107cb6020840161076a565b90509250929050565b6000806000606084860312156107e8578081fd5b6107f18461076a565b92506107ff6020850161076a565b9150604084013590509250925092565b60008060408385031215610821578182fd5b61082a8361076a565b946020939093013593505050565b6000602080835283518082850152825b8181101561086457858101830151858201604001528201610848565b818111156108755783604083870101525b50601f01601f1916929092016040019392505050565b600082198211156108aa57634e487b7160e01b81526011600452602481fd5b500190565b6002810460018216806108c357607f821691505b602082108114156108e457634e487b7160e01b600052602260045260246000fd5b5091905056fea264697066735822122028b4a6ac1bf8359950d95561233648940f59f36ccadad5b0cf0e0158da49949464736f6c63430008020033",
"deployedSourceMap": "120:314:92:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98:12;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4433:197;;;;;;:::i;:::-;;:::i;:::-;;;1445:14:103;;1438:22;1420:41;;1408:2;1393:18;4433:197:12;1375:92:103;3244:106:12;3331:12;;3244:106;;;5015:25:103;;;5003:2;4988:18;3244:106:12;4970:76:103;5192:286:12;;;;;;:::i;:::-;;:::i;246:47:92:-;;287:6;246:47;;3093:91:12;;;3175:2;5193:36:103;;5181:2;5166:18;3093:91:12;5148:87:103;5873:234:12;;;;;;:::i;:::-;;:::i;3408:125::-;;;;;;:::i;:::-;;:::i;2367:102::-;;;:::i;154:42:92:-;;;;;;;;;;;;;;;-1:-1:-1;;;154:42:92;;;;;6594:427:12;;;;;;:::i;:::-;;:::i;3729:189::-;;;;;;:::i;:::-;;:::i;3976:149::-;;;;;;:::i;:::-;;:::i;202:37:92:-;;;;;;;;;;;;;;;-1:-1:-1;;;202:37:92;;;;;2156:98:12;2210:13;2242:5;2235:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98;:::o;4433:197::-;4516:4;719:10:22;4570:32:12;719:10:22;4586:7:12;4595:6;4570:8;:32::i;:::-;-1:-1:-1;4619:4:12;;4433:197;-1:-1:-1;;;4433:197:12:o;5192:286::-;5319:4;719:10:22;5375:38:12;5391:4;719:10:22;5406:6:12;5375:15;:38::i;:::-;5423:27;5433:4;5439:2;5443:6;5423:9;:27::i;:::-;-1:-1:-1;5467:4:12;;5192:286;-1:-1:-1;;;;5192:286:12:o;5873:234::-;5961:4;719:10:22;6015:64:12;719:10:22;6031:7:12;6068:10;6040:25;719:10:22;6031:7:12;6040:9;:25: