secure-transac-contracts 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/build/contracts/AccessControl.json +4579 -0
  2. package/build/contracts/Context.json +356 -0
  3. package/build/contracts/CreditSystem.json +6037 -0
  4. package/build/contracts/ECDSA.json +4734 -0
  5. package/build/contracts/EIP712.json +3021 -0
  6. package/build/contracts/ERC165.json +352 -0
  7. package/build/contracts/ERC20.json +6816 -0
  8. package/build/contracts/ERC20Permit.json +2658 -0
  9. package/build/contracts/ERC721.json +12779 -0
  10. package/build/contracts/ERC721Utils.json +1058 -0
  11. package/build/contracts/Groth16Verifier.json +6298 -0
  12. package/build/contracts/Guardian.json +1116 -0
  13. package/build/contracts/IERC1155Errors.json +1687 -0
  14. package/build/contracts/IERC165.json +197 -0
  15. package/build/contracts/IERC20.json +1162 -0
  16. package/build/contracts/IERC20Errors.json +1662 -0
  17. package/build/contracts/IERC20Metadata.json +574 -0
  18. package/build/contracts/IERC20Permit.json +546 -0
  19. package/build/contracts/IERC5267.json +392 -0
  20. package/build/contracts/IERC721.json +1729 -0
  21. package/build/contracts/IERC721Errors.json +1694 -0
  22. package/build/contracts/IERC721Metadata.json +728 -0
  23. package/build/contracts/IERC721Receiver.json +296 -0
  24. package/build/contracts/IGuardian.json +215 -0
  25. package/build/contracts/ITrustRegistry.json +6767 -0
  26. package/build/contracts/IdentityVault.json +11584 -0
  27. package/build/contracts/Math.json +23115 -0
  28. package/build/contracts/MessageHashUtils.json +1668 -0
  29. package/build/contracts/Nonces.json +865 -0
  30. package/build/contracts/Ownable.json +1859 -0
  31. package/build/contracts/Panic.json +798 -0
  32. package/build/contracts/ReportingSystem.json +2787 -0
  33. package/build/contracts/SafeCast.json +21592 -0
  34. package/build/contracts/ScoringSystem.json +11245 -0
  35. package/build/contracts/SecureTransacSBT.json +18823 -0
  36. package/build/contracts/SecureTransacToken.json +19225 -0
  37. package/build/contracts/SecureVault.json +12890 -0
  38. package/build/contracts/ShortStrings.json +2852 -0
  39. package/build/contracts/SignedMath.json +1915 -0
  40. package/build/contracts/StorageSlot.json +1773 -0
  41. package/build/contracts/Strings.json +19001 -0
  42. package/build/contracts/TransactionLogger.json +5325 -0
  43. package/build/contracts/TrustDAO.json +23850 -0
  44. package/build/contracts/TrustRegistry.json +10948 -0
  45. package/build/contracts/VerificationRegistry.json +12811 -0
  46. package/build/contracts/ZKIdentityVerifier.json +13979 -0
  47. package/contracts/AccessControl.sol +34 -0
  48. package/contracts/CreditSystem.sol +48 -0
  49. package/contracts/Guardian.sol +33 -0
  50. package/contracts/IGuardian.sol +7 -0
  51. package/contracts/IdentityVault.sol +57 -0
  52. package/contracts/ReportingSystem.sol +14 -0
  53. package/contracts/ScoringSystem.sol +71 -0
  54. package/contracts/SecureTransacSBT.sol +72 -0
  55. package/contracts/SecureTransacToken.sol +20 -0
  56. package/contracts/SecureVault.sol +24 -0
  57. package/contracts/TransactionLogger.sol +12 -0
  58. package/contracts/TrustDAO.sol +158 -0
  59. package/contracts/TrustRegistry.sol +23 -0
  60. package/contracts/VerificationRegistry.sol +51 -0
  61. package/contracts/ZKIdentityVerifier.sol +38 -0
  62. package/contracts/ZKScoreVerifier.sol +175 -0
  63. package/package.json +32 -0
@@ -0,0 +1,3021 @@
1
+ {
2
+ "contractName": "EIP712",
3
+ "abi": [
4
+ {
5
+ "inputs": [],
6
+ "name": "InvalidShortString",
7
+ "type": "error"
8
+ },
9
+ {
10
+ "inputs": [
11
+ {
12
+ "internalType": "string",
13
+ "name": "str",
14
+ "type": "string"
15
+ }
16
+ ],
17
+ "name": "StringTooLong",
18
+ "type": "error"
19
+ },
20
+ {
21
+ "anonymous": false,
22
+ "inputs": [],
23
+ "name": "EIP712DomainChanged",
24
+ "type": "event"
25
+ },
26
+ {
27
+ "inputs": [],
28
+ "name": "eip712Domain",
29
+ "outputs": [
30
+ {
31
+ "internalType": "bytes1",
32
+ "name": "fields",
33
+ "type": "bytes1"
34
+ },
35
+ {
36
+ "internalType": "string",
37
+ "name": "name",
38
+ "type": "string"
39
+ },
40
+ {
41
+ "internalType": "string",
42
+ "name": "version",
43
+ "type": "string"
44
+ },
45
+ {
46
+ "internalType": "uint256",
47
+ "name": "chainId",
48
+ "type": "uint256"
49
+ },
50
+ {
51
+ "internalType": "address",
52
+ "name": "verifyingContract",
53
+ "type": "address"
54
+ },
55
+ {
56
+ "internalType": "bytes32",
57
+ "name": "salt",
58
+ "type": "bytes32"
59
+ },
60
+ {
61
+ "internalType": "uint256[]",
62
+ "name": "extensions",
63
+ "type": "uint256[]"
64
+ }
65
+ ],
66
+ "stateMutability": "view",
67
+ "type": "function"
68
+ }
69
+ ],
70
+ "metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\",\"details\":\"https://eips.ethereum.org/EIPS/eip-712[EIP-712] is a standard for hashing and signing of typed structured data. The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to produce the hash of their typed data using a combination of `abi.encode` and `keccak256`. This contract implements the EIP-712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA ({_hashTypedDataV4}). The implementation of the domain separator was designed to be as efficient as possible while still properly updating the chain id to protect against replay attacks on an eventual fork of the chain. NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask]. NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\",\"events\":{\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the domain separator and parameter caches. The meaning of `name` and `version` is specified in https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP-712]: - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol. - `version`: the current major version of the signing domain. NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart contract upgrade].\"},\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":\"EIP712\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae\",\"dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x1fcf8cceb1a67e6c8512267e780933c4a3f63ef44756e6c818fda79be51c8402\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://617d7d57f6f9cd449068b4d23daf485676d083aae648e038d05eb3a13291de35\",\"dweb:/ipfs/QmPADWPiGaSzZDFNpFEUx4ZPqhzPkYncBpHyTfAGcfsqzy\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x17fc4574e07105b0180ef61f1b3cacd1820a3d37f29a4af1018d0a253c6399b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be46b3e1362dbcadbbb45ec92cdea849dceccea3e2795237f00c123aeae44746\",\"dweb:/ipfs/QmSpyB8mud6xKiZaQnVtEPrxtTHGtyBgjs1PCYk4f2gesd\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}",
71
+ "bytecode": "0x",
72
+ "deployedBytecode": "0x",
73
+ "immutableReferences": {},
74
+ "generatedSources": [],
75
+ "deployedGeneratedSources": [],
76
+ "sourceMap": "",
77
+ "deployedSourceMap": "",
78
+ "source": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (utils/cryptography/EIP712.sol)\n\npragma solidity ^0.8.20;\n\nimport {MessageHashUtils} from \"./MessageHashUtils.sol\";\nimport {ShortStrings, ShortString} from \"../ShortStrings.sol\";\nimport {IERC5267} from \"../../interfaces/IERC5267.sol\";\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP-712] is a standard for hashing and signing of typed structured data.\n *\n * The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose\n * encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract\n * does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to\n * produce the hash of their typed data using a combination of `abi.encode` and `keccak256`.\n *\n * This contract implements the EIP-712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n * ({_hashTypedDataV4}).\n *\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n * the chain id to protect against replay attacks on an eventual fork of the chain.\n *\n * NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n *\n * NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain\n * separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the\n * separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\n *\n * @custom:oz-upgrades-unsafe-allow state-variable-immutable\n */\nabstract contract EIP712 is IERC5267 {\n using ShortStrings for *;\n\n bytes32 private constant TYPE_HASH =\n keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\");\n\n // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to\n // invalidate the cached domain separator if the chain id changes.\n bytes32 private immutable _cachedDomainSeparator;\n uint256 private immutable _cachedChainId;\n address private immutable _cachedThis;\n\n bytes32 private immutable _hashedName;\n bytes32 private immutable _hashedVersion;\n\n ShortString private immutable _name;\n ShortString private immutable _version;\n // slither-disable-next-line constable-states\n string private _nameFallback;\n // slither-disable-next-line constable-states\n string private _versionFallback;\n\n /**\n * @dev Initializes the domain separator and parameter caches.\n *\n * The meaning of `name` and `version` is specified in\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP-712]:\n *\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n * - `version`: the current major version of the signing domain.\n *\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n * contract upgrade].\n */\n constructor(string memory name, string memory version) {\n _name = name.toShortStringWithFallback(_nameFallback);\n _version = version.toShortStringWithFallback(_versionFallback);\n _hashedName = keccak256(bytes(name));\n _hashedVersion = keccak256(bytes(version));\n\n _cachedChainId = block.chainid;\n _cachedDomainSeparator = _buildDomainSeparator();\n _cachedThis = address(this);\n }\n\n /**\n * @dev Returns the domain separator for the current chain.\n */\n function _domainSeparatorV4() internal view returns (bytes32) {\n if (address(this) == _cachedThis && block.chainid == _cachedChainId) {\n return _cachedDomainSeparator;\n } else {\n return _buildDomainSeparator();\n }\n }\n\n function _buildDomainSeparator() private view returns (bytes32) {\n return keccak256(abi.encode(TYPE_HASH, _hashedName, _hashedVersion, block.chainid, address(this)));\n }\n\n /**\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n * function returns the hash of the fully encoded EIP712 message for this domain.\n *\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n *\n * ```solidity\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n * keccak256(\"Mail(address to,string contents)\"),\n * mailTo,\n * keccak256(bytes(mailContents))\n * )));\n * address signer = ECDSA.recover(digest, signature);\n * ```\n */\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\n return MessageHashUtils.toTypedDataHash(_domainSeparatorV4(), structHash);\n }\n\n /// @inheritdoc IERC5267\n function eip712Domain()\n public\n view\n virtual\n returns (\n bytes1 fields,\n string memory name,\n string memory version,\n uint256 chainId,\n address verifyingContract,\n bytes32 salt,\n uint256[] memory extensions\n )\n {\n return (\n hex\"0f\", // 01111\n _EIP712Name(),\n _EIP712Version(),\n block.chainid,\n address(this),\n bytes32(0),\n new uint256[](0)\n );\n }\n\n /**\n * @dev The name parameter for the EIP712 domain.\n *\n * NOTE: By default this function reads _name which is an immutable value.\n * It only reads from storage if necessary (in case the value is too large to fit in a ShortString).\n */\n // solhint-disable-next-line func-name-mixedcase\n function _EIP712Name() internal view returns (string memory) {\n return _name.toStringWithFallback(_nameFallback);\n }\n\n /**\n * @dev The version parameter for the EIP712 domain.\n *\n * NOTE: By default this function reads _version which is an immutable value.\n * It only reads from storage if necessary (in case the value is too large to fit in a ShortString).\n */\n // solhint-disable-next-line func-name-mixedcase\n function _EIP712Version() internal view returns (string memory) {\n return _version.toStringWithFallback(_versionFallback);\n }\n}\n",
79
+ "sourcePath": "@openzeppelin\\contracts\\utils\\cryptography\\EIP712.sol",
80
+ "ast": {
81
+ "absolutePath": "@openzeppelin/contracts/utils/cryptography/EIP712.sol",
82
+ "exportedSymbols": {
83
+ "EIP712": [
84
+ 4783
85
+ ],
86
+ "IERC5267": [
87
+ 172
88
+ ],
89
+ "MessageHashUtils": [
90
+ 4869
91
+ ],
92
+ "ShortString": [
93
+ 2471
94
+ ],
95
+ "ShortStrings": [
96
+ 2682
97
+ ]
98
+ },
99
+ "id": 4784,
100
+ "license": "MIT",
101
+ "nodeType": "SourceUnit",
102
+ "nodes": [
103
+ {
104
+ "id": 4558,
105
+ "literals": [
106
+ "solidity",
107
+ "^",
108
+ "0.8",
109
+ ".20"
110
+ ],
111
+ "nodeType": "PragmaDirective",
112
+ "src": "113:24:20"
113
+ },
114
+ {
115
+ "absolutePath": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol",
116
+ "file": "./MessageHashUtils.sol",
117
+ "id": 4560,
118
+ "nameLocation": "-1:-1:-1",
119
+ "nodeType": "ImportDirective",
120
+ "scope": 4784,
121
+ "sourceUnit": 4870,
122
+ "src": "139:56:20",
123
+ "symbolAliases": [
124
+ {
125
+ "foreign": {
126
+ "id": 4559,
127
+ "name": "MessageHashUtils",
128
+ "nodeType": "Identifier",
129
+ "overloadedDeclarations": [],
130
+ "referencedDeclaration": 4869,
131
+ "src": "147:16:20",
132
+ "typeDescriptions": {}
133
+ },
134
+ "nameLocation": "-1:-1:-1"
135
+ }
136
+ ],
137
+ "unitAlias": ""
138
+ },
139
+ {
140
+ "absolutePath": "@openzeppelin/contracts/utils/ShortStrings.sol",
141
+ "file": "../ShortStrings.sol",
142
+ "id": 4563,
143
+ "nameLocation": "-1:-1:-1",
144
+ "nodeType": "ImportDirective",
145
+ "scope": 4784,
146
+ "sourceUnit": 2683,
147
+ "src": "196:62:20",
148
+ "symbolAliases": [
149
+ {
150
+ "foreign": {
151
+ "id": 4561,
152
+ "name": "ShortStrings",
153
+ "nodeType": "Identifier",
154
+ "overloadedDeclarations": [],
155
+ "referencedDeclaration": 2682,
156
+ "src": "204:12:20",
157
+ "typeDescriptions": {}
158
+ },
159
+ "nameLocation": "-1:-1:-1"
160
+ },
161
+ {
162
+ "foreign": {
163
+ "id": 4562,
164
+ "name": "ShortString",
165
+ "nodeType": "Identifier",
166
+ "overloadedDeclarations": [],
167
+ "referencedDeclaration": 2471,
168
+ "src": "218:11:20",
169
+ "typeDescriptions": {}
170
+ },
171
+ "nameLocation": "-1:-1:-1"
172
+ }
173
+ ],
174
+ "unitAlias": ""
175
+ },
176
+ {
177
+ "absolutePath": "@openzeppelin/contracts/interfaces/IERC5267.sol",
178
+ "file": "../../interfaces/IERC5267.sol",
179
+ "id": 4565,
180
+ "nameLocation": "-1:-1:-1",
181
+ "nodeType": "ImportDirective",
182
+ "scope": 4784,
183
+ "sourceUnit": 173,
184
+ "src": "259:55:20",
185
+ "symbolAliases": [
186
+ {
187
+ "foreign": {
188
+ "id": 4564,
189
+ "name": "IERC5267",
190
+ "nodeType": "Identifier",
191
+ "overloadedDeclarations": [],
192
+ "referencedDeclaration": 172,
193
+ "src": "267:8:20",
194
+ "typeDescriptions": {}
195
+ },
196
+ "nameLocation": "-1:-1:-1"
197
+ }
198
+ ],
199
+ "unitAlias": ""
200
+ },
201
+ {
202
+ "abstract": true,
203
+ "baseContracts": [
204
+ {
205
+ "baseName": {
206
+ "id": 4567,
207
+ "name": "IERC5267",
208
+ "nameLocations": [
209
+ "1988:8:20"
210
+ ],
211
+ "nodeType": "IdentifierPath",
212
+ "referencedDeclaration": 172,
213
+ "src": "1988:8:20"
214
+ },
215
+ "id": 4568,
216
+ "nodeType": "InheritanceSpecifier",
217
+ "src": "1988:8:20"
218
+ }
219
+ ],
220
+ "canonicalName": "EIP712",
221
+ "contractDependencies": [],
222
+ "contractKind": "contract",
223
+ "documentation": {
224
+ "id": 4566,
225
+ "nodeType": "StructuredDocumentation",
226
+ "src": "316:1643:20",
227
+ "text": " @dev https://eips.ethereum.org/EIPS/eip-712[EIP-712] is a standard for hashing and signing of typed structured data.\n The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose\n encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract\n does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to\n produce the hash of their typed data using a combination of `abi.encode` and `keccak256`.\n This contract implements the EIP-712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n ({_hashTypedDataV4}).\n The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n the chain id to protect against replay attacks on an eventual fork of the chain.\n NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain\n separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the\n separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\n @custom:oz-upgrades-unsafe-allow state-variable-immutable"
228
+ },
229
+ "fullyImplemented": true,
230
+ "id": 4783,
231
+ "linearizedBaseContracts": [
232
+ 4783,
233
+ 172
234
+ ],
235
+ "name": "EIP712",
236
+ "nameLocation": "1978:6:20",
237
+ "nodeType": "ContractDefinition",
238
+ "nodes": [
239
+ {
240
+ "global": false,
241
+ "id": 4570,
242
+ "libraryName": {
243
+ "id": 4569,
244
+ "name": "ShortStrings",
245
+ "nameLocations": [
246
+ "2009:12:20"
247
+ ],
248
+ "nodeType": "IdentifierPath",
249
+ "referencedDeclaration": 2682,
250
+ "src": "2009:12:20"
251
+ },
252
+ "nodeType": "UsingForDirective",
253
+ "src": "2003:25:20"
254
+ },
255
+ {
256
+ "constant": true,
257
+ "id": 4575,
258
+ "mutability": "constant",
259
+ "name": "TYPE_HASH",
260
+ "nameLocation": "2059:9:20",
261
+ "nodeType": "VariableDeclaration",
262
+ "scope": 4783,
263
+ "src": "2034:140:20",
264
+ "stateVariable": true,
265
+ "storageLocation": "default",
266
+ "typeDescriptions": {
267
+ "typeIdentifier": "t_bytes32",
268
+ "typeString": "bytes32"
269
+ },
270
+ "typeName": {
271
+ "id": 4571,
272
+ "name": "bytes32",
273
+ "nodeType": "ElementaryTypeName",
274
+ "src": "2034:7:20",
275
+ "typeDescriptions": {
276
+ "typeIdentifier": "t_bytes32",
277
+ "typeString": "bytes32"
278
+ }
279
+ },
280
+ "value": {
281
+ "arguments": [
282
+ {
283
+ "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
284
+ "id": 4573,
285
+ "isConstant": false,
286
+ "isLValue": false,
287
+ "isPure": true,
288
+ "kind": "string",
289
+ "lValueRequested": false,
290
+ "nodeType": "Literal",
291
+ "src": "2089:84:20",
292
+ "typeDescriptions": {
293
+ "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
294
+ "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
295
+ },
296
+ "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
297
+ }
298
+ ],
299
+ "expression": {
300
+ "argumentTypes": [
301
+ {
302
+ "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
303
+ "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
304
+ }
305
+ ],
306
+ "id": 4572,
307
+ "name": "keccak256",
308
+ "nodeType": "Identifier",
309
+ "overloadedDeclarations": [],
310
+ "referencedDeclaration": 4294967288,
311
+ "src": "2079:9:20",
312
+ "typeDescriptions": {
313
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
314
+ "typeString": "function (bytes memory) pure returns (bytes32)"
315
+ }
316
+ },
317
+ "id": 4574,
318
+ "isConstant": false,
319
+ "isLValue": false,
320
+ "isPure": true,
321
+ "kind": "functionCall",
322
+ "lValueRequested": false,
323
+ "nameLocations": [],
324
+ "names": [],
325
+ "nodeType": "FunctionCall",
326
+ "src": "2079:95:20",
327
+ "tryCall": false,
328
+ "typeDescriptions": {
329
+ "typeIdentifier": "t_bytes32",
330
+ "typeString": "bytes32"
331
+ }
332
+ },
333
+ "visibility": "private"
334
+ },
335
+ {
336
+ "constant": false,
337
+ "id": 4577,
338
+ "mutability": "immutable",
339
+ "name": "_cachedDomainSeparator",
340
+ "nameLocation": "2399:22:20",
341
+ "nodeType": "VariableDeclaration",
342
+ "scope": 4783,
343
+ "src": "2373:48:20",
344
+ "stateVariable": true,
345
+ "storageLocation": "default",
346
+ "typeDescriptions": {
347
+ "typeIdentifier": "t_bytes32",
348
+ "typeString": "bytes32"
349
+ },
350
+ "typeName": {
351
+ "id": 4576,
352
+ "name": "bytes32",
353
+ "nodeType": "ElementaryTypeName",
354
+ "src": "2373:7:20",
355
+ "typeDescriptions": {
356
+ "typeIdentifier": "t_bytes32",
357
+ "typeString": "bytes32"
358
+ }
359
+ },
360
+ "visibility": "private"
361
+ },
362
+ {
363
+ "constant": false,
364
+ "id": 4579,
365
+ "mutability": "immutable",
366
+ "name": "_cachedChainId",
367
+ "nameLocation": "2453:14:20",
368
+ "nodeType": "VariableDeclaration",
369
+ "scope": 4783,
370
+ "src": "2427:40:20",
371
+ "stateVariable": true,
372
+ "storageLocation": "default",
373
+ "typeDescriptions": {
374
+ "typeIdentifier": "t_uint256",
375
+ "typeString": "uint256"
376
+ },
377
+ "typeName": {
378
+ "id": 4578,
379
+ "name": "uint256",
380
+ "nodeType": "ElementaryTypeName",
381
+ "src": "2427:7:20",
382
+ "typeDescriptions": {
383
+ "typeIdentifier": "t_uint256",
384
+ "typeString": "uint256"
385
+ }
386
+ },
387
+ "visibility": "private"
388
+ },
389
+ {
390
+ "constant": false,
391
+ "id": 4581,
392
+ "mutability": "immutable",
393
+ "name": "_cachedThis",
394
+ "nameLocation": "2499:11:20",
395
+ "nodeType": "VariableDeclaration",
396
+ "scope": 4783,
397
+ "src": "2473:37:20",
398
+ "stateVariable": true,
399
+ "storageLocation": "default",
400
+ "typeDescriptions": {
401
+ "typeIdentifier": "t_address",
402
+ "typeString": "address"
403
+ },
404
+ "typeName": {
405
+ "id": 4580,
406
+ "name": "address",
407
+ "nodeType": "ElementaryTypeName",
408
+ "src": "2473:7:20",
409
+ "stateMutability": "nonpayable",
410
+ "typeDescriptions": {
411
+ "typeIdentifier": "t_address",
412
+ "typeString": "address"
413
+ }
414
+ },
415
+ "visibility": "private"
416
+ },
417
+ {
418
+ "constant": false,
419
+ "id": 4583,
420
+ "mutability": "immutable",
421
+ "name": "_hashedName",
422
+ "nameLocation": "2543:11:20",
423
+ "nodeType": "VariableDeclaration",
424
+ "scope": 4783,
425
+ "src": "2517:37:20",
426
+ "stateVariable": true,
427
+ "storageLocation": "default",
428
+ "typeDescriptions": {
429
+ "typeIdentifier": "t_bytes32",
430
+ "typeString": "bytes32"
431
+ },
432
+ "typeName": {
433
+ "id": 4582,
434
+ "name": "bytes32",
435
+ "nodeType": "ElementaryTypeName",
436
+ "src": "2517:7:20",
437
+ "typeDescriptions": {
438
+ "typeIdentifier": "t_bytes32",
439
+ "typeString": "bytes32"
440
+ }
441
+ },
442
+ "visibility": "private"
443
+ },
444
+ {
445
+ "constant": false,
446
+ "id": 4585,
447
+ "mutability": "immutable",
448
+ "name": "_hashedVersion",
449
+ "nameLocation": "2586:14:20",
450
+ "nodeType": "VariableDeclaration",
451
+ "scope": 4783,
452
+ "src": "2560:40:20",
453
+ "stateVariable": true,
454
+ "storageLocation": "default",
455
+ "typeDescriptions": {
456
+ "typeIdentifier": "t_bytes32",
457
+ "typeString": "bytes32"
458
+ },
459
+ "typeName": {
460
+ "id": 4584,
461
+ "name": "bytes32",
462
+ "nodeType": "ElementaryTypeName",
463
+ "src": "2560:7:20",
464
+ "typeDescriptions": {
465
+ "typeIdentifier": "t_bytes32",
466
+ "typeString": "bytes32"
467
+ }
468
+ },
469
+ "visibility": "private"
470
+ },
471
+ {
472
+ "constant": false,
473
+ "id": 4588,
474
+ "mutability": "immutable",
475
+ "name": "_name",
476
+ "nameLocation": "2637:5:20",
477
+ "nodeType": "VariableDeclaration",
478
+ "scope": 4783,
479
+ "src": "2607:35:20",
480
+ "stateVariable": true,
481
+ "storageLocation": "default",
482
+ "typeDescriptions": {
483
+ "typeIdentifier": "t_userDefinedValueType$_ShortString_$2471",
484
+ "typeString": "ShortString"
485
+ },
486
+ "typeName": {
487
+ "id": 4587,
488
+ "nodeType": "UserDefinedTypeName",
489
+ "pathNode": {
490
+ "id": 4586,
491
+ "name": "ShortString",
492
+ "nameLocations": [
493
+ "2607:11:20"
494
+ ],
495
+ "nodeType": "IdentifierPath",
496
+ "referencedDeclaration": 2471,
497
+ "src": "2607:11:20"
498
+ },
499
+ "referencedDeclaration": 2471,
500
+ "src": "2607:11:20",
501
+ "typeDescriptions": {
502
+ "typeIdentifier": "t_userDefinedValueType$_ShortString_$2471",
503
+ "typeString": "ShortString"
504
+ }
505
+ },
506
+ "visibility": "private"
507
+ },
508
+ {
509
+ "constant": false,
510
+ "id": 4591,
511
+ "mutability": "immutable",
512
+ "name": "_version",
513
+ "nameLocation": "2678:8:20",
514
+ "nodeType": "VariableDeclaration",
515
+ "scope": 4783,
516
+ "src": "2648:38:20",
517
+ "stateVariable": true,
518
+ "storageLocation": "default",
519
+ "typeDescriptions": {
520
+ "typeIdentifier": "t_userDefinedValueType$_ShortString_$2471",
521
+ "typeString": "ShortString"
522
+ },
523
+ "typeName": {
524
+ "id": 4590,
525
+ "nodeType": "UserDefinedTypeName",
526
+ "pathNode": {
527
+ "id": 4589,
528
+ "name": "ShortString",
529
+ "nameLocations": [
530
+ "2648:11:20"
531
+ ],
532
+ "nodeType": "IdentifierPath",
533
+ "referencedDeclaration": 2471,
534
+ "src": "2648:11:20"
535
+ },
536
+ "referencedDeclaration": 2471,
537
+ "src": "2648:11:20",
538
+ "typeDescriptions": {
539
+ "typeIdentifier": "t_userDefinedValueType$_ShortString_$2471",
540
+ "typeString": "ShortString"
541
+ }
542
+ },
543
+ "visibility": "private"
544
+ },
545
+ {
546
+ "constant": false,
547
+ "id": 4593,
548
+ "mutability": "mutable",
549
+ "name": "_nameFallback",
550
+ "nameLocation": "2757:13:20",
551
+ "nodeType": "VariableDeclaration",
552
+ "scope": 4783,
553
+ "src": "2742:28:20",
554
+ "stateVariable": true,
555
+ "storageLocation": "default",
556
+ "typeDescriptions": {
557
+ "typeIdentifier": "t_string_storage",
558
+ "typeString": "string"
559
+ },
560
+ "typeName": {
561
+ "id": 4592,
562
+ "name": "string",
563
+ "nodeType": "ElementaryTypeName",
564
+ "src": "2742:6:20",
565
+ "typeDescriptions": {
566
+ "typeIdentifier": "t_string_storage_ptr",
567
+ "typeString": "string"
568
+ }
569
+ },
570
+ "visibility": "private"
571
+ },
572
+ {
573
+ "constant": false,
574
+ "id": 4595,
575
+ "mutability": "mutable",
576
+ "name": "_versionFallback",
577
+ "nameLocation": "2841:16:20",
578
+ "nodeType": "VariableDeclaration",
579
+ "scope": 4783,
580
+ "src": "2826:31:20",
581
+ "stateVariable": true,
582
+ "storageLocation": "default",
583
+ "typeDescriptions": {
584
+ "typeIdentifier": "t_string_storage",
585
+ "typeString": "string"
586
+ },
587
+ "typeName": {
588
+ "id": 4594,
589
+ "name": "string",
590
+ "nodeType": "ElementaryTypeName",
591
+ "src": "2826:6:20",
592
+ "typeDescriptions": {
593
+ "typeIdentifier": "t_string_storage_ptr",
594
+ "typeString": "string"
595
+ }
596
+ },
597
+ "visibility": "private"
598
+ },
599
+ {
600
+ "body": {
601
+ "id": 4652,
602
+ "nodeType": "Block",
603
+ "src": "3483:376:20",
604
+ "statements": [
605
+ {
606
+ "expression": {
607
+ "id": 4608,
608
+ "isConstant": false,
609
+ "isLValue": false,
610
+ "isPure": false,
611
+ "lValueRequested": false,
612
+ "leftHandSide": {
613
+ "id": 4603,
614
+ "name": "_name",
615
+ "nodeType": "Identifier",
616
+ "overloadedDeclarations": [],
617
+ "referencedDeclaration": 4588,
618
+ "src": "3493:5:20",
619
+ "typeDescriptions": {
620
+ "typeIdentifier": "t_userDefinedValueType$_ShortString_$2471",
621
+ "typeString": "ShortString"
622
+ }
623
+ },
624
+ "nodeType": "Assignment",
625
+ "operator": "=",
626
+ "rightHandSide": {
627
+ "arguments": [
628
+ {
629
+ "id": 4606,
630
+ "name": "_nameFallback",
631
+ "nodeType": "Identifier",
632
+ "overloadedDeclarations": [],
633
+ "referencedDeclaration": 4593,
634
+ "src": "3532:13:20",
635
+ "typeDescriptions": {
636
+ "typeIdentifier": "t_string_storage",
637
+ "typeString": "string storage ref"
638
+ }
639
+ }
640
+ ],
641
+ "expression": {
642
+ "argumentTypes": [
643
+ {
644
+ "typeIdentifier": "t_string_storage",
645
+ "typeString": "string storage ref"
646
+ }
647
+ ],
648
+ "expression": {
649
+ "id": 4604,
650
+ "name": "name",
651
+ "nodeType": "Identifier",
652
+ "overloadedDeclarations": [],
653
+ "referencedDeclaration": 4598,
654
+ "src": "3501:4:20",
655
+ "typeDescriptions": {
656
+ "typeIdentifier": "t_string_memory_ptr",
657
+ "typeString": "string memory"
658
+ }
659
+ },
660
+ "id": 4605,
661
+ "isConstant": false,
662
+ "isLValue": false,
663
+ "isPure": false,
664
+ "lValueRequested": false,
665
+ "memberLocation": "3506:25:20",
666
+ "memberName": "toShortStringWithFallback",
667
+ "nodeType": "MemberAccess",
668
+ "referencedDeclaration": 2623,
669
+ "src": "3501:30:20",
670
+ "typeDescriptions": {
671
+ "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_storage_ptr_$returns$_t_userDefinedValueType$_ShortString_$2471_$attached_to$_t_string_memory_ptr_$",
672
+ "typeString": "function (string memory,string storage pointer) returns (ShortString)"
673
+ }
674
+ },
675
+ "id": 4607,
676
+ "isConstant": false,
677
+ "isLValue": false,
678
+ "isPure": false,
679
+ "kind": "functionCall",
680
+ "lValueRequested": false,
681
+ "nameLocations": [],
682
+ "names": [],
683
+ "nodeType": "FunctionCall",
684
+ "src": "3501:45:20",
685
+ "tryCall": false,
686
+ "typeDescriptions": {
687
+ "typeIdentifier": "t_userDefinedValueType$_ShortString_$2471",
688
+ "typeString": "ShortString"
689
+ }
690
+ },
691
+ "src": "3493:53:20",
692
+ "typeDescriptions": {
693
+ "typeIdentifier": "t_userDefinedValueType$_ShortString_$2471",
694
+ "typeString": "ShortString"
695
+ }
696
+ },
697
+ "id": 4609,
698
+ "nodeType": "ExpressionStatement",
699
+ "src": "3493:53:20"
700
+ },
701
+ {
702
+ "expression": {
703
+ "id": 4615,
704
+ "isConstant": false,
705
+ "isLValue": false,
706
+ "isPure": false,
707
+ "lValueRequested": false,
708
+ "leftHandSide": {
709
+ "id": 4610,
710
+ "name": "_version",
711
+ "nodeType": "Identifier",
712
+ "overloadedDeclarations": [],
713
+ "referencedDeclaration": 4591,
714
+ "src": "3556:8:20",
715
+ "typeDescriptions": {
716
+ "typeIdentifier": "t_userDefinedValueType$_ShortString_$2471",
717
+ "typeString": "ShortString"
718
+ }
719
+ },
720
+ "nodeType": "Assignment",
721
+ "operator": "=",
722
+ "rightHandSide": {
723
+ "arguments": [
724
+ {
725
+ "id": 4613,
726
+ "name": "_versionFallback",
727
+ "nodeType": "Identifier",
728
+ "overloadedDeclarations": [],
729
+ "referencedDeclaration": 4595,
730
+ "src": "3601:16:20",
731
+ "typeDescriptions": {
732
+ "typeIdentifier": "t_string_storage",
733
+ "typeString": "string storage ref"
734
+ }
735
+ }
736
+ ],
737
+ "expression": {
738
+ "argumentTypes": [
739
+ {
740
+ "typeIdentifier": "t_string_storage",
741
+ "typeString": "string storage ref"
742
+ }
743
+ ],
744
+ "expression": {
745
+ "id": 4611,
746
+ "name": "version",
747
+ "nodeType": "Identifier",
748
+ "overloadedDeclarations": [],
749
+ "referencedDeclaration": 4600,
750
+ "src": "3567:7:20",
751
+ "typeDescriptions": {
752
+ "typeIdentifier": "t_string_memory_ptr",
753
+ "typeString": "string memory"
754
+ }
755
+ },
756
+ "id": 4612,
757
+ "isConstant": false,
758
+ "isLValue": false,
759
+ "isPure": false,
760
+ "lValueRequested": false,
761
+ "memberLocation": "3575:25:20",
762
+ "memberName": "toShortStringWithFallback",
763
+ "nodeType": "MemberAccess",
764
+ "referencedDeclaration": 2623,
765
+ "src": "3567:33:20",
766
+ "typeDescriptions": {
767
+ "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_storage_ptr_$returns$_t_userDefinedValueType$_ShortString_$2471_$attached_to$_t_string_memory_ptr_$",
768
+ "typeString": "function (string memory,string storage pointer) returns (ShortString)"
769
+ }
770
+ },
771
+ "id": 4614,
772
+ "isConstant": false,
773
+ "isLValue": false,
774
+ "isPure": false,
775
+ "kind": "functionCall",
776
+ "lValueRequested": false,
777
+ "nameLocations": [],
778
+ "names": [],
779
+ "nodeType": "FunctionCall",
780
+ "src": "3567:51:20",
781
+ "tryCall": false,
782
+ "typeDescriptions": {
783
+ "typeIdentifier": "t_userDefinedValueType$_ShortString_$2471",
784
+ "typeString": "ShortString"
785
+ }
786
+ },
787
+ "src": "3556:62:20",
788
+ "typeDescriptions": {
789
+ "typeIdentifier": "t_userDefinedValueType$_ShortString_$2471",
790
+ "typeString": "ShortString"
791
+ }
792
+ },
793
+ "id": 4616,
794
+ "nodeType": "ExpressionStatement",
795
+ "src": "3556:62:20"
796
+ },
797
+ {
798
+ "expression": {
799
+ "id": 4624,
800
+ "isConstant": false,
801
+ "isLValue": false,
802
+ "isPure": false,
803
+ "lValueRequested": false,
804
+ "leftHandSide": {
805
+ "id": 4617,
806
+ "name": "_hashedName",
807
+ "nodeType": "Identifier",
808
+ "overloadedDeclarations": [],
809
+ "referencedDeclaration": 4583,
810
+ "src": "3628:11:20",
811
+ "typeDescriptions": {
812
+ "typeIdentifier": "t_bytes32",
813
+ "typeString": "bytes32"
814
+ }
815
+ },
816
+ "nodeType": "Assignment",
817
+ "operator": "=",
818
+ "rightHandSide": {
819
+ "arguments": [
820
+ {
821
+ "arguments": [
822
+ {
823
+ "id": 4621,
824
+ "name": "name",
825
+ "nodeType": "Identifier",
826
+ "overloadedDeclarations": [],
827
+ "referencedDeclaration": 4598,
828
+ "src": "3658:4:20",
829
+ "typeDescriptions": {
830
+ "typeIdentifier": "t_string_memory_ptr",
831
+ "typeString": "string memory"
832
+ }
833
+ }
834
+ ],
835
+ "expression": {
836
+ "argumentTypes": [
837
+ {
838
+ "typeIdentifier": "t_string_memory_ptr",
839
+ "typeString": "string memory"
840
+ }
841
+ ],
842
+ "id": 4620,
843
+ "isConstant": false,
844
+ "isLValue": false,
845
+ "isPure": true,
846
+ "lValueRequested": false,
847
+ "nodeType": "ElementaryTypeNameExpression",
848
+ "src": "3652:5:20",
849
+ "typeDescriptions": {
850
+ "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
851
+ "typeString": "type(bytes storage pointer)"
852
+ },
853
+ "typeName": {
854
+ "id": 4619,
855
+ "name": "bytes",
856
+ "nodeType": "ElementaryTypeName",
857
+ "src": "3652:5:20",
858
+ "typeDescriptions": {}
859
+ }
860
+ },
861
+ "id": 4622,
862
+ "isConstant": false,
863
+ "isLValue": false,
864
+ "isPure": false,
865
+ "kind": "typeConversion",
866
+ "lValueRequested": false,
867
+ "nameLocations": [],
868
+ "names": [],
869
+ "nodeType": "FunctionCall",
870
+ "src": "3652:11:20",
871
+ "tryCall": false,
872
+ "typeDescriptions": {
873
+ "typeIdentifier": "t_bytes_memory_ptr",
874
+ "typeString": "bytes memory"
875
+ }
876
+ }
877
+ ],
878
+ "expression": {
879
+ "argumentTypes": [
880
+ {
881
+ "typeIdentifier": "t_bytes_memory_ptr",
882
+ "typeString": "bytes memory"
883
+ }
884
+ ],
885
+ "id": 4618,
886
+ "name": "keccak256",
887
+ "nodeType": "Identifier",
888
+ "overloadedDeclarations": [],
889
+ "referencedDeclaration": 4294967288,
890
+ "src": "3642:9:20",
891
+ "typeDescriptions": {
892
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
893
+ "typeString": "function (bytes memory) pure returns (bytes32)"
894
+ }
895
+ },
896
+ "id": 4623,
897
+ "isConstant": false,
898
+ "isLValue": false,
899
+ "isPure": false,
900
+ "kind": "functionCall",
901
+ "lValueRequested": false,
902
+ "nameLocations": [],
903
+ "names": [],
904
+ "nodeType": "FunctionCall",
905
+ "src": "3642:22:20",
906
+ "tryCall": false,
907
+ "typeDescriptions": {
908
+ "typeIdentifier": "t_bytes32",
909
+ "typeString": "bytes32"
910
+ }
911
+ },
912
+ "src": "3628:36:20",
913
+ "typeDescriptions": {
914
+ "typeIdentifier": "t_bytes32",
915
+ "typeString": "bytes32"
916
+ }
917
+ },
918
+ "id": 4625,
919
+ "nodeType": "ExpressionStatement",
920
+ "src": "3628:36:20"
921
+ },
922
+ {
923
+ "expression": {
924
+ "id": 4633,
925
+ "isConstant": false,
926
+ "isLValue": false,
927
+ "isPure": false,
928
+ "lValueRequested": false,
929
+ "leftHandSide": {
930
+ "id": 4626,
931
+ "name": "_hashedVersion",
932
+ "nodeType": "Identifier",
933
+ "overloadedDeclarations": [],
934
+ "referencedDeclaration": 4585,
935
+ "src": "3674:14:20",
936
+ "typeDescriptions": {
937
+ "typeIdentifier": "t_bytes32",
938
+ "typeString": "bytes32"
939
+ }
940
+ },
941
+ "nodeType": "Assignment",
942
+ "operator": "=",
943
+ "rightHandSide": {
944
+ "arguments": [
945
+ {
946
+ "arguments": [
947
+ {
948
+ "id": 4630,
949
+ "name": "version",
950
+ "nodeType": "Identifier",
951
+ "overloadedDeclarations": [],
952
+ "referencedDeclaration": 4600,
953
+ "src": "3707:7:20",
954
+ "typeDescriptions": {
955
+ "typeIdentifier": "t_string_memory_ptr",
956
+ "typeString": "string memory"
957
+ }
958
+ }
959
+ ],
960
+ "expression": {
961
+ "argumentTypes": [
962
+ {
963
+ "typeIdentifier": "t_string_memory_ptr",
964
+ "typeString": "string memory"
965
+ }
966
+ ],
967
+ "id": 4629,
968
+ "isConstant": false,
969
+ "isLValue": false,
970
+ "isPure": true,
971
+ "lValueRequested": false,
972
+ "nodeType": "ElementaryTypeNameExpression",
973
+ "src": "3701:5:20",
974
+ "typeDescriptions": {
975
+ "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
976
+ "typeString": "type(bytes storage pointer)"
977
+ },
978
+ "typeName": {
979
+ "id": 4628,
980
+ "name": "bytes",
981
+ "nodeType": "ElementaryTypeName",
982
+ "src": "3701:5:20",
983
+ "typeDescriptions": {}
984
+ }
985
+ },
986
+ "id": 4631,
987
+ "isConstant": false,
988
+ "isLValue": false,
989
+ "isPure": false,
990
+ "kind": "typeConversion",
991
+ "lValueRequested": false,
992
+ "nameLocations": [],
993
+ "names": [],
994
+ "nodeType": "FunctionCall",
995
+ "src": "3701:14:20",
996
+ "tryCall": false,
997
+ "typeDescriptions": {
998
+ "typeIdentifier": "t_bytes_memory_ptr",
999
+ "typeString": "bytes memory"
1000
+ }
1001
+ }
1002
+ ],
1003
+ "expression": {
1004
+ "argumentTypes": [
1005
+ {
1006
+ "typeIdentifier": "t_bytes_memory_ptr",
1007
+ "typeString": "bytes memory"
1008
+ }
1009
+ ],
1010
+ "id": 4627,
1011
+ "name": "keccak256",
1012
+ "nodeType": "Identifier",
1013
+ "overloadedDeclarations": [],
1014
+ "referencedDeclaration": 4294967288,
1015
+ "src": "3691:9:20",
1016
+ "typeDescriptions": {
1017
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
1018
+ "typeString": "function (bytes memory) pure returns (bytes32)"
1019
+ }
1020
+ },
1021
+ "id": 4632,
1022
+ "isConstant": false,
1023
+ "isLValue": false,
1024
+ "isPure": false,
1025
+ "kind": "functionCall",
1026
+ "lValueRequested": false,
1027
+ "nameLocations": [],
1028
+ "names": [],
1029
+ "nodeType": "FunctionCall",
1030
+ "src": "3691:25:20",
1031
+ "tryCall": false,
1032
+ "typeDescriptions": {
1033
+ "typeIdentifier": "t_bytes32",
1034
+ "typeString": "bytes32"
1035
+ }
1036
+ },
1037
+ "src": "3674:42:20",
1038
+ "typeDescriptions": {
1039
+ "typeIdentifier": "t_bytes32",
1040
+ "typeString": "bytes32"
1041
+ }
1042
+ },
1043
+ "id": 4634,
1044
+ "nodeType": "ExpressionStatement",
1045
+ "src": "3674:42:20"
1046
+ },
1047
+ {
1048
+ "expression": {
1049
+ "id": 4638,
1050
+ "isConstant": false,
1051
+ "isLValue": false,
1052
+ "isPure": false,
1053
+ "lValueRequested": false,
1054
+ "leftHandSide": {
1055
+ "id": 4635,
1056
+ "name": "_cachedChainId",
1057
+ "nodeType": "Identifier",
1058
+ "overloadedDeclarations": [],
1059
+ "referencedDeclaration": 4579,
1060
+ "src": "3727:14:20",
1061
+ "typeDescriptions": {
1062
+ "typeIdentifier": "t_uint256",
1063
+ "typeString": "uint256"
1064
+ }
1065
+ },
1066
+ "nodeType": "Assignment",
1067
+ "operator": "=",
1068
+ "rightHandSide": {
1069
+ "expression": {
1070
+ "id": 4636,
1071
+ "name": "block",
1072
+ "nodeType": "Identifier",
1073
+ "overloadedDeclarations": [],
1074
+ "referencedDeclaration": 4294967292,
1075
+ "src": "3744:5:20",
1076
+ "typeDescriptions": {
1077
+ "typeIdentifier": "t_magic_block",
1078
+ "typeString": "block"
1079
+ }
1080
+ },
1081
+ "id": 4637,
1082
+ "isConstant": false,
1083
+ "isLValue": false,
1084
+ "isPure": false,
1085
+ "lValueRequested": false,
1086
+ "memberLocation": "3750:7:20",
1087
+ "memberName": "chainid",
1088
+ "nodeType": "MemberAccess",
1089
+ "src": "3744:13:20",
1090
+ "typeDescriptions": {
1091
+ "typeIdentifier": "t_uint256",
1092
+ "typeString": "uint256"
1093
+ }
1094
+ },
1095
+ "src": "3727:30:20",
1096
+ "typeDescriptions": {
1097
+ "typeIdentifier": "t_uint256",
1098
+ "typeString": "uint256"
1099
+ }
1100
+ },
1101
+ "id": 4639,
1102
+ "nodeType": "ExpressionStatement",
1103
+ "src": "3727:30:20"
1104
+ },
1105
+ {
1106
+ "expression": {
1107
+ "id": 4643,
1108
+ "isConstant": false,
1109
+ "isLValue": false,
1110
+ "isPure": false,
1111
+ "lValueRequested": false,
1112
+ "leftHandSide": {
1113
+ "id": 4640,
1114
+ "name": "_cachedDomainSeparator",
1115
+ "nodeType": "Identifier",
1116
+ "overloadedDeclarations": [],
1117
+ "referencedDeclaration": 4577,
1118
+ "src": "3767:22:20",
1119
+ "typeDescriptions": {
1120
+ "typeIdentifier": "t_bytes32",
1121
+ "typeString": "bytes32"
1122
+ }
1123
+ },
1124
+ "nodeType": "Assignment",
1125
+ "operator": "=",
1126
+ "rightHandSide": {
1127
+ "arguments": [],
1128
+ "expression": {
1129
+ "argumentTypes": [],
1130
+ "id": 4641,
1131
+ "name": "_buildDomainSeparator",
1132
+ "nodeType": "Identifier",
1133
+ "overloadedDeclarations": [],
1134
+ "referencedDeclaration": 4700,
1135
+ "src": "3792:21:20",
1136
+ "typeDescriptions": {
1137
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
1138
+ "typeString": "function () view returns (bytes32)"
1139
+ }
1140
+ },
1141
+ "id": 4642,
1142
+ "isConstant": false,
1143
+ "isLValue": false,
1144
+ "isPure": false,
1145
+ "kind": "functionCall",
1146
+ "lValueRequested": false,
1147
+ "nameLocations": [],
1148
+ "names": [],
1149
+ "nodeType": "FunctionCall",
1150
+ "src": "3792:23:20",
1151
+ "tryCall": false,
1152
+ "typeDescriptions": {
1153
+ "typeIdentifier": "t_bytes32",
1154
+ "typeString": "bytes32"
1155
+ }
1156
+ },
1157
+ "src": "3767:48:20",
1158
+ "typeDescriptions": {
1159
+ "typeIdentifier": "t_bytes32",
1160
+ "typeString": "bytes32"
1161
+ }
1162
+ },
1163
+ "id": 4644,
1164
+ "nodeType": "ExpressionStatement",
1165
+ "src": "3767:48:20"
1166
+ },
1167
+ {
1168
+ "expression": {
1169
+ "id": 4650,
1170
+ "isConstant": false,
1171
+ "isLValue": false,
1172
+ "isPure": false,
1173
+ "lValueRequested": false,
1174
+ "leftHandSide": {
1175
+ "id": 4645,
1176
+ "name": "_cachedThis",
1177
+ "nodeType": "Identifier",
1178
+ "overloadedDeclarations": [],
1179
+ "referencedDeclaration": 4581,
1180
+ "src": "3825:11:20",
1181
+ "typeDescriptions": {
1182
+ "typeIdentifier": "t_address",
1183
+ "typeString": "address"
1184
+ }
1185
+ },
1186
+ "nodeType": "Assignment",
1187
+ "operator": "=",
1188
+ "rightHandSide": {
1189
+ "arguments": [
1190
+ {
1191
+ "id": 4648,
1192
+ "name": "this",
1193
+ "nodeType": "Identifier",
1194
+ "overloadedDeclarations": [],
1195
+ "referencedDeclaration": 4294967268,
1196
+ "src": "3847:4:20",
1197
+ "typeDescriptions": {
1198
+ "typeIdentifier": "t_contract$_EIP712_$4783",
1199
+ "typeString": "contract EIP712"
1200
+ }
1201
+ }
1202
+ ],
1203
+ "expression": {
1204
+ "argumentTypes": [
1205
+ {
1206
+ "typeIdentifier": "t_contract$_EIP712_$4783",
1207
+ "typeString": "contract EIP712"
1208
+ }
1209
+ ],
1210
+ "id": 4647,
1211
+ "isConstant": false,
1212
+ "isLValue": false,
1213
+ "isPure": true,
1214
+ "lValueRequested": false,
1215
+ "nodeType": "ElementaryTypeNameExpression",
1216
+ "src": "3839:7:20",
1217
+ "typeDescriptions": {
1218
+ "typeIdentifier": "t_type$_t_address_$",
1219
+ "typeString": "type(address)"
1220
+ },
1221
+ "typeName": {
1222
+ "id": 4646,
1223
+ "name": "address",
1224
+ "nodeType": "ElementaryTypeName",
1225
+ "src": "3839:7:20",
1226
+ "typeDescriptions": {}
1227
+ }
1228
+ },
1229
+ "id": 4649,
1230
+ "isConstant": false,
1231
+ "isLValue": false,
1232
+ "isPure": false,
1233
+ "kind": "typeConversion",
1234
+ "lValueRequested": false,
1235
+ "nameLocations": [],
1236
+ "names": [],
1237
+ "nodeType": "FunctionCall",
1238
+ "src": "3839:13:20",
1239
+ "tryCall": false,
1240
+ "typeDescriptions": {
1241
+ "typeIdentifier": "t_address",
1242
+ "typeString": "address"
1243
+ }
1244
+ },
1245
+ "src": "3825:27:20",
1246
+ "typeDescriptions": {
1247
+ "typeIdentifier": "t_address",
1248
+ "typeString": "address"
1249
+ }
1250
+ },
1251
+ "id": 4651,
1252
+ "nodeType": "ExpressionStatement",
1253
+ "src": "3825:27:20"
1254
+ }
1255
+ ]
1256
+ },
1257
+ "documentation": {
1258
+ "id": 4596,
1259
+ "nodeType": "StructuredDocumentation",
1260
+ "src": "2864:559:20",
1261
+ "text": " @dev Initializes the domain separator and parameter caches.\n The meaning of `name` and `version` is specified in\n https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP-712]:\n - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n - `version`: the current major version of the signing domain.\n NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n contract upgrade]."
1262
+ },
1263
+ "id": 4653,
1264
+ "implemented": true,
1265
+ "kind": "constructor",
1266
+ "modifiers": [],
1267
+ "name": "",
1268
+ "nameLocation": "-1:-1:-1",
1269
+ "nodeType": "FunctionDefinition",
1270
+ "parameters": {
1271
+ "id": 4601,
1272
+ "nodeType": "ParameterList",
1273
+ "parameters": [
1274
+ {
1275
+ "constant": false,
1276
+ "id": 4598,
1277
+ "mutability": "mutable",
1278
+ "name": "name",
1279
+ "nameLocation": "3454:4:20",
1280
+ "nodeType": "VariableDeclaration",
1281
+ "scope": 4653,
1282
+ "src": "3440:18:20",
1283
+ "stateVariable": false,
1284
+ "storageLocation": "memory",
1285
+ "typeDescriptions": {
1286
+ "typeIdentifier": "t_string_memory_ptr",
1287
+ "typeString": "string"
1288
+ },
1289
+ "typeName": {
1290
+ "id": 4597,
1291
+ "name": "string",
1292
+ "nodeType": "ElementaryTypeName",
1293
+ "src": "3440:6:20",
1294
+ "typeDescriptions": {
1295
+ "typeIdentifier": "t_string_storage_ptr",
1296
+ "typeString": "string"
1297
+ }
1298
+ },
1299
+ "visibility": "internal"
1300
+ },
1301
+ {
1302
+ "constant": false,
1303
+ "id": 4600,
1304
+ "mutability": "mutable",
1305
+ "name": "version",
1306
+ "nameLocation": "3474:7:20",
1307
+ "nodeType": "VariableDeclaration",
1308
+ "scope": 4653,
1309
+ "src": "3460:21:20",
1310
+ "stateVariable": false,
1311
+ "storageLocation": "memory",
1312
+ "typeDescriptions": {
1313
+ "typeIdentifier": "t_string_memory_ptr",
1314
+ "typeString": "string"
1315
+ },
1316
+ "typeName": {
1317
+ "id": 4599,
1318
+ "name": "string",
1319
+ "nodeType": "ElementaryTypeName",
1320
+ "src": "3460:6:20",
1321
+ "typeDescriptions": {
1322
+ "typeIdentifier": "t_string_storage_ptr",
1323
+ "typeString": "string"
1324
+ }
1325
+ },
1326
+ "visibility": "internal"
1327
+ }
1328
+ ],
1329
+ "src": "3439:43:20"
1330
+ },
1331
+ "returnParameters": {
1332
+ "id": 4602,
1333
+ "nodeType": "ParameterList",
1334
+ "parameters": [],
1335
+ "src": "3483:0:20"
1336
+ },
1337
+ "scope": 4783,
1338
+ "src": "3428:431:20",
1339
+ "stateMutability": "nonpayable",
1340
+ "virtual": false,
1341
+ "visibility": "internal"
1342
+ },
1343
+ {
1344
+ "body": {
1345
+ "id": 4678,
1346
+ "nodeType": "Block",
1347
+ "src": "4007:200:20",
1348
+ "statements": [
1349
+ {
1350
+ "condition": {
1351
+ "commonType": {
1352
+ "typeIdentifier": "t_bool",
1353
+ "typeString": "bool"
1354
+ },
1355
+ "id": 4669,
1356
+ "isConstant": false,
1357
+ "isLValue": false,
1358
+ "isPure": false,
1359
+ "lValueRequested": false,
1360
+ "leftExpression": {
1361
+ "commonType": {
1362
+ "typeIdentifier": "t_address",
1363
+ "typeString": "address"
1364
+ },
1365
+ "id": 4664,
1366
+ "isConstant": false,
1367
+ "isLValue": false,
1368
+ "isPure": false,
1369
+ "lValueRequested": false,
1370
+ "leftExpression": {
1371
+ "arguments": [
1372
+ {
1373
+ "id": 4661,
1374
+ "name": "this",
1375
+ "nodeType": "Identifier",
1376
+ "overloadedDeclarations": [],
1377
+ "referencedDeclaration": 4294967268,
1378
+ "src": "4029:4:20",
1379
+ "typeDescriptions": {
1380
+ "typeIdentifier": "t_contract$_EIP712_$4783",
1381
+ "typeString": "contract EIP712"
1382
+ }
1383
+ }
1384
+ ],
1385
+ "expression": {
1386
+ "argumentTypes": [
1387
+ {
1388
+ "typeIdentifier": "t_contract$_EIP712_$4783",
1389
+ "typeString": "contract EIP712"
1390
+ }
1391
+ ],
1392
+ "id": 4660,
1393
+ "isConstant": false,
1394
+ "isLValue": false,
1395
+ "isPure": true,
1396
+ "lValueRequested": false,
1397
+ "nodeType": "ElementaryTypeNameExpression",
1398
+ "src": "4021:7:20",
1399
+ "typeDescriptions": {
1400
+ "typeIdentifier": "t_type$_t_address_$",
1401
+ "typeString": "type(address)"
1402
+ },
1403
+ "typeName": {
1404
+ "id": 4659,
1405
+ "name": "address",
1406
+ "nodeType": "ElementaryTypeName",
1407
+ "src": "4021:7:20",
1408
+ "typeDescriptions": {}
1409
+ }
1410
+ },
1411
+ "id": 4662,
1412
+ "isConstant": false,
1413
+ "isLValue": false,
1414
+ "isPure": false,
1415
+ "kind": "typeConversion",
1416
+ "lValueRequested": false,
1417
+ "nameLocations": [],
1418
+ "names": [],
1419
+ "nodeType": "FunctionCall",
1420
+ "src": "4021:13:20",
1421
+ "tryCall": false,
1422
+ "typeDescriptions": {
1423
+ "typeIdentifier": "t_address",
1424
+ "typeString": "address"
1425
+ }
1426
+ },
1427
+ "nodeType": "BinaryOperation",
1428
+ "operator": "==",
1429
+ "rightExpression": {
1430
+ "id": 4663,
1431
+ "name": "_cachedThis",
1432
+ "nodeType": "Identifier",
1433
+ "overloadedDeclarations": [],
1434
+ "referencedDeclaration": 4581,
1435
+ "src": "4038:11:20",
1436
+ "typeDescriptions": {
1437
+ "typeIdentifier": "t_address",
1438
+ "typeString": "address"
1439
+ }
1440
+ },
1441
+ "src": "4021:28:20",
1442
+ "typeDescriptions": {
1443
+ "typeIdentifier": "t_bool",
1444
+ "typeString": "bool"
1445
+ }
1446
+ },
1447
+ "nodeType": "BinaryOperation",
1448
+ "operator": "&&",
1449
+ "rightExpression": {
1450
+ "commonType": {
1451
+ "typeIdentifier": "t_uint256",
1452
+ "typeString": "uint256"
1453
+ },
1454
+ "id": 4668,
1455
+ "isConstant": false,
1456
+ "isLValue": false,
1457
+ "isPure": false,
1458
+ "lValueRequested": false,
1459
+ "leftExpression": {
1460
+ "expression": {
1461
+ "id": 4665,
1462
+ "name": "block",
1463
+ "nodeType": "Identifier",
1464
+ "overloadedDeclarations": [],
1465
+ "referencedDeclaration": 4294967292,
1466
+ "src": "4053:5:20",
1467
+ "typeDescriptions": {
1468
+ "typeIdentifier": "t_magic_block",
1469
+ "typeString": "block"
1470
+ }
1471
+ },
1472
+ "id": 4666,
1473
+ "isConstant": false,
1474
+ "isLValue": false,
1475
+ "isPure": false,
1476
+ "lValueRequested": false,
1477
+ "memberLocation": "4059:7:20",
1478
+ "memberName": "chainid",
1479
+ "nodeType": "MemberAccess",
1480
+ "src": "4053:13:20",
1481
+ "typeDescriptions": {
1482
+ "typeIdentifier": "t_uint256",
1483
+ "typeString": "uint256"
1484
+ }
1485
+ },
1486
+ "nodeType": "BinaryOperation",
1487
+ "operator": "==",
1488
+ "rightExpression": {
1489
+ "id": 4667,
1490
+ "name": "_cachedChainId",
1491
+ "nodeType": "Identifier",
1492
+ "overloadedDeclarations": [],
1493
+ "referencedDeclaration": 4579,
1494
+ "src": "4070:14:20",
1495
+ "typeDescriptions": {
1496
+ "typeIdentifier": "t_uint256",
1497
+ "typeString": "uint256"
1498
+ }
1499
+ },
1500
+ "src": "4053:31:20",
1501
+ "typeDescriptions": {
1502
+ "typeIdentifier": "t_bool",
1503
+ "typeString": "bool"
1504
+ }
1505
+ },
1506
+ "src": "4021:63:20",
1507
+ "typeDescriptions": {
1508
+ "typeIdentifier": "t_bool",
1509
+ "typeString": "bool"
1510
+ }
1511
+ },
1512
+ "falseBody": {
1513
+ "id": 4676,
1514
+ "nodeType": "Block",
1515
+ "src": "4146:55:20",
1516
+ "statements": [
1517
+ {
1518
+ "expression": {
1519
+ "arguments": [],
1520
+ "expression": {
1521
+ "argumentTypes": [],
1522
+ "id": 4673,
1523
+ "name": "_buildDomainSeparator",
1524
+ "nodeType": "Identifier",
1525
+ "overloadedDeclarations": [],
1526
+ "referencedDeclaration": 4700,
1527
+ "src": "4167:21:20",
1528
+ "typeDescriptions": {
1529
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
1530
+ "typeString": "function () view returns (bytes32)"
1531
+ }
1532
+ },
1533
+ "id": 4674,
1534
+ "isConstant": false,
1535
+ "isLValue": false,
1536
+ "isPure": false,
1537
+ "kind": "functionCall",
1538
+ "lValueRequested": false,
1539
+ "nameLocations": [],
1540
+ "names": [],
1541
+ "nodeType": "FunctionCall",
1542
+ "src": "4167:23:20",
1543
+ "tryCall": false,
1544
+ "typeDescriptions": {
1545
+ "typeIdentifier": "t_bytes32",
1546
+ "typeString": "bytes32"
1547
+ }
1548
+ },
1549
+ "functionReturnParameters": 4658,
1550
+ "id": 4675,
1551
+ "nodeType": "Return",
1552
+ "src": "4160:30:20"
1553
+ }
1554
+ ]
1555
+ },
1556
+ "id": 4677,
1557
+ "nodeType": "IfStatement",
1558
+ "src": "4017:184:20",
1559
+ "trueBody": {
1560
+ "id": 4672,
1561
+ "nodeType": "Block",
1562
+ "src": "4086:54:20",
1563
+ "statements": [
1564
+ {
1565
+ "expression": {
1566
+ "id": 4670,
1567
+ "name": "_cachedDomainSeparator",
1568
+ "nodeType": "Identifier",
1569
+ "overloadedDeclarations": [],
1570
+ "referencedDeclaration": 4577,
1571
+ "src": "4107:22:20",
1572
+ "typeDescriptions": {
1573
+ "typeIdentifier": "t_bytes32",
1574
+ "typeString": "bytes32"
1575
+ }
1576
+ },
1577
+ "functionReturnParameters": 4658,
1578
+ "id": 4671,
1579
+ "nodeType": "Return",
1580
+ "src": "4100:29:20"
1581
+ }
1582
+ ]
1583
+ }
1584
+ }
1585
+ ]
1586
+ },
1587
+ "documentation": {
1588
+ "id": 4654,
1589
+ "nodeType": "StructuredDocumentation",
1590
+ "src": "3865:75:20",
1591
+ "text": " @dev Returns the domain separator for the current chain."
1592
+ },
1593
+ "id": 4679,
1594
+ "implemented": true,
1595
+ "kind": "function",
1596
+ "modifiers": [],
1597
+ "name": "_domainSeparatorV4",
1598
+ "nameLocation": "3954:18:20",
1599
+ "nodeType": "FunctionDefinition",
1600
+ "parameters": {
1601
+ "id": 4655,
1602
+ "nodeType": "ParameterList",
1603
+ "parameters": [],
1604
+ "src": "3972:2:20"
1605
+ },
1606
+ "returnParameters": {
1607
+ "id": 4658,
1608
+ "nodeType": "ParameterList",
1609
+ "parameters": [
1610
+ {
1611
+ "constant": false,
1612
+ "id": 4657,
1613
+ "mutability": "mutable",
1614
+ "name": "",
1615
+ "nameLocation": "-1:-1:-1",
1616
+ "nodeType": "VariableDeclaration",
1617
+ "scope": 4679,
1618
+ "src": "3998:7:20",
1619
+ "stateVariable": false,
1620
+ "storageLocation": "default",
1621
+ "typeDescriptions": {
1622
+ "typeIdentifier": "t_bytes32",
1623
+ "typeString": "bytes32"
1624
+ },
1625
+ "typeName": {
1626
+ "id": 4656,
1627
+ "name": "bytes32",
1628
+ "nodeType": "ElementaryTypeName",
1629
+ "src": "3998:7:20",
1630
+ "typeDescriptions": {
1631
+ "typeIdentifier": "t_bytes32",
1632
+ "typeString": "bytes32"
1633
+ }
1634
+ },
1635
+ "visibility": "internal"
1636
+ }
1637
+ ],
1638
+ "src": "3997:9:20"
1639
+ },
1640
+ "scope": 4783,
1641
+ "src": "3945:262:20",
1642
+ "stateMutability": "view",
1643
+ "virtual": false,
1644
+ "visibility": "internal"
1645
+ },
1646
+ {
1647
+ "body": {
1648
+ "id": 4699,
1649
+ "nodeType": "Block",
1650
+ "src": "4277:115:20",
1651
+ "statements": [
1652
+ {
1653
+ "expression": {
1654
+ "arguments": [
1655
+ {
1656
+ "arguments": [
1657
+ {
1658
+ "id": 4687,
1659
+ "name": "TYPE_HASH",
1660
+ "nodeType": "Identifier",
1661
+ "overloadedDeclarations": [],
1662
+ "referencedDeclaration": 4575,
1663
+ "src": "4315:9:20",
1664
+ "typeDescriptions": {
1665
+ "typeIdentifier": "t_bytes32",
1666
+ "typeString": "bytes32"
1667
+ }
1668
+ },
1669
+ {
1670
+ "id": 4688,
1671
+ "name": "_hashedName",
1672
+ "nodeType": "Identifier",
1673
+ "overloadedDeclarations": [],
1674
+ "referencedDeclaration": 4583,
1675
+ "src": "4326:11:20",
1676
+ "typeDescriptions": {
1677
+ "typeIdentifier": "t_bytes32",
1678
+ "typeString": "bytes32"
1679
+ }
1680
+ },
1681
+ {
1682
+ "id": 4689,
1683
+ "name": "_hashedVersion",
1684
+ "nodeType": "Identifier",
1685
+ "overloadedDeclarations": [],
1686
+ "referencedDeclaration": 4585,
1687
+ "src": "4339:14:20",
1688
+ "typeDescriptions": {
1689
+ "typeIdentifier": "t_bytes32",
1690
+ "typeString": "bytes32"
1691
+ }
1692
+ },
1693
+ {
1694
+ "expression": {
1695
+ "id": 4690,
1696
+ "name": "block",
1697
+ "nodeType": "Identifier",
1698
+ "overloadedDeclarations": [],
1699
+ "referencedDeclaration": 4294967292,
1700
+ "src": "4355:5:20",
1701
+ "typeDescriptions": {
1702
+ "typeIdentifier": "t_magic_block",
1703
+ "typeString": "block"
1704
+ }
1705
+ },
1706
+ "id": 4691,
1707
+ "isConstant": false,
1708
+ "isLValue": false,
1709
+ "isPure": false,
1710
+ "lValueRequested": false,
1711
+ "memberLocation": "4361:7:20",
1712
+ "memberName": "chainid",
1713
+ "nodeType": "MemberAccess",
1714
+ "src": "4355:13:20",
1715
+ "typeDescriptions": {
1716
+ "typeIdentifier": "t_uint256",
1717
+ "typeString": "uint256"
1718
+ }
1719
+ },
1720
+ {
1721
+ "arguments": [
1722
+ {
1723
+ "id": 4694,
1724
+ "name": "this",
1725
+ "nodeType": "Identifier",
1726
+ "overloadedDeclarations": [],
1727
+ "referencedDeclaration": 4294967268,
1728
+ "src": "4378:4:20",
1729
+ "typeDescriptions": {
1730
+ "typeIdentifier": "t_contract$_EIP712_$4783",
1731
+ "typeString": "contract EIP712"
1732
+ }
1733
+ }
1734
+ ],
1735
+ "expression": {
1736
+ "argumentTypes": [
1737
+ {
1738
+ "typeIdentifier": "t_contract$_EIP712_$4783",
1739
+ "typeString": "contract EIP712"
1740
+ }
1741
+ ],
1742
+ "id": 4693,
1743
+ "isConstant": false,
1744
+ "isLValue": false,
1745
+ "isPure": true,
1746
+ "lValueRequested": false,
1747
+ "nodeType": "ElementaryTypeNameExpression",
1748
+ "src": "4370:7:20",
1749
+ "typeDescriptions": {
1750
+ "typeIdentifier": "t_type$_t_address_$",
1751
+ "typeString": "type(address)"
1752
+ },
1753
+ "typeName": {
1754
+ "id": 4692,
1755
+ "name": "address",
1756
+ "nodeType": "ElementaryTypeName",
1757
+ "src": "4370:7:20",
1758
+ "typeDescriptions": {}
1759
+ }
1760
+ },
1761
+ "id": 4695,
1762
+ "isConstant": false,
1763
+ "isLValue": false,
1764
+ "isPure": false,
1765
+ "kind": "typeConversion",
1766
+ "lValueRequested": false,
1767
+ "nameLocations": [],
1768
+ "names": [],
1769
+ "nodeType": "FunctionCall",
1770
+ "src": "4370:13:20",
1771
+ "tryCall": false,
1772
+ "typeDescriptions": {
1773
+ "typeIdentifier": "t_address",
1774
+ "typeString": "address"
1775
+ }
1776
+ }
1777
+ ],
1778
+ "expression": {
1779
+ "argumentTypes": [
1780
+ {
1781
+ "typeIdentifier": "t_bytes32",
1782
+ "typeString": "bytes32"
1783
+ },
1784
+ {
1785
+ "typeIdentifier": "t_bytes32",
1786
+ "typeString": "bytes32"
1787
+ },
1788
+ {
1789
+ "typeIdentifier": "t_bytes32",
1790
+ "typeString": "bytes32"
1791
+ },
1792
+ {
1793
+ "typeIdentifier": "t_uint256",
1794
+ "typeString": "uint256"
1795
+ },
1796
+ {
1797
+ "typeIdentifier": "t_address",
1798
+ "typeString": "address"
1799
+ }
1800
+ ],
1801
+ "expression": {
1802
+ "id": 4685,
1803
+ "name": "abi",
1804
+ "nodeType": "Identifier",
1805
+ "overloadedDeclarations": [],
1806
+ "referencedDeclaration": 4294967295,
1807
+ "src": "4304:3:20",
1808
+ "typeDescriptions": {
1809
+ "typeIdentifier": "t_magic_abi",
1810
+ "typeString": "abi"
1811
+ }
1812
+ },
1813
+ "id": 4686,
1814
+ "isConstant": false,
1815
+ "isLValue": false,
1816
+ "isPure": true,
1817
+ "lValueRequested": false,
1818
+ "memberLocation": "4308:6:20",
1819
+ "memberName": "encode",
1820
+ "nodeType": "MemberAccess",
1821
+ "src": "4304:10:20",
1822
+ "typeDescriptions": {
1823
+ "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
1824
+ "typeString": "function () pure returns (bytes memory)"
1825
+ }
1826
+ },
1827
+ "id": 4696,
1828
+ "isConstant": false,
1829
+ "isLValue": false,
1830
+ "isPure": false,
1831
+ "kind": "functionCall",
1832
+ "lValueRequested": false,
1833
+ "nameLocations": [],
1834
+ "names": [],
1835
+ "nodeType": "FunctionCall",
1836
+ "src": "4304:80:20",
1837
+ "tryCall": false,
1838
+ "typeDescriptions": {
1839
+ "typeIdentifier": "t_bytes_memory_ptr",
1840
+ "typeString": "bytes memory"
1841
+ }
1842
+ }
1843
+ ],
1844
+ "expression": {
1845
+ "argumentTypes": [
1846
+ {
1847
+ "typeIdentifier": "t_bytes_memory_ptr",
1848
+ "typeString": "bytes memory"
1849
+ }
1850
+ ],
1851
+ "id": 4684,
1852
+ "name": "keccak256",
1853
+ "nodeType": "Identifier",
1854
+ "overloadedDeclarations": [],
1855
+ "referencedDeclaration": 4294967288,
1856
+ "src": "4294:9:20",
1857
+ "typeDescriptions": {
1858
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
1859
+ "typeString": "function (bytes memory) pure returns (bytes32)"
1860
+ }
1861
+ },
1862
+ "id": 4697,
1863
+ "isConstant": false,
1864
+ "isLValue": false,
1865
+ "isPure": false,
1866
+ "kind": "functionCall",
1867
+ "lValueRequested": false,
1868
+ "nameLocations": [],
1869
+ "names": [],
1870
+ "nodeType": "FunctionCall",
1871
+ "src": "4294:91:20",
1872
+ "tryCall": false,
1873
+ "typeDescriptions": {
1874
+ "typeIdentifier": "t_bytes32",
1875
+ "typeString": "bytes32"
1876
+ }
1877
+ },
1878
+ "functionReturnParameters": 4683,
1879
+ "id": 4698,
1880
+ "nodeType": "Return",
1881
+ "src": "4287:98:20"
1882
+ }
1883
+ ]
1884
+ },
1885
+ "id": 4700,
1886
+ "implemented": true,
1887
+ "kind": "function",
1888
+ "modifiers": [],
1889
+ "name": "_buildDomainSeparator",
1890
+ "nameLocation": "4222:21:20",
1891
+ "nodeType": "FunctionDefinition",
1892
+ "parameters": {
1893
+ "id": 4680,
1894
+ "nodeType": "ParameterList",
1895
+ "parameters": [],
1896
+ "src": "4243:2:20"
1897
+ },
1898
+ "returnParameters": {
1899
+ "id": 4683,
1900
+ "nodeType": "ParameterList",
1901
+ "parameters": [
1902
+ {
1903
+ "constant": false,
1904
+ "id": 4682,
1905
+ "mutability": "mutable",
1906
+ "name": "",
1907
+ "nameLocation": "-1:-1:-1",
1908
+ "nodeType": "VariableDeclaration",
1909
+ "scope": 4700,
1910
+ "src": "4268:7:20",
1911
+ "stateVariable": false,
1912
+ "storageLocation": "default",
1913
+ "typeDescriptions": {
1914
+ "typeIdentifier": "t_bytes32",
1915
+ "typeString": "bytes32"
1916
+ },
1917
+ "typeName": {
1918
+ "id": 4681,
1919
+ "name": "bytes32",
1920
+ "nodeType": "ElementaryTypeName",
1921
+ "src": "4268:7:20",
1922
+ "typeDescriptions": {
1923
+ "typeIdentifier": "t_bytes32",
1924
+ "typeString": "bytes32"
1925
+ }
1926
+ },
1927
+ "visibility": "internal"
1928
+ }
1929
+ ],
1930
+ "src": "4267:9:20"
1931
+ },
1932
+ "scope": 4783,
1933
+ "src": "4213:179:20",
1934
+ "stateMutability": "view",
1935
+ "virtual": false,
1936
+ "visibility": "private"
1937
+ },
1938
+ {
1939
+ "body": {
1940
+ "id": 4715,
1941
+ "nodeType": "Block",
1942
+ "src": "5103:90:20",
1943
+ "statements": [
1944
+ {
1945
+ "expression": {
1946
+ "arguments": [
1947
+ {
1948
+ "arguments": [],
1949
+ "expression": {
1950
+ "argumentTypes": [],
1951
+ "id": 4710,
1952
+ "name": "_domainSeparatorV4",
1953
+ "nodeType": "Identifier",
1954
+ "overloadedDeclarations": [],
1955
+ "referencedDeclaration": 4679,
1956
+ "src": "5153:18:20",
1957
+ "typeDescriptions": {
1958
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
1959
+ "typeString": "function () view returns (bytes32)"
1960
+ }
1961
+ },
1962
+ "id": 4711,
1963
+ "isConstant": false,
1964
+ "isLValue": false,
1965
+ "isPure": false,
1966
+ "kind": "functionCall",
1967
+ "lValueRequested": false,
1968
+ "nameLocations": [],
1969
+ "names": [],
1970
+ "nodeType": "FunctionCall",
1971
+ "src": "5153:20:20",
1972
+ "tryCall": false,
1973
+ "typeDescriptions": {
1974
+ "typeIdentifier": "t_bytes32",
1975
+ "typeString": "bytes32"
1976
+ }
1977
+ },
1978
+ {
1979
+ "id": 4712,
1980
+ "name": "structHash",
1981
+ "nodeType": "Identifier",
1982
+ "overloadedDeclarations": [],
1983
+ "referencedDeclaration": 4703,
1984
+ "src": "5175:10:20",
1985
+ "typeDescriptions": {
1986
+ "typeIdentifier": "t_bytes32",
1987
+ "typeString": "bytes32"
1988
+ }
1989
+ }
1990
+ ],
1991
+ "expression": {
1992
+ "argumentTypes": [
1993
+ {
1994
+ "typeIdentifier": "t_bytes32",
1995
+ "typeString": "bytes32"
1996
+ },
1997
+ {
1998
+ "typeIdentifier": "t_bytes32",
1999
+ "typeString": "bytes32"
2000
+ }
2001
+ ],
2002
+ "expression": {
2003
+ "id": 4708,
2004
+ "name": "MessageHashUtils",
2005
+ "nodeType": "Identifier",
2006
+ "overloadedDeclarations": [],
2007
+ "referencedDeclaration": 4869,
2008
+ "src": "5120:16:20",
2009
+ "typeDescriptions": {
2010
+ "typeIdentifier": "t_type$_t_contract$_MessageHashUtils_$4869_$",
2011
+ "typeString": "type(library MessageHashUtils)"
2012
+ }
2013
+ },
2014
+ "id": 4709,
2015
+ "isConstant": false,
2016
+ "isLValue": false,
2017
+ "isPure": false,
2018
+ "lValueRequested": false,
2019
+ "memberLocation": "5137:15:20",
2020
+ "memberName": "toTypedDataHash",
2021
+ "nodeType": "MemberAccess",
2022
+ "referencedDeclaration": 4868,
2023
+ "src": "5120:32:20",
2024
+ "typeDescriptions": {
2025
+ "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
2026
+ "typeString": "function (bytes32,bytes32) pure returns (bytes32)"
2027
+ }
2028
+ },
2029
+ "id": 4713,
2030
+ "isConstant": false,
2031
+ "isLValue": false,
2032
+ "isPure": false,
2033
+ "kind": "functionCall",
2034
+ "lValueRequested": false,
2035
+ "nameLocations": [],
2036
+ "names": [],
2037
+ "nodeType": "FunctionCall",
2038
+ "src": "5120:66:20",
2039
+ "tryCall": false,
2040
+ "typeDescriptions": {
2041
+ "typeIdentifier": "t_bytes32",
2042
+ "typeString": "bytes32"
2043
+ }
2044
+ },
2045
+ "functionReturnParameters": 4707,
2046
+ "id": 4714,
2047
+ "nodeType": "Return",
2048
+ "src": "5113:73:20"
2049
+ }
2050
+ ]
2051
+ },
2052
+ "documentation": {
2053
+ "id": 4701,
2054
+ "nodeType": "StructuredDocumentation",
2055
+ "src": "4398:614:20",
2056
+ "text": " @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n function returns the hash of the fully encoded EIP712 message for this domain.\n This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n ```solidity\n bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n keccak256(\"Mail(address to,string contents)\"),\n mailTo,\n keccak256(bytes(mailContents))\n )));\n address signer = ECDSA.recover(digest, signature);\n ```"
2057
+ },
2058
+ "id": 4716,
2059
+ "implemented": true,
2060
+ "kind": "function",
2061
+ "modifiers": [],
2062
+ "name": "_hashTypedDataV4",
2063
+ "nameLocation": "5026:16:20",
2064
+ "nodeType": "FunctionDefinition",
2065
+ "parameters": {
2066
+ "id": 4704,
2067
+ "nodeType": "ParameterList",
2068
+ "parameters": [
2069
+ {
2070
+ "constant": false,
2071
+ "id": 4703,
2072
+ "mutability": "mutable",
2073
+ "name": "structHash",
2074
+ "nameLocation": "5051:10:20",
2075
+ "nodeType": "VariableDeclaration",
2076
+ "scope": 4716,
2077
+ "src": "5043:18:20",
2078
+ "stateVariable": false,
2079
+ "storageLocation": "default",
2080
+ "typeDescriptions": {
2081
+ "typeIdentifier": "t_bytes32",
2082
+ "typeString": "bytes32"
2083
+ },
2084
+ "typeName": {
2085
+ "id": 4702,
2086
+ "name": "bytes32",
2087
+ "nodeType": "ElementaryTypeName",
2088
+ "src": "5043:7:20",
2089
+ "typeDescriptions": {
2090
+ "typeIdentifier": "t_bytes32",
2091
+ "typeString": "bytes32"
2092
+ }
2093
+ },
2094
+ "visibility": "internal"
2095
+ }
2096
+ ],
2097
+ "src": "5042:20:20"
2098
+ },
2099
+ "returnParameters": {
2100
+ "id": 4707,
2101
+ "nodeType": "ParameterList",
2102
+ "parameters": [
2103
+ {
2104
+ "constant": false,
2105
+ "id": 4706,
2106
+ "mutability": "mutable",
2107
+ "name": "",
2108
+ "nameLocation": "-1:-1:-1",
2109
+ "nodeType": "VariableDeclaration",
2110
+ "scope": 4716,
2111
+ "src": "5094:7:20",
2112
+ "stateVariable": false,
2113
+ "storageLocation": "default",
2114
+ "typeDescriptions": {
2115
+ "typeIdentifier": "t_bytes32",
2116
+ "typeString": "bytes32"
2117
+ },
2118
+ "typeName": {
2119
+ "id": 4705,
2120
+ "name": "bytes32",
2121
+ "nodeType": "ElementaryTypeName",
2122
+ "src": "5094:7:20",
2123
+ "typeDescriptions": {
2124
+ "typeIdentifier": "t_bytes32",
2125
+ "typeString": "bytes32"
2126
+ }
2127
+ },
2128
+ "visibility": "internal"
2129
+ }
2130
+ ],
2131
+ "src": "5093:9:20"
2132
+ },
2133
+ "scope": 4783,
2134
+ "src": "5017:176:20",
2135
+ "stateMutability": "view",
2136
+ "virtual": true,
2137
+ "visibility": "internal"
2138
+ },
2139
+ {
2140
+ "baseFunctions": [
2141
+ 171
2142
+ ],
2143
+ "body": {
2144
+ "id": 4757,
2145
+ "nodeType": "Block",
2146
+ "src": "5556:229:20",
2147
+ "statements": [
2148
+ {
2149
+ "expression": {
2150
+ "components": [
2151
+ {
2152
+ "hexValue": "0f",
2153
+ "id": 4735,
2154
+ "isConstant": false,
2155
+ "isLValue": false,
2156
+ "isPure": true,
2157
+ "kind": "hexString",
2158
+ "lValueRequested": false,
2159
+ "nodeType": "Literal",
2160
+ "src": "5587:7:20",
2161
+ "typeDescriptions": {
2162
+ "typeIdentifier": "t_stringliteral_3d725c5ee53025f027da36bea8d3af3b6a3e9d2d1542d47c162631de48e66c1c",
2163
+ "typeString": "literal_string hex\"0f\""
2164
+ },
2165
+ "value": "\u000f"
2166
+ },
2167
+ {
2168
+ "arguments": [],
2169
+ "expression": {
2170
+ "argumentTypes": [],
2171
+ "id": 4736,
2172
+ "name": "_EIP712Name",
2173
+ "nodeType": "Identifier",
2174
+ "overloadedDeclarations": [],
2175
+ "referencedDeclaration": 4770,
2176
+ "src": "5617:11:20",
2177
+ "typeDescriptions": {
2178
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$",
2179
+ "typeString": "function () view returns (string memory)"
2180
+ }
2181
+ },
2182
+ "id": 4737,
2183
+ "isConstant": false,
2184
+ "isLValue": false,
2185
+ "isPure": false,
2186
+ "kind": "functionCall",
2187
+ "lValueRequested": false,
2188
+ "nameLocations": [],
2189
+ "names": [],
2190
+ "nodeType": "FunctionCall",
2191
+ "src": "5617:13:20",
2192
+ "tryCall": false,
2193
+ "typeDescriptions": {
2194
+ "typeIdentifier": "t_string_memory_ptr",
2195
+ "typeString": "string memory"
2196
+ }
2197
+ },
2198
+ {
2199
+ "arguments": [],
2200
+ "expression": {
2201
+ "argumentTypes": [],
2202
+ "id": 4738,
2203
+ "name": "_EIP712Version",
2204
+ "nodeType": "Identifier",
2205
+ "overloadedDeclarations": [],
2206
+ "referencedDeclaration": 4782,
2207
+ "src": "5644:14:20",
2208
+ "typeDescriptions": {
2209
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$",
2210
+ "typeString": "function () view returns (string memory)"
2211
+ }
2212
+ },
2213
+ "id": 4739,
2214
+ "isConstant": false,
2215
+ "isLValue": false,
2216
+ "isPure": false,
2217
+ "kind": "functionCall",
2218
+ "lValueRequested": false,
2219
+ "nameLocations": [],
2220
+ "names": [],
2221
+ "nodeType": "FunctionCall",
2222
+ "src": "5644:16:20",
2223
+ "tryCall": false,
2224
+ "typeDescriptions": {
2225
+ "typeIdentifier": "t_string_memory_ptr",
2226
+ "typeString": "string memory"
2227
+ }
2228
+ },
2229
+ {
2230
+ "expression": {
2231
+ "id": 4740,
2232
+ "name": "block",
2233
+ "nodeType": "Identifier",
2234
+ "overloadedDeclarations": [],
2235
+ "referencedDeclaration": 4294967292,
2236
+ "src": "5674:5:20",
2237
+ "typeDescriptions": {
2238
+ "typeIdentifier": "t_magic_block",
2239
+ "typeString": "block"
2240
+ }
2241
+ },
2242
+ "id": 4741,
2243
+ "isConstant": false,
2244
+ "isLValue": false,
2245
+ "isPure": false,
2246
+ "lValueRequested": false,
2247
+ "memberLocation": "5680:7:20",
2248
+ "memberName": "chainid",
2249
+ "nodeType": "MemberAccess",
2250
+ "src": "5674:13:20",
2251
+ "typeDescriptions": {
2252
+ "typeIdentifier": "t_uint256",
2253
+ "typeString": "uint256"
2254
+ }
2255
+ },
2256
+ {
2257
+ "arguments": [
2258
+ {
2259
+ "id": 4744,
2260
+ "name": "this",
2261
+ "nodeType": "Identifier",
2262
+ "overloadedDeclarations": [],
2263
+ "referencedDeclaration": 4294967268,
2264
+ "src": "5709:4:20",
2265
+ "typeDescriptions": {
2266
+ "typeIdentifier": "t_contract$_EIP712_$4783",
2267
+ "typeString": "contract EIP712"
2268
+ }
2269
+ }
2270
+ ],
2271
+ "expression": {
2272
+ "argumentTypes": [
2273
+ {
2274
+ "typeIdentifier": "t_contract$_EIP712_$4783",
2275
+ "typeString": "contract EIP712"
2276
+ }
2277
+ ],
2278
+ "id": 4743,
2279
+ "isConstant": false,
2280
+ "isLValue": false,
2281
+ "isPure": true,
2282
+ "lValueRequested": false,
2283
+ "nodeType": "ElementaryTypeNameExpression",
2284
+ "src": "5701:7:20",
2285
+ "typeDescriptions": {
2286
+ "typeIdentifier": "t_type$_t_address_$",
2287
+ "typeString": "type(address)"
2288
+ },
2289
+ "typeName": {
2290
+ "id": 4742,
2291
+ "name": "address",
2292
+ "nodeType": "ElementaryTypeName",
2293
+ "src": "5701:7:20",
2294
+ "typeDescriptions": {}
2295
+ }
2296
+ },
2297
+ "id": 4745,
2298
+ "isConstant": false,
2299
+ "isLValue": false,
2300
+ "isPure": false,
2301
+ "kind": "typeConversion",
2302
+ "lValueRequested": false,
2303
+ "nameLocations": [],
2304
+ "names": [],
2305
+ "nodeType": "FunctionCall",
2306
+ "src": "5701:13:20",
2307
+ "tryCall": false,
2308
+ "typeDescriptions": {
2309
+ "typeIdentifier": "t_address",
2310
+ "typeString": "address"
2311
+ }
2312
+ },
2313
+ {
2314
+ "arguments": [
2315
+ {
2316
+ "hexValue": "30",
2317
+ "id": 4748,
2318
+ "isConstant": false,
2319
+ "isLValue": false,
2320
+ "isPure": true,
2321
+ "kind": "number",
2322
+ "lValueRequested": false,
2323
+ "nodeType": "Literal",
2324
+ "src": "5736:1:20",
2325
+ "typeDescriptions": {
2326
+ "typeIdentifier": "t_rational_0_by_1",
2327
+ "typeString": "int_const 0"
2328
+ },
2329
+ "value": "0"
2330
+ }
2331
+ ],
2332
+ "expression": {
2333
+ "argumentTypes": [
2334
+ {
2335
+ "typeIdentifier": "t_rational_0_by_1",
2336
+ "typeString": "int_const 0"
2337
+ }
2338
+ ],
2339
+ "id": 4747,
2340
+ "isConstant": false,
2341
+ "isLValue": false,
2342
+ "isPure": true,
2343
+ "lValueRequested": false,
2344
+ "nodeType": "ElementaryTypeNameExpression",
2345
+ "src": "5728:7:20",
2346
+ "typeDescriptions": {
2347
+ "typeIdentifier": "t_type$_t_bytes32_$",
2348
+ "typeString": "type(bytes32)"
2349
+ },
2350
+ "typeName": {
2351
+ "id": 4746,
2352
+ "name": "bytes32",
2353
+ "nodeType": "ElementaryTypeName",
2354
+ "src": "5728:7:20",
2355
+ "typeDescriptions": {}
2356
+ }
2357
+ },
2358
+ "id": 4749,
2359
+ "isConstant": false,
2360
+ "isLValue": false,
2361
+ "isPure": true,
2362
+ "kind": "typeConversion",
2363
+ "lValueRequested": false,
2364
+ "nameLocations": [],
2365
+ "names": [],
2366
+ "nodeType": "FunctionCall",
2367
+ "src": "5728:10:20",
2368
+ "tryCall": false,
2369
+ "typeDescriptions": {
2370
+ "typeIdentifier": "t_bytes32",
2371
+ "typeString": "bytes32"
2372
+ }
2373
+ },
2374
+ {
2375
+ "arguments": [
2376
+ {
2377
+ "hexValue": "30",
2378
+ "id": 4753,
2379
+ "isConstant": false,
2380
+ "isLValue": false,
2381
+ "isPure": true,
2382
+ "kind": "number",
2383
+ "lValueRequested": false,
2384
+ "nodeType": "Literal",
2385
+ "src": "5766:1:20",
2386
+ "typeDescriptions": {
2387
+ "typeIdentifier": "t_rational_0_by_1",
2388
+ "typeString": "int_const 0"
2389
+ },
2390
+ "value": "0"
2391
+ }
2392
+ ],
2393
+ "expression": {
2394
+ "argumentTypes": [
2395
+ {
2396
+ "typeIdentifier": "t_rational_0_by_1",
2397
+ "typeString": "int_const 0"
2398
+ }
2399
+ ],
2400
+ "id": 4752,
2401
+ "isConstant": false,
2402
+ "isLValue": false,
2403
+ "isPure": true,
2404
+ "lValueRequested": false,
2405
+ "nodeType": "NewExpression",
2406
+ "src": "5752:13:20",
2407
+ "typeDescriptions": {
2408
+ "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
2409
+ "typeString": "function (uint256) pure returns (uint256[] memory)"
2410
+ },
2411
+ "typeName": {
2412
+ "baseType": {
2413
+ "id": 4750,
2414
+ "name": "uint256",
2415
+ "nodeType": "ElementaryTypeName",
2416
+ "src": "5756:7:20",
2417
+ "typeDescriptions": {
2418
+ "typeIdentifier": "t_uint256",
2419
+ "typeString": "uint256"
2420
+ }
2421
+ },
2422
+ "id": 4751,
2423
+ "nodeType": "ArrayTypeName",
2424
+ "src": "5756:9:20",
2425
+ "typeDescriptions": {
2426
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
2427
+ "typeString": "uint256[]"
2428
+ }
2429
+ }
2430
+ },
2431
+ "id": 4754,
2432
+ "isConstant": false,
2433
+ "isLValue": false,
2434
+ "isPure": true,
2435
+ "kind": "functionCall",
2436
+ "lValueRequested": false,
2437
+ "nameLocations": [],
2438
+ "names": [],
2439
+ "nodeType": "FunctionCall",
2440
+ "src": "5752:16:20",
2441
+ "tryCall": false,
2442
+ "typeDescriptions": {
2443
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
2444
+ "typeString": "uint256[] memory"
2445
+ }
2446
+ }
2447
+ ],
2448
+ "id": 4755,
2449
+ "isConstant": false,
2450
+ "isInlineArray": false,
2451
+ "isLValue": false,
2452
+ "isPure": false,
2453
+ "lValueRequested": false,
2454
+ "nodeType": "TupleExpression",
2455
+ "src": "5573:205:20",
2456
+ "typeDescriptions": {
2457
+ "typeIdentifier": "t_tuple$_t_stringliteral_3d725c5ee53025f027da36bea8d3af3b6a3e9d2d1542d47c162631de48e66c1c_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_address_$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
2458
+ "typeString": "tuple(literal_string hex\"0f\",string memory,string memory,uint256,address,bytes32,uint256[] memory)"
2459
+ }
2460
+ },
2461
+ "functionReturnParameters": 4734,
2462
+ "id": 4756,
2463
+ "nodeType": "Return",
2464
+ "src": "5566:212:20"
2465
+ }
2466
+ ]
2467
+ },
2468
+ "documentation": {
2469
+ "id": 4717,
2470
+ "nodeType": "StructuredDocumentation",
2471
+ "src": "5199:24:20",
2472
+ "text": "@inheritdoc IERC5267"
2473
+ },
2474
+ "functionSelector": "84b0196e",
2475
+ "id": 4758,
2476
+ "implemented": true,
2477
+ "kind": "function",
2478
+ "modifiers": [],
2479
+ "name": "eip712Domain",
2480
+ "nameLocation": "5237:12:20",
2481
+ "nodeType": "FunctionDefinition",
2482
+ "parameters": {
2483
+ "id": 4718,
2484
+ "nodeType": "ParameterList",
2485
+ "parameters": [],
2486
+ "src": "5249:2:20"
2487
+ },
2488
+ "returnParameters": {
2489
+ "id": 4734,
2490
+ "nodeType": "ParameterList",
2491
+ "parameters": [
2492
+ {
2493
+ "constant": false,
2494
+ "id": 4720,
2495
+ "mutability": "mutable",
2496
+ "name": "fields",
2497
+ "nameLocation": "5333:6:20",
2498
+ "nodeType": "VariableDeclaration",
2499
+ "scope": 4758,
2500
+ "src": "5326:13:20",
2501
+ "stateVariable": false,
2502
+ "storageLocation": "default",
2503
+ "typeDescriptions": {
2504
+ "typeIdentifier": "t_bytes1",
2505
+ "typeString": "bytes1"
2506
+ },
2507
+ "typeName": {
2508
+ "id": 4719,
2509
+ "name": "bytes1",
2510
+ "nodeType": "ElementaryTypeName",
2511
+ "src": "5326:6:20",
2512
+ "typeDescriptions": {
2513
+ "typeIdentifier": "t_bytes1",
2514
+ "typeString": "bytes1"
2515
+ }
2516
+ },
2517
+ "visibility": "internal"
2518
+ },
2519
+ {
2520
+ "constant": false,
2521
+ "id": 4722,
2522
+ "mutability": "mutable",
2523
+ "name": "name",
2524
+ "nameLocation": "5367:4:20",
2525
+ "nodeType": "VariableDeclaration",
2526
+ "scope": 4758,
2527
+ "src": "5353:18:20",
2528
+ "stateVariable": false,
2529
+ "storageLocation": "memory",
2530
+ "typeDescriptions": {
2531
+ "typeIdentifier": "t_string_memory_ptr",
2532
+ "typeString": "string"
2533
+ },
2534
+ "typeName": {
2535
+ "id": 4721,
2536
+ "name": "string",
2537
+ "nodeType": "ElementaryTypeName",
2538
+ "src": "5353:6:20",
2539
+ "typeDescriptions": {
2540
+ "typeIdentifier": "t_string_storage_ptr",
2541
+ "typeString": "string"
2542
+ }
2543
+ },
2544
+ "visibility": "internal"
2545
+ },
2546
+ {
2547
+ "constant": false,
2548
+ "id": 4724,
2549
+ "mutability": "mutable",
2550
+ "name": "version",
2551
+ "nameLocation": "5399:7:20",
2552
+ "nodeType": "VariableDeclaration",
2553
+ "scope": 4758,
2554
+ "src": "5385:21:20",
2555
+ "stateVariable": false,
2556
+ "storageLocation": "memory",
2557
+ "typeDescriptions": {
2558
+ "typeIdentifier": "t_string_memory_ptr",
2559
+ "typeString": "string"
2560
+ },
2561
+ "typeName": {
2562
+ "id": 4723,
2563
+ "name": "string",
2564
+ "nodeType": "ElementaryTypeName",
2565
+ "src": "5385:6:20",
2566
+ "typeDescriptions": {
2567
+ "typeIdentifier": "t_string_storage_ptr",
2568
+ "typeString": "string"
2569
+ }
2570
+ },
2571
+ "visibility": "internal"
2572
+ },
2573
+ {
2574
+ "constant": false,
2575
+ "id": 4726,
2576
+ "mutability": "mutable",
2577
+ "name": "chainId",
2578
+ "nameLocation": "5428:7:20",
2579
+ "nodeType": "VariableDeclaration",
2580
+ "scope": 4758,
2581
+ "src": "5420:15:20",
2582
+ "stateVariable": false,
2583
+ "storageLocation": "default",
2584
+ "typeDescriptions": {
2585
+ "typeIdentifier": "t_uint256",
2586
+ "typeString": "uint256"
2587
+ },
2588
+ "typeName": {
2589
+ "id": 4725,
2590
+ "name": "uint256",
2591
+ "nodeType": "ElementaryTypeName",
2592
+ "src": "5420:7:20",
2593
+ "typeDescriptions": {
2594
+ "typeIdentifier": "t_uint256",
2595
+ "typeString": "uint256"
2596
+ }
2597
+ },
2598
+ "visibility": "internal"
2599
+ },
2600
+ {
2601
+ "constant": false,
2602
+ "id": 4728,
2603
+ "mutability": "mutable",
2604
+ "name": "verifyingContract",
2605
+ "nameLocation": "5457:17:20",
2606
+ "nodeType": "VariableDeclaration",
2607
+ "scope": 4758,
2608
+ "src": "5449:25:20",
2609
+ "stateVariable": false,
2610
+ "storageLocation": "default",
2611
+ "typeDescriptions": {
2612
+ "typeIdentifier": "t_address",
2613
+ "typeString": "address"
2614
+ },
2615
+ "typeName": {
2616
+ "id": 4727,
2617
+ "name": "address",
2618
+ "nodeType": "ElementaryTypeName",
2619
+ "src": "5449:7:20",
2620
+ "stateMutability": "nonpayable",
2621
+ "typeDescriptions": {
2622
+ "typeIdentifier": "t_address",
2623
+ "typeString": "address"
2624
+ }
2625
+ },
2626
+ "visibility": "internal"
2627
+ },
2628
+ {
2629
+ "constant": false,
2630
+ "id": 4730,
2631
+ "mutability": "mutable",
2632
+ "name": "salt",
2633
+ "nameLocation": "5496:4:20",
2634
+ "nodeType": "VariableDeclaration",
2635
+ "scope": 4758,
2636
+ "src": "5488:12:20",
2637
+ "stateVariable": false,
2638
+ "storageLocation": "default",
2639
+ "typeDescriptions": {
2640
+ "typeIdentifier": "t_bytes32",
2641
+ "typeString": "bytes32"
2642
+ },
2643
+ "typeName": {
2644
+ "id": 4729,
2645
+ "name": "bytes32",
2646
+ "nodeType": "ElementaryTypeName",
2647
+ "src": "5488:7:20",
2648
+ "typeDescriptions": {
2649
+ "typeIdentifier": "t_bytes32",
2650
+ "typeString": "bytes32"
2651
+ }
2652
+ },
2653
+ "visibility": "internal"
2654
+ },
2655
+ {
2656
+ "constant": false,
2657
+ "id": 4733,
2658
+ "mutability": "mutable",
2659
+ "name": "extensions",
2660
+ "nameLocation": "5531:10:20",
2661
+ "nodeType": "VariableDeclaration",
2662
+ "scope": 4758,
2663
+ "src": "5514:27:20",
2664
+ "stateVariable": false,
2665
+ "storageLocation": "memory",
2666
+ "typeDescriptions": {
2667
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
2668
+ "typeString": "uint256[]"
2669
+ },
2670
+ "typeName": {
2671
+ "baseType": {
2672
+ "id": 4731,
2673
+ "name": "uint256",
2674
+ "nodeType": "ElementaryTypeName",
2675
+ "src": "5514:7:20",
2676
+ "typeDescriptions": {
2677
+ "typeIdentifier": "t_uint256",
2678
+ "typeString": "uint256"
2679
+ }
2680
+ },
2681
+ "id": 4732,
2682
+ "nodeType": "ArrayTypeName",
2683
+ "src": "5514:9:20",
2684
+ "typeDescriptions": {
2685
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
2686
+ "typeString": "uint256[]"
2687
+ }
2688
+ },
2689
+ "visibility": "internal"
2690
+ }
2691
+ ],
2692
+ "src": "5312:239:20"
2693
+ },
2694
+ "scope": 4783,
2695
+ "src": "5228:557:20",
2696
+ "stateMutability": "view",
2697
+ "virtual": true,
2698
+ "visibility": "public"
2699
+ },
2700
+ {
2701
+ "body": {
2702
+ "id": 4769,
2703
+ "nodeType": "Block",
2704
+ "src": "6166:65:20",
2705
+ "statements": [
2706
+ {
2707
+ "expression": {
2708
+ "arguments": [
2709
+ {
2710
+ "id": 4766,
2711
+ "name": "_nameFallback",
2712
+ "nodeType": "Identifier",
2713
+ "overloadedDeclarations": [],
2714
+ "referencedDeclaration": 4593,
2715
+ "src": "6210:13:20",
2716
+ "typeDescriptions": {
2717
+ "typeIdentifier": "t_string_storage",
2718
+ "typeString": "string storage ref"
2719
+ }
2720
+ }
2721
+ ],
2722
+ "expression": {
2723
+ "argumentTypes": [
2724
+ {
2725
+ "typeIdentifier": "t_string_storage",
2726
+ "typeString": "string storage ref"
2727
+ }
2728
+ ],
2729
+ "expression": {
2730
+ "id": 4764,
2731
+ "name": "_name",
2732
+ "nodeType": "Identifier",
2733
+ "overloadedDeclarations": [],
2734
+ "referencedDeclaration": 4588,
2735
+ "src": "6183:5:20",
2736
+ "typeDescriptions": {
2737
+ "typeIdentifier": "t_userDefinedValueType$_ShortString_$2471",
2738
+ "typeString": "ShortString"
2739
+ }
2740
+ },
2741
+ "id": 4765,
2742
+ "isConstant": false,
2743
+ "isLValue": false,
2744
+ "isPure": false,
2745
+ "lValueRequested": false,
2746
+ "memberLocation": "6189:20:20",
2747
+ "memberName": "toStringWithFallback",
2748
+ "nodeType": "MemberAccess",
2749
+ "referencedDeclaration": 2650,
2750
+ "src": "6183:26:20",
2751
+ "typeDescriptions": {
2752
+ "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_ShortString_$2471_$_t_string_storage_ptr_$returns$_t_string_memory_ptr_$attached_to$_t_userDefinedValueType$_ShortString_$2471_$",
2753
+ "typeString": "function (ShortString,string storage pointer) pure returns (string memory)"
2754
+ }
2755
+ },
2756
+ "id": 4767,
2757
+ "isConstant": false,
2758
+ "isLValue": false,
2759
+ "isPure": false,
2760
+ "kind": "functionCall",
2761
+ "lValueRequested": false,
2762
+ "nameLocations": [],
2763
+ "names": [],
2764
+ "nodeType": "FunctionCall",
2765
+ "src": "6183:41:20",
2766
+ "tryCall": false,
2767
+ "typeDescriptions": {
2768
+ "typeIdentifier": "t_string_memory_ptr",
2769
+ "typeString": "string memory"
2770
+ }
2771
+ },
2772
+ "functionReturnParameters": 4763,
2773
+ "id": 4768,
2774
+ "nodeType": "Return",
2775
+ "src": "6176:48:20"
2776
+ }
2777
+ ]
2778
+ },
2779
+ "documentation": {
2780
+ "id": 4759,
2781
+ "nodeType": "StructuredDocumentation",
2782
+ "src": "5791:256:20",
2783
+ "text": " @dev The name parameter for the EIP712 domain.\n NOTE: By default this function reads _name which is an immutable value.\n It only reads from storage if necessary (in case the value is too large to fit in a ShortString)."
2784
+ },
2785
+ "id": 4770,
2786
+ "implemented": true,
2787
+ "kind": "function",
2788
+ "modifiers": [],
2789
+ "name": "_EIP712Name",
2790
+ "nameLocation": "6114:11:20",
2791
+ "nodeType": "FunctionDefinition",
2792
+ "parameters": {
2793
+ "id": 4760,
2794
+ "nodeType": "ParameterList",
2795
+ "parameters": [],
2796
+ "src": "6125:2:20"
2797
+ },
2798
+ "returnParameters": {
2799
+ "id": 4763,
2800
+ "nodeType": "ParameterList",
2801
+ "parameters": [
2802
+ {
2803
+ "constant": false,
2804
+ "id": 4762,
2805
+ "mutability": "mutable",
2806
+ "name": "",
2807
+ "nameLocation": "-1:-1:-1",
2808
+ "nodeType": "VariableDeclaration",
2809
+ "scope": 4770,
2810
+ "src": "6151:13:20",
2811
+ "stateVariable": false,
2812
+ "storageLocation": "memory",
2813
+ "typeDescriptions": {
2814
+ "typeIdentifier": "t_string_memory_ptr",
2815
+ "typeString": "string"
2816
+ },
2817
+ "typeName": {
2818
+ "id": 4761,
2819
+ "name": "string",
2820
+ "nodeType": "ElementaryTypeName",
2821
+ "src": "6151:6:20",
2822
+ "typeDescriptions": {
2823
+ "typeIdentifier": "t_string_storage_ptr",
2824
+ "typeString": "string"
2825
+ }
2826
+ },
2827
+ "visibility": "internal"
2828
+ }
2829
+ ],
2830
+ "src": "6150:15:20"
2831
+ },
2832
+ "scope": 4783,
2833
+ "src": "6105:126:20",
2834
+ "stateMutability": "view",
2835
+ "virtual": false,
2836
+ "visibility": "internal"
2837
+ },
2838
+ {
2839
+ "body": {
2840
+ "id": 4781,
2841
+ "nodeType": "Block",
2842
+ "src": "6621:71:20",
2843
+ "statements": [
2844
+ {
2845
+ "expression": {
2846
+ "arguments": [
2847
+ {
2848
+ "id": 4778,
2849
+ "name": "_versionFallback",
2850
+ "nodeType": "Identifier",
2851
+ "overloadedDeclarations": [],
2852
+ "referencedDeclaration": 4595,
2853
+ "src": "6668:16:20",
2854
+ "typeDescriptions": {
2855
+ "typeIdentifier": "t_string_storage",
2856
+ "typeString": "string storage ref"
2857
+ }
2858
+ }
2859
+ ],
2860
+ "expression": {
2861
+ "argumentTypes": [
2862
+ {
2863
+ "typeIdentifier": "t_string_storage",
2864
+ "typeString": "string storage ref"
2865
+ }
2866
+ ],
2867
+ "expression": {
2868
+ "id": 4776,
2869
+ "name": "_version",
2870
+ "nodeType": "Identifier",
2871
+ "overloadedDeclarations": [],
2872
+ "referencedDeclaration": 4591,
2873
+ "src": "6638:8:20",
2874
+ "typeDescriptions": {
2875
+ "typeIdentifier": "t_userDefinedValueType$_ShortString_$2471",
2876
+ "typeString": "ShortString"
2877
+ }
2878
+ },
2879
+ "id": 4777,
2880
+ "isConstant": false,
2881
+ "isLValue": false,
2882
+ "isPure": false,
2883
+ "lValueRequested": false,
2884
+ "memberLocation": "6647:20:20",
2885
+ "memberName": "toStringWithFallback",
2886
+ "nodeType": "MemberAccess",
2887
+ "referencedDeclaration": 2650,
2888
+ "src": "6638:29:20",
2889
+ "typeDescriptions": {
2890
+ "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_ShortString_$2471_$_t_string_storage_ptr_$returns$_t_string_memory_ptr_$attached_to$_t_userDefinedValueType$_ShortString_$2471_$",
2891
+ "typeString": "function (ShortString,string storage pointer) pure returns (string memory)"
2892
+ }
2893
+ },
2894
+ "id": 4779,
2895
+ "isConstant": false,
2896
+ "isLValue": false,
2897
+ "isPure": false,
2898
+ "kind": "functionCall",
2899
+ "lValueRequested": false,
2900
+ "nameLocations": [],
2901
+ "names": [],
2902
+ "nodeType": "FunctionCall",
2903
+ "src": "6638:47:20",
2904
+ "tryCall": false,
2905
+ "typeDescriptions": {
2906
+ "typeIdentifier": "t_string_memory_ptr",
2907
+ "typeString": "string memory"
2908
+ }
2909
+ },
2910
+ "functionReturnParameters": 4775,
2911
+ "id": 4780,
2912
+ "nodeType": "Return",
2913
+ "src": "6631:54:20"
2914
+ }
2915
+ ]
2916
+ },
2917
+ "documentation": {
2918
+ "id": 4771,
2919
+ "nodeType": "StructuredDocumentation",
2920
+ "src": "6237:262:20",
2921
+ "text": " @dev The version parameter for the EIP712 domain.\n NOTE: By default this function reads _version which is an immutable value.\n It only reads from storage if necessary (in case the value is too large to fit in a ShortString)."
2922
+ },
2923
+ "id": 4782,
2924
+ "implemented": true,
2925
+ "kind": "function",
2926
+ "modifiers": [],
2927
+ "name": "_EIP712Version",
2928
+ "nameLocation": "6566:14:20",
2929
+ "nodeType": "FunctionDefinition",
2930
+ "parameters": {
2931
+ "id": 4772,
2932
+ "nodeType": "ParameterList",
2933
+ "parameters": [],
2934
+ "src": "6580:2:20"
2935
+ },
2936
+ "returnParameters": {
2937
+ "id": 4775,
2938
+ "nodeType": "ParameterList",
2939
+ "parameters": [
2940
+ {
2941
+ "constant": false,
2942
+ "id": 4774,
2943
+ "mutability": "mutable",
2944
+ "name": "",
2945
+ "nameLocation": "-1:-1:-1",
2946
+ "nodeType": "VariableDeclaration",
2947
+ "scope": 4782,
2948
+ "src": "6606:13:20",
2949
+ "stateVariable": false,
2950
+ "storageLocation": "memory",
2951
+ "typeDescriptions": {
2952
+ "typeIdentifier": "t_string_memory_ptr",
2953
+ "typeString": "string"
2954
+ },
2955
+ "typeName": {
2956
+ "id": 4773,
2957
+ "name": "string",
2958
+ "nodeType": "ElementaryTypeName",
2959
+ "src": "6606:6:20",
2960
+ "typeDescriptions": {
2961
+ "typeIdentifier": "t_string_storage_ptr",
2962
+ "typeString": "string"
2963
+ }
2964
+ },
2965
+ "visibility": "internal"
2966
+ }
2967
+ ],
2968
+ "src": "6605:15:20"
2969
+ },
2970
+ "scope": 4783,
2971
+ "src": "6557:135:20",
2972
+ "stateMutability": "view",
2973
+ "virtual": false,
2974
+ "visibility": "internal"
2975
+ }
2976
+ ],
2977
+ "scope": 4784,
2978
+ "src": "1960:4734:20",
2979
+ "usedErrors": [
2980
+ 2479,
2981
+ 2481
2982
+ ],
2983
+ "usedEvents": [
2984
+ 152
2985
+ ]
2986
+ }
2987
+ ],
2988
+ "src": "113:6582:20"
2989
+ },
2990
+ "compiler": {
2991
+ "name": "solc",
2992
+ "version": "0.8.21+commit.d9974bed.Emscripten.clang"
2993
+ },
2994
+ "networks": {},
2995
+ "schemaVersion": "3.4.16",
2996
+ "updatedAt": "2026-01-24T20:23:04.152Z",
2997
+ "devdoc": {
2998
+ "custom:oz-upgrades-unsafe-allow": "state-variable-immutable",
2999
+ "details": "https://eips.ethereum.org/EIPS/eip-712[EIP-712] is a standard for hashing and signing of typed structured data. The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to produce the hash of their typed data using a combination of `abi.encode` and `keccak256`. This contract implements the EIP-712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA ({_hashTypedDataV4}). The implementation of the domain separator was designed to be as efficient as possible while still properly updating the chain id to protect against replay attacks on an eventual fork of the chain. NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask]. NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the separator from the immutable values, which is cheaper than accessing a cached version in cold storage.",
3000
+ "events": {
3001
+ "EIP712DomainChanged()": {
3002
+ "details": "MAY be emitted to signal that the domain could have changed."
3003
+ }
3004
+ },
3005
+ "kind": "dev",
3006
+ "methods": {
3007
+ "constructor": {
3008
+ "details": "Initializes the domain separator and parameter caches. The meaning of `name` and `version` is specified in https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP-712]: - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol. - `version`: the current major version of the signing domain. NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart contract upgrade]."
3009
+ },
3010
+ "eip712Domain()": {
3011
+ "details": "returns the fields and values that describe the domain separator used by this contract for EIP-712 signature."
3012
+ }
3013
+ },
3014
+ "version": 1
3015
+ },
3016
+ "userdoc": {
3017
+ "kind": "user",
3018
+ "methods": {},
3019
+ "version": 1
3020
+ }
3021
+ }