@zkpassport/sdk 0.8.8 → 0.9.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.
- package/dist/cjs/constants.cjs +42 -0
- package/dist/cjs/constants.d.cts +7 -0
- package/dist/cjs/index.cjs +4224 -3934
- package/dist/cjs/index.d.cts +5 -204
- package/dist/cjs/public-input-checker.cjs +2058 -0
- package/dist/cjs/public-input-checker.d.cts +69 -0
- package/dist/cjs/solidity-verifier.cjs +2558 -0
- package/dist/cjs/solidity-verifier.d.cts +32 -0
- package/dist/cjs/types.cjs +18 -0
- package/dist/cjs/types.d.cts +191 -0
- package/dist/esm/chunk-6F4PWJZI.js +0 -0
- package/dist/esm/chunk-BUYJZSHP.js +2083 -0
- package/dist/esm/chunk-JITNXEQS.js +2542 -0
- package/dist/esm/chunk-XOQW7AOQ.js +14 -0
- package/dist/esm/constants.d.ts +7 -0
- package/dist/esm/constants.js +14 -0
- package/dist/esm/index.d.ts +5 -204
- package/dist/esm/index.js +31 -4335
- package/dist/esm/public-input-checker.d.ts +69 -0
- package/dist/esm/public-input-checker.js +7 -0
- package/dist/esm/solidity-verifier.d.ts +32 -0
- package/dist/esm/solidity-verifier.js +7 -0
- package/dist/esm/types.d.ts +191 -0
- package/dist/esm/types.js +1 -0
- package/package.json +2 -2
package/dist/esm/index.js
CHANGED
|
@@ -1,2375 +1,28 @@
|
|
|
1
1
|
import {
|
|
2
2
|
noLogger
|
|
3
3
|
} from "./chunk-AFLQN3AC.js";
|
|
4
|
+
import {
|
|
5
|
+
PublicInputChecker
|
|
6
|
+
} from "./chunk-BUYJZSHP.js";
|
|
7
|
+
import {
|
|
8
|
+
SolidityVerifier
|
|
9
|
+
} from "./chunk-JITNXEQS.js";
|
|
10
|
+
import {
|
|
11
|
+
DEFAULT_VALIDITY,
|
|
12
|
+
VERSION
|
|
13
|
+
} from "./chunk-XOQW7AOQ.js";
|
|
14
|
+
import "./chunk-6F4PWJZI.js";
|
|
4
15
|
|
|
5
16
|
// src/index.ts
|
|
6
17
|
import { getAlpha3Code, registerLocale } from "i18n-iso-countries";
|
|
7
18
|
import {
|
|
8
19
|
getProofData,
|
|
9
|
-
getCommitmentFromDSCProof,
|
|
10
|
-
getCommitmentInFromIDDataProof,
|
|
11
|
-
getCommitmentOutFromIDDataProof,
|
|
12
|
-
getNullifierFromDisclosureProof,
|
|
13
|
-
getCommitmentInFromIntegrityProof,
|
|
14
|
-
getCommitmentOutFromIntegrityProof,
|
|
15
|
-
getCommitmentInFromDisclosureProof,
|
|
16
|
-
getMerkleRootFromDSCProof,
|
|
17
|
-
getCurrentDateFromIntegrityProof,
|
|
18
|
-
DisclosedData,
|
|
19
|
-
formatName,
|
|
20
20
|
getNumberOfPublicInputs,
|
|
21
|
-
getParameterCommitmentFromDisclosureProof,
|
|
22
|
-
getCountryParameterCommitment,
|
|
23
|
-
getDiscloseParameterCommitment,
|
|
24
|
-
getDateParameterCommitment,
|
|
25
|
-
getCertificateRegistryRootFromOuterProof,
|
|
26
|
-
getParamCommitmentsFromOuterProof,
|
|
27
|
-
getCurrentDateFromCommittedInputs,
|
|
28
|
-
getMinAgeFromCommittedInputs,
|
|
29
|
-
getMaxAgeFromCommittedInputs,
|
|
30
|
-
getAgeParameterCommitment,
|
|
31
|
-
getMinDateFromCommittedInputs,
|
|
32
|
-
getMaxDateFromCommittedInputs,
|
|
33
|
-
getCurrentDateFromOuterProof,
|
|
34
|
-
getNullifierFromOuterProof,
|
|
35
|
-
getAgeEVMParameterCommitment,
|
|
36
|
-
getDateEVMParameterCommitment,
|
|
37
|
-
getDiscloseEVMParameterCommitment,
|
|
38
|
-
getCountryEVMParameterCommitment,
|
|
39
|
-
rightPadArrayWithZeros,
|
|
40
|
-
getCommittedInputCount,
|
|
41
|
-
ProofType,
|
|
42
|
-
getScopeHash,
|
|
43
|
-
getScopeFromOuterProof,
|
|
44
|
-
getSubscopeFromOuterProof,
|
|
45
|
-
getServiceScopeHash,
|
|
46
|
-
getBindEVMParameterCommitment,
|
|
47
|
-
getBindParameterCommitment,
|
|
48
|
-
formatBoundData,
|
|
49
|
-
getCircuitRegistryRootFromOuterProof,
|
|
50
|
-
areDatesEqual,
|
|
51
21
|
formatQueryResultDates,
|
|
52
|
-
|
|
53
|
-
getBirthdateMaxDateTimestamp,
|
|
54
|
-
SanctionsBuilder,
|
|
55
|
-
SECONDS_BETWEEN_1900_AND_1970,
|
|
56
|
-
numberToBytesBE
|
|
22
|
+
NullifierType
|
|
57
23
|
} from "@zkpassport/utils";
|
|
58
|
-
import { bytesToHex } from "@noble/ciphers/utils";
|
|
59
24
|
import i18en from "i18n-iso-countries/langs/en.json";
|
|
60
25
|
import { Buffer } from "buffer/";
|
|
61
|
-
import { sha256 } from "@noble/hashes/sha2";
|
|
62
|
-
import { hexToBytes } from "@noble/hashes/utils";
|
|
63
|
-
|
|
64
|
-
// src/assets/abi/ZKPassportVerifier.json
|
|
65
|
-
var ZKPassportVerifier_default = {
|
|
66
|
-
abi: [
|
|
67
|
-
{
|
|
68
|
-
type: "constructor",
|
|
69
|
-
inputs: [{ name: "_rootRegistry", type: "address", internalType: "address" }],
|
|
70
|
-
stateMutability: "nonpayable"
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
type: "function",
|
|
74
|
-
name: "CERTIFICATE_REGISTRY_ID",
|
|
75
|
-
inputs: [],
|
|
76
|
-
outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }],
|
|
77
|
-
stateMutability: "view"
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
type: "function",
|
|
81
|
-
name: "CIRCUIT_REGISTRY_ID",
|
|
82
|
-
inputs: [],
|
|
83
|
-
outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }],
|
|
84
|
-
stateMutability: "view"
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
type: "function",
|
|
88
|
-
name: "SANCTIONS_REGISTRY_ID",
|
|
89
|
-
inputs: [],
|
|
90
|
-
outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }],
|
|
91
|
-
stateMutability: "view"
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
type: "function",
|
|
95
|
-
name: "addVerifiers",
|
|
96
|
-
inputs: [
|
|
97
|
-
{ name: "vkeyHashes", type: "bytes32[]", internalType: "bytes32[]" },
|
|
98
|
-
{ name: "verifiers", type: "address[]", internalType: "address[]" }
|
|
99
|
-
],
|
|
100
|
-
outputs: [],
|
|
101
|
-
stateMutability: "nonpayable"
|
|
102
|
-
},
|
|
103
|
-
{
|
|
104
|
-
type: "function",
|
|
105
|
-
name: "admin",
|
|
106
|
-
inputs: [],
|
|
107
|
-
outputs: [{ name: "", type: "address", internalType: "address" }],
|
|
108
|
-
stateMutability: "view"
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
type: "function",
|
|
112
|
-
name: "enforceSanctionsRoot",
|
|
113
|
-
inputs: [
|
|
114
|
-
{
|
|
115
|
-
name: "params",
|
|
116
|
-
type: "tuple",
|
|
117
|
-
internalType: "struct ProofVerificationParams",
|
|
118
|
-
components: [
|
|
119
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
120
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
121
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
122
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
123
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
124
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
125
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
126
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
127
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
128
|
-
]
|
|
129
|
-
}
|
|
130
|
-
],
|
|
131
|
-
outputs: [],
|
|
132
|
-
stateMutability: "view"
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
type: "function",
|
|
136
|
-
name: "getBoundData",
|
|
137
|
-
inputs: [
|
|
138
|
-
{
|
|
139
|
-
name: "params",
|
|
140
|
-
type: "tuple",
|
|
141
|
-
internalType: "struct ProofVerificationParams",
|
|
142
|
-
components: [
|
|
143
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
144
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
145
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
146
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
147
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
148
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
149
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
150
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
151
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
152
|
-
]
|
|
153
|
-
}
|
|
154
|
-
],
|
|
155
|
-
outputs: [
|
|
156
|
-
{
|
|
157
|
-
name: "boundData",
|
|
158
|
-
type: "tuple",
|
|
159
|
-
internalType: "struct BoundData",
|
|
160
|
-
components: [
|
|
161
|
-
{ name: "senderAddress", type: "address", internalType: "address" },
|
|
162
|
-
{ name: "chainId", type: "uint256", internalType: "uint256" },
|
|
163
|
-
{ name: "customData", type: "string", internalType: "string" }
|
|
164
|
-
]
|
|
165
|
-
}
|
|
166
|
-
],
|
|
167
|
-
stateMutability: "pure"
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
type: "function",
|
|
171
|
-
name: "getDisclosedData",
|
|
172
|
-
inputs: [
|
|
173
|
-
{
|
|
174
|
-
name: "params",
|
|
175
|
-
type: "tuple",
|
|
176
|
-
internalType: "struct ProofVerificationParams",
|
|
177
|
-
components: [
|
|
178
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
179
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
180
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
181
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
182
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
183
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
184
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
185
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
186
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
187
|
-
]
|
|
188
|
-
},
|
|
189
|
-
{ name: "isIDCard", type: "bool", internalType: "bool" }
|
|
190
|
-
],
|
|
191
|
-
outputs: [
|
|
192
|
-
{
|
|
193
|
-
name: "disclosedData",
|
|
194
|
-
type: "tuple",
|
|
195
|
-
internalType: "struct DisclosedData",
|
|
196
|
-
components: [
|
|
197
|
-
{ name: "name", type: "string", internalType: "string" },
|
|
198
|
-
{ name: "issuingCountry", type: "string", internalType: "string" },
|
|
199
|
-
{ name: "nationality", type: "string", internalType: "string" },
|
|
200
|
-
{ name: "gender", type: "string", internalType: "string" },
|
|
201
|
-
{ name: "birthDate", type: "string", internalType: "string" },
|
|
202
|
-
{ name: "expiryDate", type: "string", internalType: "string" },
|
|
203
|
-
{ name: "documentNumber", type: "string", internalType: "string" },
|
|
204
|
-
{ name: "documentType", type: "string", internalType: "string" }
|
|
205
|
-
]
|
|
206
|
-
}
|
|
207
|
-
],
|
|
208
|
-
stateMutability: "pure"
|
|
209
|
-
},
|
|
210
|
-
{
|
|
211
|
-
type: "function",
|
|
212
|
-
name: "isAgeAbove",
|
|
213
|
-
inputs: [
|
|
214
|
-
{ name: "minAge", type: "uint8", internalType: "uint8" },
|
|
215
|
-
{
|
|
216
|
-
name: "params",
|
|
217
|
-
type: "tuple",
|
|
218
|
-
internalType: "struct ProofVerificationParams",
|
|
219
|
-
components: [
|
|
220
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
221
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
222
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
223
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
224
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
225
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
226
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
227
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
228
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
229
|
-
]
|
|
230
|
-
}
|
|
231
|
-
],
|
|
232
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
233
|
-
stateMutability: "view"
|
|
234
|
-
},
|
|
235
|
-
{
|
|
236
|
-
type: "function",
|
|
237
|
-
name: "isAgeAboveOrEqual",
|
|
238
|
-
inputs: [
|
|
239
|
-
{ name: "minAge", type: "uint8", internalType: "uint8" },
|
|
240
|
-
{
|
|
241
|
-
name: "params",
|
|
242
|
-
type: "tuple",
|
|
243
|
-
internalType: "struct ProofVerificationParams",
|
|
244
|
-
components: [
|
|
245
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
246
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
247
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
248
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
249
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
250
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
251
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
252
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
253
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
254
|
-
]
|
|
255
|
-
}
|
|
256
|
-
],
|
|
257
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
258
|
-
stateMutability: "view"
|
|
259
|
-
},
|
|
260
|
-
{
|
|
261
|
-
type: "function",
|
|
262
|
-
name: "isAgeBelow",
|
|
263
|
-
inputs: [
|
|
264
|
-
{ name: "maxAge", type: "uint8", internalType: "uint8" },
|
|
265
|
-
{
|
|
266
|
-
name: "params",
|
|
267
|
-
type: "tuple",
|
|
268
|
-
internalType: "struct ProofVerificationParams",
|
|
269
|
-
components: [
|
|
270
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
271
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
272
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
273
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
274
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
275
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
276
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
277
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
278
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
279
|
-
]
|
|
280
|
-
}
|
|
281
|
-
],
|
|
282
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
283
|
-
stateMutability: "view"
|
|
284
|
-
},
|
|
285
|
-
{
|
|
286
|
-
type: "function",
|
|
287
|
-
name: "isAgeBelowOrEqual",
|
|
288
|
-
inputs: [
|
|
289
|
-
{ name: "maxAge", type: "uint8", internalType: "uint8" },
|
|
290
|
-
{
|
|
291
|
-
name: "params",
|
|
292
|
-
type: "tuple",
|
|
293
|
-
internalType: "struct ProofVerificationParams",
|
|
294
|
-
components: [
|
|
295
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
296
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
297
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
298
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
299
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
300
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
301
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
302
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
303
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
304
|
-
]
|
|
305
|
-
}
|
|
306
|
-
],
|
|
307
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
308
|
-
stateMutability: "view"
|
|
309
|
-
},
|
|
310
|
-
{
|
|
311
|
-
type: "function",
|
|
312
|
-
name: "isAgeBetween",
|
|
313
|
-
inputs: [
|
|
314
|
-
{ name: "minAge", type: "uint8", internalType: "uint8" },
|
|
315
|
-
{ name: "maxAge", type: "uint8", internalType: "uint8" },
|
|
316
|
-
{
|
|
317
|
-
name: "params",
|
|
318
|
-
type: "tuple",
|
|
319
|
-
internalType: "struct ProofVerificationParams",
|
|
320
|
-
components: [
|
|
321
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
322
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
323
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
324
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
325
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
326
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
327
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
328
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
329
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
330
|
-
]
|
|
331
|
-
}
|
|
332
|
-
],
|
|
333
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
334
|
-
stateMutability: "view"
|
|
335
|
-
},
|
|
336
|
-
{
|
|
337
|
-
type: "function",
|
|
338
|
-
name: "isAgeEqual",
|
|
339
|
-
inputs: [
|
|
340
|
-
{ name: "age", type: "uint8", internalType: "uint8" },
|
|
341
|
-
{
|
|
342
|
-
name: "params",
|
|
343
|
-
type: "tuple",
|
|
344
|
-
internalType: "struct ProofVerificationParams",
|
|
345
|
-
components: [
|
|
346
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
347
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
348
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
349
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
350
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
351
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
352
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
353
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
354
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
355
|
-
]
|
|
356
|
-
}
|
|
357
|
-
],
|
|
358
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
359
|
-
stateMutability: "view"
|
|
360
|
-
},
|
|
361
|
-
{
|
|
362
|
-
type: "function",
|
|
363
|
-
name: "isBirthdateAfter",
|
|
364
|
-
inputs: [
|
|
365
|
-
{ name: "minDate", type: "uint256", internalType: "uint256" },
|
|
366
|
-
{
|
|
367
|
-
name: "params",
|
|
368
|
-
type: "tuple",
|
|
369
|
-
internalType: "struct ProofVerificationParams",
|
|
370
|
-
components: [
|
|
371
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
372
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
373
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
374
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
375
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
376
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
377
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
378
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
379
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
380
|
-
]
|
|
381
|
-
}
|
|
382
|
-
],
|
|
383
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
384
|
-
stateMutability: "view"
|
|
385
|
-
},
|
|
386
|
-
{
|
|
387
|
-
type: "function",
|
|
388
|
-
name: "isBirthdateAfterOrEqual",
|
|
389
|
-
inputs: [
|
|
390
|
-
{ name: "minDate", type: "uint256", internalType: "uint256" },
|
|
391
|
-
{
|
|
392
|
-
name: "params",
|
|
393
|
-
type: "tuple",
|
|
394
|
-
internalType: "struct ProofVerificationParams",
|
|
395
|
-
components: [
|
|
396
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
397
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
398
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
399
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
400
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
401
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
402
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
403
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
404
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
405
|
-
]
|
|
406
|
-
}
|
|
407
|
-
],
|
|
408
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
409
|
-
stateMutability: "view"
|
|
410
|
-
},
|
|
411
|
-
{
|
|
412
|
-
type: "function",
|
|
413
|
-
name: "isBirthdateBefore",
|
|
414
|
-
inputs: [
|
|
415
|
-
{ name: "maxDate", type: "uint256", internalType: "uint256" },
|
|
416
|
-
{
|
|
417
|
-
name: "params",
|
|
418
|
-
type: "tuple",
|
|
419
|
-
internalType: "struct ProofVerificationParams",
|
|
420
|
-
components: [
|
|
421
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
422
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
423
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
424
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
425
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
426
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
427
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
428
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
429
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
430
|
-
]
|
|
431
|
-
}
|
|
432
|
-
],
|
|
433
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
434
|
-
stateMutability: "view"
|
|
435
|
-
},
|
|
436
|
-
{
|
|
437
|
-
type: "function",
|
|
438
|
-
name: "isBirthdateBeforeOrEqual",
|
|
439
|
-
inputs: [
|
|
440
|
-
{ name: "maxDate", type: "uint256", internalType: "uint256" },
|
|
441
|
-
{
|
|
442
|
-
name: "params",
|
|
443
|
-
type: "tuple",
|
|
444
|
-
internalType: "struct ProofVerificationParams",
|
|
445
|
-
components: [
|
|
446
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
447
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
448
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
449
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
450
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
451
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
452
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
453
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
454
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
455
|
-
]
|
|
456
|
-
}
|
|
457
|
-
],
|
|
458
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
459
|
-
stateMutability: "view"
|
|
460
|
-
},
|
|
461
|
-
{
|
|
462
|
-
type: "function",
|
|
463
|
-
name: "isBirthdateBetween",
|
|
464
|
-
inputs: [
|
|
465
|
-
{ name: "minDate", type: "uint256", internalType: "uint256" },
|
|
466
|
-
{ name: "maxDate", type: "uint256", internalType: "uint256" },
|
|
467
|
-
{
|
|
468
|
-
name: "params",
|
|
469
|
-
type: "tuple",
|
|
470
|
-
internalType: "struct ProofVerificationParams",
|
|
471
|
-
components: [
|
|
472
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
473
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
474
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
475
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
476
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
477
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
478
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
479
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
480
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
481
|
-
]
|
|
482
|
-
}
|
|
483
|
-
],
|
|
484
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
485
|
-
stateMutability: "view"
|
|
486
|
-
},
|
|
487
|
-
{
|
|
488
|
-
type: "function",
|
|
489
|
-
name: "isBirthdateEqual",
|
|
490
|
-
inputs: [
|
|
491
|
-
{ name: "date", type: "uint256", internalType: "uint256" },
|
|
492
|
-
{
|
|
493
|
-
name: "params",
|
|
494
|
-
type: "tuple",
|
|
495
|
-
internalType: "struct ProofVerificationParams",
|
|
496
|
-
components: [
|
|
497
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
498
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
499
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
500
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
501
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
502
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
503
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
504
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
505
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
506
|
-
]
|
|
507
|
-
}
|
|
508
|
-
],
|
|
509
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
510
|
-
stateMutability: "view"
|
|
511
|
-
},
|
|
512
|
-
{
|
|
513
|
-
type: "function",
|
|
514
|
-
name: "isExpiryDateAfter",
|
|
515
|
-
inputs: [
|
|
516
|
-
{ name: "minDate", type: "uint256", internalType: "uint256" },
|
|
517
|
-
{
|
|
518
|
-
name: "params",
|
|
519
|
-
type: "tuple",
|
|
520
|
-
internalType: "struct ProofVerificationParams",
|
|
521
|
-
components: [
|
|
522
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
523
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
524
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
525
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
526
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
527
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
528
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
529
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
530
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
531
|
-
]
|
|
532
|
-
}
|
|
533
|
-
],
|
|
534
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
535
|
-
stateMutability: "view"
|
|
536
|
-
},
|
|
537
|
-
{
|
|
538
|
-
type: "function",
|
|
539
|
-
name: "isExpiryDateAfterOrEqual",
|
|
540
|
-
inputs: [
|
|
541
|
-
{ name: "minDate", type: "uint256", internalType: "uint256" },
|
|
542
|
-
{
|
|
543
|
-
name: "params",
|
|
544
|
-
type: "tuple",
|
|
545
|
-
internalType: "struct ProofVerificationParams",
|
|
546
|
-
components: [
|
|
547
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
548
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
549
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
550
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
551
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
552
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
553
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
554
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
555
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
556
|
-
]
|
|
557
|
-
}
|
|
558
|
-
],
|
|
559
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
560
|
-
stateMutability: "view"
|
|
561
|
-
},
|
|
562
|
-
{
|
|
563
|
-
type: "function",
|
|
564
|
-
name: "isExpiryDateBefore",
|
|
565
|
-
inputs: [
|
|
566
|
-
{ name: "maxDate", type: "uint256", internalType: "uint256" },
|
|
567
|
-
{
|
|
568
|
-
name: "params",
|
|
569
|
-
type: "tuple",
|
|
570
|
-
internalType: "struct ProofVerificationParams",
|
|
571
|
-
components: [
|
|
572
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
573
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
574
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
575
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
576
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
577
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
578
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
579
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
580
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
581
|
-
]
|
|
582
|
-
}
|
|
583
|
-
],
|
|
584
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
585
|
-
stateMutability: "view"
|
|
586
|
-
},
|
|
587
|
-
{
|
|
588
|
-
type: "function",
|
|
589
|
-
name: "isExpiryDateBeforeOrEqual",
|
|
590
|
-
inputs: [
|
|
591
|
-
{ name: "maxDate", type: "uint256", internalType: "uint256" },
|
|
592
|
-
{
|
|
593
|
-
name: "params",
|
|
594
|
-
type: "tuple",
|
|
595
|
-
internalType: "struct ProofVerificationParams",
|
|
596
|
-
components: [
|
|
597
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
598
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
599
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
600
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
601
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
602
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
603
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
604
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
605
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
606
|
-
]
|
|
607
|
-
}
|
|
608
|
-
],
|
|
609
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
610
|
-
stateMutability: "view"
|
|
611
|
-
},
|
|
612
|
-
{
|
|
613
|
-
type: "function",
|
|
614
|
-
name: "isExpiryDateBetween",
|
|
615
|
-
inputs: [
|
|
616
|
-
{ name: "minDate", type: "uint256", internalType: "uint256" },
|
|
617
|
-
{ name: "maxDate", type: "uint256", internalType: "uint256" },
|
|
618
|
-
{
|
|
619
|
-
name: "params",
|
|
620
|
-
type: "tuple",
|
|
621
|
-
internalType: "struct ProofVerificationParams",
|
|
622
|
-
components: [
|
|
623
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
624
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
625
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
626
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
627
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
628
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
629
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
630
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
631
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
632
|
-
]
|
|
633
|
-
}
|
|
634
|
-
],
|
|
635
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
636
|
-
stateMutability: "view"
|
|
637
|
-
},
|
|
638
|
-
{
|
|
639
|
-
type: "function",
|
|
640
|
-
name: "isExpiryDateEqual",
|
|
641
|
-
inputs: [
|
|
642
|
-
{ name: "date", type: "uint256", internalType: "uint256" },
|
|
643
|
-
{
|
|
644
|
-
name: "params",
|
|
645
|
-
type: "tuple",
|
|
646
|
-
internalType: "struct ProofVerificationParams",
|
|
647
|
-
components: [
|
|
648
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
649
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
650
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
651
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
652
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
653
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
654
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
655
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
656
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
657
|
-
]
|
|
658
|
-
}
|
|
659
|
-
],
|
|
660
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
661
|
-
stateMutability: "view"
|
|
662
|
-
},
|
|
663
|
-
{
|
|
664
|
-
type: "function",
|
|
665
|
-
name: "isIssuingCountryIn",
|
|
666
|
-
inputs: [
|
|
667
|
-
{ name: "countryList", type: "string[]", internalType: "string[]" },
|
|
668
|
-
{
|
|
669
|
-
name: "params",
|
|
670
|
-
type: "tuple",
|
|
671
|
-
internalType: "struct ProofVerificationParams",
|
|
672
|
-
components: [
|
|
673
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
674
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
675
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
676
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
677
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
678
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
679
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
680
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
681
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
682
|
-
]
|
|
683
|
-
}
|
|
684
|
-
],
|
|
685
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
686
|
-
stateMutability: "pure"
|
|
687
|
-
},
|
|
688
|
-
{
|
|
689
|
-
type: "function",
|
|
690
|
-
name: "isIssuingCountryOut",
|
|
691
|
-
inputs: [
|
|
692
|
-
{ name: "countryList", type: "string[]", internalType: "string[]" },
|
|
693
|
-
{
|
|
694
|
-
name: "params",
|
|
695
|
-
type: "tuple",
|
|
696
|
-
internalType: "struct ProofVerificationParams",
|
|
697
|
-
components: [
|
|
698
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
699
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
700
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
701
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
702
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
703
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
704
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
705
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
706
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
707
|
-
]
|
|
708
|
-
}
|
|
709
|
-
],
|
|
710
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
711
|
-
stateMutability: "pure"
|
|
712
|
-
},
|
|
713
|
-
{
|
|
714
|
-
type: "function",
|
|
715
|
-
name: "isNationalityIn",
|
|
716
|
-
inputs: [
|
|
717
|
-
{ name: "countryList", type: "string[]", internalType: "string[]" },
|
|
718
|
-
{
|
|
719
|
-
name: "params",
|
|
720
|
-
type: "tuple",
|
|
721
|
-
internalType: "struct ProofVerificationParams",
|
|
722
|
-
components: [
|
|
723
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
724
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
725
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
726
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
727
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
728
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
729
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
730
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
731
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
732
|
-
]
|
|
733
|
-
}
|
|
734
|
-
],
|
|
735
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
736
|
-
stateMutability: "pure"
|
|
737
|
-
},
|
|
738
|
-
{
|
|
739
|
-
type: "function",
|
|
740
|
-
name: "isNationalityOut",
|
|
741
|
-
inputs: [
|
|
742
|
-
{ name: "countryList", type: "string[]", internalType: "string[]" },
|
|
743
|
-
{
|
|
744
|
-
name: "params",
|
|
745
|
-
type: "tuple",
|
|
746
|
-
internalType: "struct ProofVerificationParams",
|
|
747
|
-
components: [
|
|
748
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
749
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
750
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
751
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
752
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
753
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
754
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
755
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
756
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
757
|
-
]
|
|
758
|
-
}
|
|
759
|
-
],
|
|
760
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
761
|
-
stateMutability: "pure"
|
|
762
|
-
},
|
|
763
|
-
{
|
|
764
|
-
type: "function",
|
|
765
|
-
name: "paused",
|
|
766
|
-
inputs: [],
|
|
767
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
768
|
-
stateMutability: "view"
|
|
769
|
-
},
|
|
770
|
-
{
|
|
771
|
-
type: "function",
|
|
772
|
-
name: "removeVerifiers",
|
|
773
|
-
inputs: [{ name: "vkeyHashes", type: "bytes32[]", internalType: "bytes32[]" }],
|
|
774
|
-
outputs: [],
|
|
775
|
-
stateMutability: "nonpayable"
|
|
776
|
-
},
|
|
777
|
-
{
|
|
778
|
-
type: "function",
|
|
779
|
-
name: "rootRegistry",
|
|
780
|
-
inputs: [],
|
|
781
|
-
outputs: [{ name: "", type: "address", internalType: "contract IRootRegistry" }],
|
|
782
|
-
stateMutability: "view"
|
|
783
|
-
},
|
|
784
|
-
{
|
|
785
|
-
type: "function",
|
|
786
|
-
name: "setPaused",
|
|
787
|
-
inputs: [{ name: "_paused", type: "bool", internalType: "bool" }],
|
|
788
|
-
outputs: [],
|
|
789
|
-
stateMutability: "nonpayable"
|
|
790
|
-
},
|
|
791
|
-
{
|
|
792
|
-
type: "function",
|
|
793
|
-
name: "transferAdmin",
|
|
794
|
-
inputs: [{ name: "newAdmin", type: "address", internalType: "address" }],
|
|
795
|
-
outputs: [],
|
|
796
|
-
stateMutability: "nonpayable"
|
|
797
|
-
},
|
|
798
|
-
{
|
|
799
|
-
type: "function",
|
|
800
|
-
name: "updateRootRegistry",
|
|
801
|
-
inputs: [{ name: "_rootRegistry", type: "address", internalType: "address" }],
|
|
802
|
-
outputs: [],
|
|
803
|
-
stateMutability: "nonpayable"
|
|
804
|
-
},
|
|
805
|
-
{
|
|
806
|
-
type: "function",
|
|
807
|
-
name: "verifyProof",
|
|
808
|
-
inputs: [
|
|
809
|
-
{
|
|
810
|
-
name: "params",
|
|
811
|
-
type: "tuple",
|
|
812
|
-
internalType: "struct ProofVerificationParams",
|
|
813
|
-
components: [
|
|
814
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
815
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
816
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
817
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" },
|
|
818
|
-
{ name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
|
|
819
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
820
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
821
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
822
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
823
|
-
]
|
|
824
|
-
}
|
|
825
|
-
],
|
|
826
|
-
outputs: [
|
|
827
|
-
{ name: "isValid", type: "bool", internalType: "bool" },
|
|
828
|
-
{ name: "uniqueIdentifier", type: "bytes32", internalType: "bytes32" }
|
|
829
|
-
],
|
|
830
|
-
stateMutability: "view"
|
|
831
|
-
},
|
|
832
|
-
{
|
|
833
|
-
type: "function",
|
|
834
|
-
name: "verifyScopes",
|
|
835
|
-
inputs: [
|
|
836
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
837
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
838
|
-
{ name: "scope", type: "string", internalType: "string" }
|
|
839
|
-
],
|
|
840
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
841
|
-
stateMutability: "pure"
|
|
842
|
-
},
|
|
843
|
-
{
|
|
844
|
-
type: "function",
|
|
845
|
-
name: "vkeyHashToVerifier",
|
|
846
|
-
inputs: [{ name: "", type: "bytes32", internalType: "bytes32" }],
|
|
847
|
-
outputs: [{ name: "", type: "address", internalType: "address" }],
|
|
848
|
-
stateMutability: "view"
|
|
849
|
-
},
|
|
850
|
-
{
|
|
851
|
-
type: "event",
|
|
852
|
-
name: "AdminUpdated",
|
|
853
|
-
inputs: [
|
|
854
|
-
{ name: "oldAdmin", type: "address", indexed: true, internalType: "address" },
|
|
855
|
-
{ name: "newAdmin", type: "address", indexed: true, internalType: "address" }
|
|
856
|
-
],
|
|
857
|
-
anonymous: false
|
|
858
|
-
},
|
|
859
|
-
{
|
|
860
|
-
type: "event",
|
|
861
|
-
name: "CertificateRegistryRootAdded",
|
|
862
|
-
inputs: [
|
|
863
|
-
{
|
|
864
|
-
name: "certificateRegistryRoot",
|
|
865
|
-
type: "bytes32",
|
|
866
|
-
indexed: true,
|
|
867
|
-
internalType: "bytes32"
|
|
868
|
-
}
|
|
869
|
-
],
|
|
870
|
-
anonymous: false
|
|
871
|
-
},
|
|
872
|
-
{
|
|
873
|
-
type: "event",
|
|
874
|
-
name: "CertificateRegistryRootRemoved",
|
|
875
|
-
inputs: [
|
|
876
|
-
{
|
|
877
|
-
name: "certificateRegistryRoot",
|
|
878
|
-
type: "bytes32",
|
|
879
|
-
indexed: true,
|
|
880
|
-
internalType: "bytes32"
|
|
881
|
-
}
|
|
882
|
-
],
|
|
883
|
-
anonymous: false
|
|
884
|
-
},
|
|
885
|
-
{
|
|
886
|
-
type: "event",
|
|
887
|
-
name: "PausedStatusChanged",
|
|
888
|
-
inputs: [{ name: "paused", type: "bool", indexed: false, internalType: "bool" }],
|
|
889
|
-
anonymous: false
|
|
890
|
-
},
|
|
891
|
-
{
|
|
892
|
-
type: "event",
|
|
893
|
-
name: "SanctionsTreesRootUpdates",
|
|
894
|
-
inputs: [
|
|
895
|
-
{
|
|
896
|
-
name: "_sanctionsTreesRoot",
|
|
897
|
-
type: "bytes32",
|
|
898
|
-
indexed: true,
|
|
899
|
-
internalType: "bytes32"
|
|
900
|
-
}
|
|
901
|
-
],
|
|
902
|
-
anonymous: false
|
|
903
|
-
},
|
|
904
|
-
{
|
|
905
|
-
type: "event",
|
|
906
|
-
name: "VerifierAdded",
|
|
907
|
-
inputs: [
|
|
908
|
-
{ name: "vkeyHash", type: "bytes32", indexed: true, internalType: "bytes32" },
|
|
909
|
-
{ name: "verifier", type: "address", indexed: true, internalType: "address" }
|
|
910
|
-
],
|
|
911
|
-
anonymous: false
|
|
912
|
-
},
|
|
913
|
-
{
|
|
914
|
-
type: "event",
|
|
915
|
-
name: "VerifierRemoved",
|
|
916
|
-
inputs: [
|
|
917
|
-
{ name: "vkeyHash", type: "bytes32", indexed: true, internalType: "bytes32" }
|
|
918
|
-
],
|
|
919
|
-
anonymous: false
|
|
920
|
-
},
|
|
921
|
-
{
|
|
922
|
-
type: "event",
|
|
923
|
-
name: "ZKPassportVerifierDeployed",
|
|
924
|
-
inputs: [
|
|
925
|
-
{ name: "admin", type: "address", indexed: true, internalType: "address" },
|
|
926
|
-
{ name: "timestamp", type: "uint256", indexed: false, internalType: "uint256" }
|
|
927
|
-
],
|
|
928
|
-
anonymous: false
|
|
929
|
-
}
|
|
930
|
-
],
|
|
931
|
-
bytecode: {
|
|
932
|
-
object: "0x608060405234801561000f575f5ffd5b506040516137fc3803806137fc83398101604081905261002e916100f6565b6001600160a01b0381166100945760405162461bcd60e51b8152602060048201526024808201527f526f6f742072656769737472792063616e6e6f74206265207a65726f206164646044820152637265737360e01b606482015260840160405180910390fd5b5f8054336001600160a01b03199182168117909255600280549091166001600160a01b0384161790556040514281527ff29b53747ae7121d0958d490ad3d5cf6767119b0fdbd8389d918de3a12cf5a299060200160405180910390a250610123565b5f60208284031215610106575f5ffd5b81516001600160a01b038116811461011c575f5ffd5b9392505050565b6136cc806101305f395ff3fe608060405234801561000f575f5ffd5b5060043610610234575f3560e01c80638163f23111610135578063c4560786116100b4578063e420e35411610079578063e420e35414610520578063e718bc3214610533578063ec46f77414610546578063f851a44014610559578063f87e19b11461056b575f5ffd5b8063c4560786146104aa578063cfd9464a146104bd578063d3f6ffff146104d0578063d7bf616a146104e3578063deb7c0591461050d575f5ffd5b8063a88f1cef116100fa578063a88f1cef1461044b578063aa1346ea1461045e578063b96b161c14610471578063bf73c26c14610484578063c0940ebd14610497575f5ffd5b80638163f231146103bf578063847755e3146103ff5780638d6937b814610412578063921076c714610425578063a6df2c0114610438575f5ffd5b80634c127428116101c1578063652ba33d11610186578063652ba33d14610376578063653cfd811461037e5780636c40d5d614610391578063704876d61461039957806375829def146103ac575f5ffd5b80634c1274281461030a57806354dbe4d11461031d57806359545f45146103305780635c975abb1461035057806362067c8214610363575f5ffd5b80631e26a9dc116102075780631e26a9dc1461029b57806337889655146102bb5780633a86bd3d146102ce57806341a0e2c2146102e157806346bd0a16146102f7575f5ffd5b806304951b86146102385780630b90581b1461026057806316c38b3c1461027357806318677f2a14610288575b5f5ffd5b61024b610246366004612744565b61057e565b60405190151581526020015b60405180910390f35b61024b61026e366004612744565b6105a0565b610286610281366004612794565b6105ae565b005b6102866102963660046127c3565b610637565b6102ae6102a93660046127de565b6106e4565b604051610257919061285a565b61024b6102c9366004612960565b610847565b61024b6102dc366004612a4b565b61085c565b6102e9600181565b604051908152602001610257565b61024b610305366004612b53565b610869565b61024b610318366004612744565b610881565b61024b61032b366004612960565b61088e565b61034361033e366004612b9e565b6109df565b6040516102579190612bcf565b5f5461024b90600160a01b900460ff1681565b61024b610371366004612c05565b610b25565b6102e9600381565b61028661038c366004612b9e565b610d96565b6102e9600281565b61024b6103a7366004612744565b610e38565b6102866103ba3660046127c3565b610e45565b6103e76103cd366004612c4c565b60016020525f90815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610257565b61024b61040d366004612ce7565b610f13565b610286610420366004612d83565b6110db565b61024b610433366004612744565b61119b565b610286610446366004612dc1565b6111b4565b61024b610459366004612744565b6112de565b61024b61046c366004612960565b6112f7565b6002546103e7906001600160a01b031681565b61024b610492366004612960565b611448565b61024b6104a5366004612960565b6114af565b61024b6104b8366004612b53565b6114bb565b61024b6104cb366004612744565b6114c9565b61024b6104de366004612744565b6114d7565b6104f66104f1366004612b9e565b6114f0565b604080519215158352602083019190915201610257565b61024b61051b366004612744565b611997565b61024b61052e366004612a4b565b6119a4565b61024b610541366004612744565b6119b1565b61024b610554366004612a4b565b6119be565b5f546103e7906001600160a01b031681565b61024b610579366004612a4b565b6119cb565b5f61059761058f8462015180612e3f565b6002846119d8565b90505b92915050565b5f6105978384600285611c33565b5f546001600160a01b031633146105e05760405162461bcd60e51b81526004016105d790612e52565b60405180910390fd5b5f8054821515600160a01b0260ff60a01b199091161790556040517f9a506b30e47f3823b09f67e4c0dfa5c3d8023b71825b7ceaa97677129128c9c59061062c90831515815260200190565b60405180910390a150565b5f546001600160a01b031633146106605760405162461bcd60e51b81526004016105d790612e52565b6001600160a01b0381166106c25760405162461bcd60e51b8152602060048201526024808201527f526f6f742072656769737472792063616e6e6f74206265207a65726f206164646044820152637265737360e01b60648201526084016105d7565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b61072c60405180610100016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63ddf3eec96107546060870187612e89565b6107616080890189612ecb565b6040518563ffffffff1660e01b81526004016107809493929190612f68565b5f60405180830381865af415801561079a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526107c19190810190612fdd565b6040516301e9bf5760e11b815290925073__$144f4fe859debe4776cdef2b99f7b97a42$__91506303d37eae906107fe9084908790600401613036565b5f60405180830381865af4158015610818573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261083f9190810190613059565b949350505050565b5f6105976108568460016131ea565b8361088e565b5f61059783600784611f71565b5f6108778484600385611c33565b90505b9392505050565b5f610597836003846119d8565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__63b2b37a4c6108b96060880188612e89565b6108c660808a018a612ecb565b6040518563ffffffff1660e01b81526004016108e59493929190612f68565b606060405180830381865af4158015610900573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109249190613203565b925092509250610938838660a0013561209b565b6109545760405162461bcd60e51b81526004016105d790613244565b60ff8116156109cd576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e737465616460648201526084016105d7565b5060ff85811691161491505092915050565b60408051606080820183525f8083526020830152918101919091525f73__$144f4fe859debe4776cdef2b99f7b97a42$__634601173c610a226060860186612e89565b610a2f6080880188612ecb565b6040518563ffffffff1660e01b8152600401610a4e9493929190612f68565b5f60405180830381865af4158015610a68573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a8f91908101906132b5565b604051630578c5d360e11b815290915073__$144f4fe859debe4776cdef2b99f7b97a42$__90630af18ba690610ac99084906004016132e6565b5f60405180830381865af4158015610ae3573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b0a91908101906132f8565b604085015260208401526001600160a01b0316825250919050565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__63b2b37a4c610b506060880188612e89565b610b5d60808a018a612ecb565b6040518563ffffffff1660e01b8152600401610b7c9493929190612f68565b606060405180830381865af4158015610b97573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bbb9190613203565b925092509250610bcf838660a0013561209b565b610beb5760405162461bcd60e51b81526004016105d790613244565b8560ff168760ff161115610c575760405162461bcd60e51b815260206004820152602d60248201527f4d696e20616765206d757374206265206c657373207468616e206f722065717560448201526c616c20746f206d61782061676560981b60648201526084016105d7565b8160ff165f03610ce45760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676542656c6f774f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a4016105d7565b8060ff165f03610d715760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676541626f76654f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a4016105d7565b8160ff168760ff16148015610d8b57508060ff168660ff16145b979650505050505050565b5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63fbd24457610dbe6060850185612e89565b610dcb6080870187612ecb565b6040518563ffffffff1660e01b8152600401610dea9493929190612f68565b602060405180830381865af4158015610e05573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e299190613343565b9050610e34816120c8565b5050565b5f610597836002846119d8565b5f546001600160a01b03163314610e6e5760405162461bcd60e51b81526004016105d790612e52565b6001600160a01b038116610ec45760405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f20616464726573730000000060448201526064016105d7565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b9190a35050565b5f5f610f5386868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061218992505050565b610fcd57600860028787604051602001610f6e92919061335a565b60408051601f1981840301815290829052610f8891613369565b602060405180830381855afa158015610fa3573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610fc69190613343565b901c610fcf565b5f5b90505f61101085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061218992505050565b61108a5760086002868660405160200161102b92919061335a565b60408051601f198184030181529082905261104591613369565b602060405180830381855afa158015611060573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906110839190613343565b901c61108c565b5f5b905081898960038181106110a2576110a261337f565b905060200201351480156110ce575080898960048181106110c5576110c561337f565b90506020020135145b9998505050505050505050565b5f546001600160a01b031633146111045760405162461bcd60e51b81526004016105d790612e52565b5f5b818110156111965760015f8484848181106111235761112361337f565b602090810292909201358352508101919091526040015f2080546001600160a01b031916905582828281811061115b5761115b61337f565b905060200201357f6fdcbcf8f91bc23f2c9dcfe8fe01d80d1b1afbbf207298e94c0171ccc587424c60405160405180910390a2600101611106565b505050565b5f6105976111ac6201518085613393565b60028461218e565b5f546001600160a01b031633146111dd5760405162461bcd60e51b81526004016105d790612e52565b5f5b838110156112d7578282828181106111f9576111f961337f565b905060200201602081019061120e91906127c3565b60015f8787858181106112235761122361337f565b9050602002013581526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555082828281811061126c5761126c61337f565b905060200201602081019061128191906127c3565b6001600160a01b031685858381811061129c5761129c61337f565b905060200201357f636107338a3eb46f1f60562462f3ec11393d35fbc965991aaade3b9e7d89c3f560405160405180910390a36001016111df565b5050505050565b5f6105976112ef6201518085613393565b60038461218e565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__63b2b37a4c6113226060880188612e89565b61132f60808a018a612ecb565b6040518563ffffffff1660e01b815260040161134e9493929190612f68565b606060405180830381865af4158015611369573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061138d9190613203565b9250925092506113a1838660a0013561209b565b6113bd5760405162461bcd60e51b81526004016105d790613244565b60ff821615611436576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e737465616460648201526084016105d7565b60ff8681169116149250505092915050565b5f5f8360ff161161149b5760405162461bcd60e51b815260206004820152601e60248201527f4d617820616765206d7573742062652067726561746572207468616e2030000060448201526064016105d7565b6105976114a96001856133a6565b836112f7565b5f610597838484610b25565b5f6108778484600285611c33565b5f6105978384600385611c33565b5f6105976114e88462015180612e3f565b6003846119d8565b5f80548190600160a01b900460ff16156115415760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b60448201526064016105d7565b5f61154c8435612392565b905061157a61155e6040860186612ecb565b5f81811061156e5761156e61337f565b905060200201356123eb565b6115a761158a6040860186612ecb565b600181811061159b5761159b61337f565b905060200201356124b3565b6115f16115b76040860186612ecb565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050505060a0860135612571565b6116595760405162461bcd60e51b815260206004820152603360248201527f5468652070726f6f66207761732067656e657261746564206f757473696465206044820152721d1a19481d985b1a591a5d1e481c195c9a5bd9606a1b60648201526084016105d7565b6116836116696040860186612ecb565b61167660c0880188612e89565b61040d60e08a018a612e89565b6116cf5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420646f6d61696e206f722073636f706500000000000000000060448201526064016105d7565b61178a6116df6040860186612ecb565b60059060016116f160408a018a612ecb565b6116fc929150613393565b92611709939291906133bf565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611747925050506060870187612e89565b6117546080890189612ecb565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061259c92505050565b60016117996040860186612ecb565b60016117a86040890189612ecb565b6117b3929150613393565b8181106117c2576117c261337f565b905060200201351415806117e357506117e361012085016101008601612794565b6118405760405162461bcd60e51b815260206004820152602860248201527f4d6f636b2070726f6f667320617265206f6e6c7920616c6c6f77656420696e20604482015267646576206d6f646560c01b60648201526084016105d7565b600661184f6040860186612ecb565b61185a929150613393565b6118676080860186612ecb565b9050146118c45760405162461bcd60e51b815260206004820152602560248201527f496e76616c696420636f6d6d697474656420696e70757420636f756e7473206c6044820152640cadccee8d60db1b60648201526084016105d7565b6001600160a01b03811663ea50d0e46118e06020870187612e89565b6118ed6040890189612ecb565b6040518563ffffffff1660e01b815260040161190c9493929190612f68565b602060405180830381865afa158015611927573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061194b91906133ea565b92505f600161195d6040870187612ecb565b611968929150613393565b90506119776040860186612ecb565b828181106119875761198761337f565b9050602002013592505050915091565b5f6105978360028461218e565b5f61059783600584611f71565b5f6105978360038461218e565b5f61059783600684611f71565b5f61059783600484611f71565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__638a8b3f92611a036060880188612e89565b611a1060808a018a612ecb565b8b6040518663ffffffff1660e01b8152600401611a31959493929190613419565b606060405180830381865af4158015611a4c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a70919061346e565b925092509250611a84838660a0013561209b565b611aa05760405162461bcd60e51b81526004016105d790613244565b6002866009811115611ab457611ab4613405565b1480611ad157506003866009811115611acf57611acf613405565b145b611aed5760405162461bcd60e51b81526004016105d790613499565b6002866009811115611b0157611b01613405565b03611ba3578015611b895760405162461bcd60e51b815260206004820152604660248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734269727468646174654265747765656e20696064820152651b9cdd19585960d21b608482015260a4016105d7565b611b976383aa7e8083613393565b8714935050505061087a565b8015611c275760405162461bcd60e51b815260206004820152604760248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973457870697279446174654265747765656e206064820152661a5b9cdd19585960ca1b608482015260a4016105d7565b508514915061087a9050565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__638a8b3f92611c5e6060880188612e89565b611c6b60808a018a612ecb565b8b6040518663ffffffff1660e01b8152600401611c8c959493929190613419565b606060405180830381865af4158015611ca7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ccb919061346e565b925092509250611cdf838660a0013561209b565b611cfb5760405162461bcd60e51b81526004016105d790613244565b86881115611d635760405162461bcd60e51b815260206004820152602f60248201527f4d696e2064617465206d757374206265206c657373207468616e206f7220657160448201526e75616c20746f206d6178206461746560881b60648201526084016105d7565b6002866009811115611d7757611d77613405565b1480611d9457506003866009811115611d9257611d92613405565b145b611db05760405162461bcd60e51b81526004016105d790613499565b6002866009811115611dc457611dc4613405565b03611eaa57815f03611e595760405162461bcd60e51b815260206004820152605260248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746542656064820152711b1bddd3dc915c5d585b081a5b9cdd19585960721b608482015260a4016105d7565b805f03611e785760405162461bcd60e51b81526004016105d7906134c5565b611e866383aa7e8083613393565b88148015611ea05750611e9d6383aa7e8082613393565b87145b935050505061083f565b815f03611f3b5760405162461bcd60e51b815260206004820152605360248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746542606482015272195b1bddd3dc915c5d585b081a5b9cdd195859606a1b608482015260a4016105d7565b805f03611f5a5760405162461bcd60e51b81526004016105d79061353d565b8188148015611ea057509095149695505050505050565b5f808073__$144f4fe859debe4776cdef2b99f7b97a42$__6384d40ca0611f9b6060870187612e89565b611fa86080890189612ecb565b8a6040518663ffffffff1660e01b8152600401611fc9959493929190613419565b5f60405180830381865af4158015611fe3573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261200a91908101906135b6565b9150915080865114612020575f9250505061087a565b5f5b8181101561208e5761207787828151811061203f5761203f61337f565b60200260200101518483815181106120595761205961337f565b60200260200101518051602091820120825192909101919091201490565b612086575f935050505061087a565b600101612022565b5060019695505050505050565b5f806120a78385612e3f565b90508342101580156120b857508381115b801561083f575042109392505050565b6002546040516383578c1160e01b815260036004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa158015612116573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061213a91906133ea565b6121865760405162461bcd60e51b815260206004820152601f60248201527f496e76616c69642073616e6374696f6e7320726567697374727920726f6f740060448201526064016105d7565b50565b511590565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__638a8b3f926121b96060880188612e89565b6121c660808a018a612ecb565b8b6040518663ffffffff1660e01b81526004016121e7959493929190613419565b606060405180830381865af4158015612202573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612226919061346e565b92509250925061223a838660a0013561209b565b6122565760405162461bcd60e51b81526004016105d790613244565b81156122d45760405162461bcd60e51b815260206004820152604160248201527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973446174654265747765656e20696e737465616064820152601960fa1b608482015260a4016105d7565b60028660098111156122e8576122e8613405565b14806123055750600386600981111561230357612303613405565b145b6123215760405162461bcd60e51b81526004016105d790613499565b600286600981111561233557612335613405565b0361236757805f036123595760405162461bcd60e51b81526004016105d7906134c5565b611b976383aa7e8082613393565b805f036123865760405162461bcd60e51b81526004016105d79061353d565b8614925061087a915050565b5f818152600160205260408120546001600160a01b03168061059a5760405162461bcd60e51b815260206004820152601260248201527115995c9a599a595c881b9bdd08199bdd5b9960721b60448201526064016105d7565b6002546040516383578c1160e01b815260016004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa158015612439573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061245d91906133ea565b6121865760405162461bcd60e51b815260206004820152602160248201527f496e76616c696420636572746966696361746520726567697374727920726f6f6044820152601d60fa1b60648201526084016105d7565b600280546040516383578c1160e01b81526004810192909252602482018390526001600160a01b0316906383578c1190604401602060405180830381865afa158015612501573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061252591906133ea565b6121865760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206369726375697420726567697374727920726f6f7400000060448201526064016105d7565b5f5f836002815181106125865761258661337f565b60200260200101515f1c905061083f818461209b565b5f805b82518110156126dd575f60086002878786908887815181106125c3576125c361337f565b6020026020010151886125d69190612e3f565b926125e39392919061366f565b6040516020016125f492919061335a565b60408051601f198184030181529082905261260e91613369565b602060405180830381855afa158015612629573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061264c9190613343565b901c90508682815181106126625761266261337f565b602002602001015181146126ad5760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016105d7565b8382815181106126bf576126bf61337f565b6020026020010151836126d29190612e3f565b92505060010161259f565b508083146112d75760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420636f6d6d697474656420696e70757473206c656e6774680060448201526064016105d7565b5f610120828403121561273e575f5ffd5b50919050565b5f5f60408385031215612755575f5ffd5b8235915060208301356001600160401b03811115612771575f5ffd5b61277d8582860161272d565b9150509250929050565b8015158114612186575f5ffd5b5f602082840312156127a4575f5ffd5b813561087a81612787565b6001600160a01b0381168114612186575f5ffd5b5f602082840312156127d3575f5ffd5b813561087a816127af565b5f5f604083850312156127ef575f5ffd5b82356001600160401b03811115612804575f5ffd5b6128108582860161272d565b925050602083013561282181612787565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f8251610100602084015261287761012084018261282c565b90506020840151601f19848303016040850152612894828261282c565b9150506040840151601f198483030160608501526128b2828261282c565b9150506060840151601f198483030160808501526128d0828261282c565b9150506080840151601f198483030160a08501526128ee828261282c565b91505060a0840151601f198483030160c085015261290c828261282c565b91505060c0840151601f198483030160e085015261292a828261282c565b91505060e0840151601f1984830301610100850152612949828261282c565b95945050505050565b60ff81168114612186575f5ffd5b5f5f60408385031215612971575f5ffd5b823561297c81612952565b915060208301356001600160401b03811115612771575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b03811182821017156129cd576129cd612996565b60405290565b604051601f8201601f191681016001600160401b03811182821017156129fb576129fb612996565b604052919050565b5f6001600160401b03821115612a1b57612a1b612996565b5060051b60200190565b5f6001600160401b03821115612a3d57612a3d612996565b50601f01601f191660200190565b5f5f60408385031215612a5c575f5ffd5b82356001600160401b03811115612a71575f5ffd5b8301601f81018513612a81575f5ffd5b8035612a94612a8f82612a03565b6129d3565b8082825260208201915060208360051b850101925087831115612ab5575f5ffd5b602084015b83811015612b355780356001600160401b03811115612ad7575f5ffd5b8501603f81018a13612ae7575f5ffd5b6020810135612af8612a8f82612a25565b8181526040838301018c1015612b0c575f5ffd5b816040840160208301375f60208383010152808652505050602083019250602081019050612aba565b50945050505060208301356001600160401b03811115612771575f5ffd5b5f5f5f60608486031215612b65575f5ffd5b833592506020840135915060408401356001600160401b03811115612b88575f5ffd5b612b948682870161272d565b9150509250925092565b5f60208284031215612bae575f5ffd5b81356001600160401b03811115612bc3575f5ffd5b61083f8482850161272d565b6020815260018060a01b038251166020820152602082015160408201525f604083015160608084015261083f608084018261282c565b5f5f5f60608486031215612c17575f5ffd5b8335612c2281612952565b92506020840135612c3281612952565b915060408401356001600160401b03811115612b88575f5ffd5b5f60208284031215612c5c575f5ffd5b5035919050565b5f5f83601f840112612c73575f5ffd5b5081356001600160401b03811115612c89575f5ffd5b6020830191508360208260051b8501011115612ca3575f5ffd5b9250929050565b5f5f83601f840112612cba575f5ffd5b5081356001600160401b03811115612cd0575f5ffd5b602083019150836020828501011115612ca3575f5ffd5b5f5f5f5f5f5f60608789031215612cfc575f5ffd5b86356001600160401b03811115612d11575f5ffd5b612d1d89828a01612c63565b90975095505060208701356001600160401b03811115612d3b575f5ffd5b612d4789828a01612caa565b90955093505060408701356001600160401b03811115612d65575f5ffd5b612d7189828a01612caa565b979a9699509497509295939492505050565b5f5f60208385031215612d94575f5ffd5b82356001600160401b03811115612da9575f5ffd5b612db585828601612c63565b90969095509350505050565b5f5f5f5f60408587031215612dd4575f5ffd5b84356001600160401b03811115612de9575f5ffd5b612df587828801612c63565b90955093505060208501356001600160401b03811115612e13575f5ffd5b612e1f87828801612c63565b95989497509550505050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561059a5761059a612e2b565b6020808252601a908201527f4e6f7420617574686f72697a65643a2061646d696e206f6e6c79000000000000604082015260600190565b5f5f8335601e19843603018112612e9e575f5ffd5b8301803591506001600160401b03821115612eb7575f5ffd5b602001915036819003821315612ca3575f5ffd5b5f5f8335601e19843603018112612ee0575f5ffd5b8301803591506001600160401b03821115612ef9575f5ffd5b6020019150600581901b3603821315612ca3575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8183525f6001600160fb1b03831115612f4f575f5ffd5b8260051b80836020870137939093016020019392505050565b604081525f612f7b604083018688612f10565b8281036020840152610d8b818587612f38565b5f82601f830112612f9d575f5ffd5b8151602083015f612fb0612a8f84612a25565b9050828152858383011115612fc3575f5ffd5b8282602083015e5f92810160200192909252509392505050565b5f5f60408385031215612fee575f5ffd5b82516001600160401b03811115613003575f5ffd5b61300f85828601612f8e565b92505060208301516001600160401b0381111561302a575f5ffd5b61277d85828601612f8e565b604081525f613048604083018561282c565b905082151560208301529392505050565b5f60208284031215613069575f5ffd5b81516001600160401b0381111561307e575f5ffd5b82016101008185031215613090575f5ffd5b6130986129aa565b81516001600160401b038111156130ad575f5ffd5b6130b986828501612f8e565b82525060208201516001600160401b038111156130d4575f5ffd5b6130e086828501612f8e565b60208301525060408201516001600160401b038111156130fe575f5ffd5b61310a86828501612f8e565b60408301525060608201516001600160401b03811115613128575f5ffd5b61313486828501612f8e565b60608301525060808201516001600160401b03811115613152575f5ffd5b61315e86828501612f8e565b60808301525060a08201516001600160401b0381111561317c575f5ffd5b61318886828501612f8e565b60a08301525060c08201516001600160401b038111156131a6575f5ffd5b6131b286828501612f8e565b60c08301525060e08201516001600160401b038111156131d0575f5ffd5b6131dc86828501612f8e565b60e083015250949350505050565b60ff818116838216019081111561059a5761059a612e2b565b5f5f5f60608486031215613215575f5ffd5b8351602085015190935061322881612952565b604085015190925061323981612952565b809150509250925092565b6020808252604b908201527f5468652063757272656e742064617465207573656420696e207468652070726f60408201527f6f6620646f6573206e6f742066616c6c2077697468696e207468652076616c6960608201526a191a5d1e481c195c9a5bd960aa1b608082015260a00190565b5f602082840312156132c5575f5ffd5b81516001600160401b038111156132da575f5ffd5b61083f84828501612f8e565b602081525f610597602083018461282c565b5f5f5f6060848603121561330a575f5ffd5b8351613315816127af565b6020850151604086015191945092506001600160401b03811115613337575f5ffd5b612b9486828701612f8e565b5f60208284031215613353575f5ffd5b5051919050565b818382375f9101908152919050565b5f82518060208501845e5f920191825250919050565b634e487b7160e01b5f52603260045260245ffd5b8181038181111561059a5761059a612e2b565b60ff828116828216039081111561059a5761059a612e2b565b5f5f858511156133cd575f5ffd5b838611156133d9575f5ffd5b5050600583901b0193919092039150565b5f602082840312156133fa575f5ffd5b815161087a81612787565b634e487b7160e01b5f52602160045260245ffd5b606081525f61342c606083018789612f10565b828103602084015261343f818688612f38565b915050600a831061345e57634e487b7160e01b5f52602160045260245ffd5b8260408301529695505050505050565b5f5f5f60608486031215613480575f5ffd5b5050815160208301516040909301519094929350919050565b602080825260129082015271496e76616c69642070726f6f66207479706560701b604082015260600190565b60208082526052908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746541626060820152711bdd9953dc915c5d585b081a5b9cdd19585960721b608082015260a00190565b60208082526053908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746541606082015272189bdd9953dc915c5d585b081a5b9cdd195859606a1b608082015260a00190565b5f5f604083850312156135c7575f5ffd5b82516001600160401b038111156135dc575f5ffd5b8301601f810185136135ec575f5ffd5b80516135fa612a8f82612a03565b8082825260208201915060208360051b85010192508783111561361b575f5ffd5b602084015b8381101561365b5780516001600160401b0381111561363d575f5ffd5b61364c8a602083890101612f8e565b84525060209283019201613620565b506020969096015195979596505050505050565b5f5f8585111561367d575f5ffd5b83861115613689575f5ffd5b505082019391909203915056fea26469706673582212201ad0934c58c94945ad619ae11884148cc3af0f513c363543f6833c83eb4947ff64736f6c634300081d0033",
|
|
933
|
-
sourceMap: "620:27253:26:-:0;;;1762:256;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1811:27:26;;1803:76;;;;-1:-1:-1;;;1803:76:26;;511:2:33;1803:76:26;;;493:21:33;550:2;530:18;;;523:30;589:34;569:18;;;562:62;-1:-1:-1;;;640:18:33;;;633:34;684:19;;1803:76:26;;;;;;;;1885:5;:18;;1893:10;-1:-1:-1;;;;;;1885:18:26;;;;;;;;1909:12;:43;;;;;-1:-1:-1;;;;;1909:43:26;;;;;1963:50;;1997:15;860:25:33;;1963:50:26;;848:2:33;833:18;1963:50:26;;;;;;;1762:256;620:27253;;14:290:33;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:33;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:33:o;714:177::-;620:27253:26;;;;;;",
|
|
934
|
-
linkReferences: {
|
|
935
|
-
"src/InputsExtractor.sol": {
|
|
936
|
-
InputsExtractor: [
|
|
937
|
-
{ start: 2143, length: 20 },
|
|
938
|
-
{ start: 2307, length: 20 },
|
|
939
|
-
{ start: 2500, length: 20 },
|
|
940
|
-
{ start: 2861, length: 20 },
|
|
941
|
-
{ start: 3025, length: 20 },
|
|
942
|
-
{ start: 3163, length: 20 },
|
|
943
|
-
{ start: 3785, length: 20 },
|
|
944
|
-
{ start: 5165, length: 20 },
|
|
945
|
-
{ start: 6926, length: 20 },
|
|
946
|
-
{ start: 7529, length: 20 },
|
|
947
|
-
{ start: 8358, length: 20 },
|
|
948
|
-
{ start: 8900, length: 20 }
|
|
949
|
-
]
|
|
950
|
-
}
|
|
951
|
-
}
|
|
952
|
-
},
|
|
953
|
-
deployedBytecode: {
|
|
954
|
-
object: "0x608060405234801561000f575f5ffd5b5060043610610234575f3560e01c80638163f23111610135578063c4560786116100b4578063e420e35411610079578063e420e35414610520578063e718bc3214610533578063ec46f77414610546578063f851a44014610559578063f87e19b11461056b575f5ffd5b8063c4560786146104aa578063cfd9464a146104bd578063d3f6ffff146104d0578063d7bf616a146104e3578063deb7c0591461050d575f5ffd5b8063a88f1cef116100fa578063a88f1cef1461044b578063aa1346ea1461045e578063b96b161c14610471578063bf73c26c14610484578063c0940ebd14610497575f5ffd5b80638163f231146103bf578063847755e3146103ff5780638d6937b814610412578063921076c714610425578063a6df2c0114610438575f5ffd5b80634c127428116101c1578063652ba33d11610186578063652ba33d14610376578063653cfd811461037e5780636c40d5d614610391578063704876d61461039957806375829def146103ac575f5ffd5b80634c1274281461030a57806354dbe4d11461031d57806359545f45146103305780635c975abb1461035057806362067c8214610363575f5ffd5b80631e26a9dc116102075780631e26a9dc1461029b57806337889655146102bb5780633a86bd3d146102ce57806341a0e2c2146102e157806346bd0a16146102f7575f5ffd5b806304951b86146102385780630b90581b1461026057806316c38b3c1461027357806318677f2a14610288575b5f5ffd5b61024b610246366004612744565b61057e565b60405190151581526020015b60405180910390f35b61024b61026e366004612744565b6105a0565b610286610281366004612794565b6105ae565b005b6102866102963660046127c3565b610637565b6102ae6102a93660046127de565b6106e4565b604051610257919061285a565b61024b6102c9366004612960565b610847565b61024b6102dc366004612a4b565b61085c565b6102e9600181565b604051908152602001610257565b61024b610305366004612b53565b610869565b61024b610318366004612744565b610881565b61024b61032b366004612960565b61088e565b61034361033e366004612b9e565b6109df565b6040516102579190612bcf565b5f5461024b90600160a01b900460ff1681565b61024b610371366004612c05565b610b25565b6102e9600381565b61028661038c366004612b9e565b610d96565b6102e9600281565b61024b6103a7366004612744565b610e38565b6102866103ba3660046127c3565b610e45565b6103e76103cd366004612c4c565b60016020525f90815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610257565b61024b61040d366004612ce7565b610f13565b610286610420366004612d83565b6110db565b61024b610433366004612744565b61119b565b610286610446366004612dc1565b6111b4565b61024b610459366004612744565b6112de565b61024b61046c366004612960565b6112f7565b6002546103e7906001600160a01b031681565b61024b610492366004612960565b611448565b61024b6104a5366004612960565b6114af565b61024b6104b8366004612b53565b6114bb565b61024b6104cb366004612744565b6114c9565b61024b6104de366004612744565b6114d7565b6104f66104f1366004612b9e565b6114f0565b604080519215158352602083019190915201610257565b61024b61051b366004612744565b611997565b61024b61052e366004612a4b565b6119a4565b61024b610541366004612744565b6119b1565b61024b610554366004612a4b565b6119be565b5f546103e7906001600160a01b031681565b61024b610579366004612a4b565b6119cb565b5f61059761058f8462015180612e3f565b6002846119d8565b90505b92915050565b5f6105978384600285611c33565b5f546001600160a01b031633146105e05760405162461bcd60e51b81526004016105d790612e52565b60405180910390fd5b5f8054821515600160a01b0260ff60a01b199091161790556040517f9a506b30e47f3823b09f67e4c0dfa5c3d8023b71825b7ceaa97677129128c9c59061062c90831515815260200190565b60405180910390a150565b5f546001600160a01b031633146106605760405162461bcd60e51b81526004016105d790612e52565b6001600160a01b0381166106c25760405162461bcd60e51b8152602060048201526024808201527f526f6f742072656769737472792063616e6e6f74206265207a65726f206164646044820152637265737360e01b60648201526084016105d7565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b61072c60405180610100016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63ddf3eec96107546060870187612e89565b6107616080890189612ecb565b6040518563ffffffff1660e01b81526004016107809493929190612f68565b5f60405180830381865af415801561079a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526107c19190810190612fdd565b6040516301e9bf5760e11b815290925073__$144f4fe859debe4776cdef2b99f7b97a42$__91506303d37eae906107fe9084908790600401613036565b5f60405180830381865af4158015610818573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261083f9190810190613059565b949350505050565b5f6105976108568460016131ea565b8361088e565b5f61059783600784611f71565b5f6108778484600385611c33565b90505b9392505050565b5f610597836003846119d8565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__63b2b37a4c6108b96060880188612e89565b6108c660808a018a612ecb565b6040518563ffffffff1660e01b81526004016108e59493929190612f68565b606060405180830381865af4158015610900573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109249190613203565b925092509250610938838660a0013561209b565b6109545760405162461bcd60e51b81526004016105d790613244565b60ff8116156109cd576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e737465616460648201526084016105d7565b5060ff85811691161491505092915050565b60408051606080820183525f8083526020830152918101919091525f73__$144f4fe859debe4776cdef2b99f7b97a42$__634601173c610a226060860186612e89565b610a2f6080880188612ecb565b6040518563ffffffff1660e01b8152600401610a4e9493929190612f68565b5f60405180830381865af4158015610a68573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a8f91908101906132b5565b604051630578c5d360e11b815290915073__$144f4fe859debe4776cdef2b99f7b97a42$__90630af18ba690610ac99084906004016132e6565b5f60405180830381865af4158015610ae3573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b0a91908101906132f8565b604085015260208401526001600160a01b0316825250919050565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__63b2b37a4c610b506060880188612e89565b610b5d60808a018a612ecb565b6040518563ffffffff1660e01b8152600401610b7c9493929190612f68565b606060405180830381865af4158015610b97573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bbb9190613203565b925092509250610bcf838660a0013561209b565b610beb5760405162461bcd60e51b81526004016105d790613244565b8560ff168760ff161115610c575760405162461bcd60e51b815260206004820152602d60248201527f4d696e20616765206d757374206265206c657373207468616e206f722065717560448201526c616c20746f206d61782061676560981b60648201526084016105d7565b8160ff165f03610ce45760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676542656c6f774f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a4016105d7565b8060ff165f03610d715760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676541626f76654f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a4016105d7565b8160ff168760ff16148015610d8b57508060ff168660ff16145b979650505050505050565b5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63fbd24457610dbe6060850185612e89565b610dcb6080870187612ecb565b6040518563ffffffff1660e01b8152600401610dea9493929190612f68565b602060405180830381865af4158015610e05573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e299190613343565b9050610e34816120c8565b5050565b5f610597836002846119d8565b5f546001600160a01b03163314610e6e5760405162461bcd60e51b81526004016105d790612e52565b6001600160a01b038116610ec45760405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f20616464726573730000000060448201526064016105d7565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b9190a35050565b5f5f610f5386868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061218992505050565b610fcd57600860028787604051602001610f6e92919061335a565b60408051601f1981840301815290829052610f8891613369565b602060405180830381855afa158015610fa3573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610fc69190613343565b901c610fcf565b5f5b90505f61101085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061218992505050565b61108a5760086002868660405160200161102b92919061335a565b60408051601f198184030181529082905261104591613369565b602060405180830381855afa158015611060573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906110839190613343565b901c61108c565b5f5b905081898960038181106110a2576110a261337f565b905060200201351480156110ce575080898960048181106110c5576110c561337f565b90506020020135145b9998505050505050505050565b5f546001600160a01b031633146111045760405162461bcd60e51b81526004016105d790612e52565b5f5b818110156111965760015f8484848181106111235761112361337f565b602090810292909201358352508101919091526040015f2080546001600160a01b031916905582828281811061115b5761115b61337f565b905060200201357f6fdcbcf8f91bc23f2c9dcfe8fe01d80d1b1afbbf207298e94c0171ccc587424c60405160405180910390a2600101611106565b505050565b5f6105976111ac6201518085613393565b60028461218e565b5f546001600160a01b031633146111dd5760405162461bcd60e51b81526004016105d790612e52565b5f5b838110156112d7578282828181106111f9576111f961337f565b905060200201602081019061120e91906127c3565b60015f8787858181106112235761122361337f565b9050602002013581526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555082828281811061126c5761126c61337f565b905060200201602081019061128191906127c3565b6001600160a01b031685858381811061129c5761129c61337f565b905060200201357f636107338a3eb46f1f60562462f3ec11393d35fbc965991aaade3b9e7d89c3f560405160405180910390a36001016111df565b5050505050565b5f6105976112ef6201518085613393565b60038461218e565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__63b2b37a4c6113226060880188612e89565b61132f60808a018a612ecb565b6040518563ffffffff1660e01b815260040161134e9493929190612f68565b606060405180830381865af4158015611369573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061138d9190613203565b9250925092506113a1838660a0013561209b565b6113bd5760405162461bcd60e51b81526004016105d790613244565b60ff821615611436576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e737465616460648201526084016105d7565b60ff8681169116149250505092915050565b5f5f8360ff161161149b5760405162461bcd60e51b815260206004820152601e60248201527f4d617820616765206d7573742062652067726561746572207468616e2030000060448201526064016105d7565b6105976114a96001856133a6565b836112f7565b5f610597838484610b25565b5f6108778484600285611c33565b5f6105978384600385611c33565b5f6105976114e88462015180612e3f565b6003846119d8565b5f80548190600160a01b900460ff16156115415760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b60448201526064016105d7565b5f61154c8435612392565b905061157a61155e6040860186612ecb565b5f81811061156e5761156e61337f565b905060200201356123eb565b6115a761158a6040860186612ecb565b600181811061159b5761159b61337f565b905060200201356124b3565b6115f16115b76040860186612ecb565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050505060a0860135612571565b6116595760405162461bcd60e51b815260206004820152603360248201527f5468652070726f6f66207761732067656e657261746564206f757473696465206044820152721d1a19481d985b1a591a5d1e481c195c9a5bd9606a1b60648201526084016105d7565b6116836116696040860186612ecb565b61167660c0880188612e89565b61040d60e08a018a612e89565b6116cf5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420646f6d61696e206f722073636f706500000000000000000060448201526064016105d7565b61178a6116df6040860186612ecb565b60059060016116f160408a018a612ecb565b6116fc929150613393565b92611709939291906133bf565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611747925050506060870187612e89565b6117546080890189612ecb565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061259c92505050565b60016117996040860186612ecb565b60016117a86040890189612ecb565b6117b3929150613393565b8181106117c2576117c261337f565b905060200201351415806117e357506117e361012085016101008601612794565b6118405760405162461bcd60e51b815260206004820152602860248201527f4d6f636b2070726f6f667320617265206f6e6c7920616c6c6f77656420696e20604482015267646576206d6f646560c01b60648201526084016105d7565b600661184f6040860186612ecb565b61185a929150613393565b6118676080860186612ecb565b9050146118c45760405162461bcd60e51b815260206004820152602560248201527f496e76616c696420636f6d6d697474656420696e70757420636f756e7473206c6044820152640cadccee8d60db1b60648201526084016105d7565b6001600160a01b03811663ea50d0e46118e06020870187612e89565b6118ed6040890189612ecb565b6040518563ffffffff1660e01b815260040161190c9493929190612f68565b602060405180830381865afa158015611927573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061194b91906133ea565b92505f600161195d6040870187612ecb565b611968929150613393565b90506119776040860186612ecb565b828181106119875761198761337f565b9050602002013592505050915091565b5f6105978360028461218e565b5f61059783600584611f71565b5f6105978360038461218e565b5f61059783600684611f71565b5f61059783600484611f71565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__638a8b3f92611a036060880188612e89565b611a1060808a018a612ecb565b8b6040518663ffffffff1660e01b8152600401611a31959493929190613419565b606060405180830381865af4158015611a4c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a70919061346e565b925092509250611a84838660a0013561209b565b611aa05760405162461bcd60e51b81526004016105d790613244565b6002866009811115611ab457611ab4613405565b1480611ad157506003866009811115611acf57611acf613405565b145b611aed5760405162461bcd60e51b81526004016105d790613499565b6002866009811115611b0157611b01613405565b03611ba3578015611b895760405162461bcd60e51b815260206004820152604660248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734269727468646174654265747765656e20696064820152651b9cdd19585960d21b608482015260a4016105d7565b611b976383aa7e8083613393565b8714935050505061087a565b8015611c275760405162461bcd60e51b815260206004820152604760248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973457870697279446174654265747765656e206064820152661a5b9cdd19585960ca1b608482015260a4016105d7565b508514915061087a9050565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__638a8b3f92611c5e6060880188612e89565b611c6b60808a018a612ecb565b8b6040518663ffffffff1660e01b8152600401611c8c959493929190613419565b606060405180830381865af4158015611ca7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ccb919061346e565b925092509250611cdf838660a0013561209b565b611cfb5760405162461bcd60e51b81526004016105d790613244565b86881115611d635760405162461bcd60e51b815260206004820152602f60248201527f4d696e2064617465206d757374206265206c657373207468616e206f7220657160448201526e75616c20746f206d6178206461746560881b60648201526084016105d7565b6002866009811115611d7757611d77613405565b1480611d9457506003866009811115611d9257611d92613405565b145b611db05760405162461bcd60e51b81526004016105d790613499565b6002866009811115611dc457611dc4613405565b03611eaa57815f03611e595760405162461bcd60e51b815260206004820152605260248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746542656064820152711b1bddd3dc915c5d585b081a5b9cdd19585960721b608482015260a4016105d7565b805f03611e785760405162461bcd60e51b81526004016105d7906134c5565b611e866383aa7e8083613393565b88148015611ea05750611e9d6383aa7e8082613393565b87145b935050505061083f565b815f03611f3b5760405162461bcd60e51b815260206004820152605360248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746542606482015272195b1bddd3dc915c5d585b081a5b9cdd195859606a1b608482015260a4016105d7565b805f03611f5a5760405162461bcd60e51b81526004016105d79061353d565b8188148015611ea057509095149695505050505050565b5f808073__$144f4fe859debe4776cdef2b99f7b97a42$__6384d40ca0611f9b6060870187612e89565b611fa86080890189612ecb565b8a6040518663ffffffff1660e01b8152600401611fc9959493929190613419565b5f60405180830381865af4158015611fe3573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261200a91908101906135b6565b9150915080865114612020575f9250505061087a565b5f5b8181101561208e5761207787828151811061203f5761203f61337f565b60200260200101518483815181106120595761205961337f565b60200260200101518051602091820120825192909101919091201490565b612086575f935050505061087a565b600101612022565b5060019695505050505050565b5f806120a78385612e3f565b90508342101580156120b857508381115b801561083f575042109392505050565b6002546040516383578c1160e01b815260036004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa158015612116573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061213a91906133ea565b6121865760405162461bcd60e51b815260206004820152601f60248201527f496e76616c69642073616e6374696f6e7320726567697374727920726f6f740060448201526064016105d7565b50565b511590565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__638a8b3f926121b96060880188612e89565b6121c660808a018a612ecb565b8b6040518663ffffffff1660e01b81526004016121e7959493929190613419565b606060405180830381865af4158015612202573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612226919061346e565b92509250925061223a838660a0013561209b565b6122565760405162461bcd60e51b81526004016105d790613244565b81156122d45760405162461bcd60e51b815260206004820152604160248201527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973446174654265747765656e20696e737465616064820152601960fa1b608482015260a4016105d7565b60028660098111156122e8576122e8613405565b14806123055750600386600981111561230357612303613405565b145b6123215760405162461bcd60e51b81526004016105d790613499565b600286600981111561233557612335613405565b0361236757805f036123595760405162461bcd60e51b81526004016105d7906134c5565b611b976383aa7e8082613393565b805f036123865760405162461bcd60e51b81526004016105d79061353d565b8614925061087a915050565b5f818152600160205260408120546001600160a01b03168061059a5760405162461bcd60e51b815260206004820152601260248201527115995c9a599a595c881b9bdd08199bdd5b9960721b60448201526064016105d7565b6002546040516383578c1160e01b815260016004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa158015612439573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061245d91906133ea565b6121865760405162461bcd60e51b815260206004820152602160248201527f496e76616c696420636572746966696361746520726567697374727920726f6f6044820152601d60fa1b60648201526084016105d7565b600280546040516383578c1160e01b81526004810192909252602482018390526001600160a01b0316906383578c1190604401602060405180830381865afa158015612501573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061252591906133ea565b6121865760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206369726375697420726567697374727920726f6f7400000060448201526064016105d7565b5f5f836002815181106125865761258661337f565b60200260200101515f1c905061083f818461209b565b5f805b82518110156126dd575f60086002878786908887815181106125c3576125c361337f565b6020026020010151886125d69190612e3f565b926125e39392919061366f565b6040516020016125f492919061335a565b60408051601f198184030181529082905261260e91613369565b602060405180830381855afa158015612629573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061264c9190613343565b901c90508682815181106126625761266261337f565b602002602001015181146126ad5760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016105d7565b8382815181106126bf576126bf61337f565b6020026020010151836126d29190612e3f565b92505060010161259f565b508083146112d75760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420636f6d6d697474656420696e70757473206c656e6774680060448201526064016105d7565b5f610120828403121561273e575f5ffd5b50919050565b5f5f60408385031215612755575f5ffd5b8235915060208301356001600160401b03811115612771575f5ffd5b61277d8582860161272d565b9150509250929050565b8015158114612186575f5ffd5b5f602082840312156127a4575f5ffd5b813561087a81612787565b6001600160a01b0381168114612186575f5ffd5b5f602082840312156127d3575f5ffd5b813561087a816127af565b5f5f604083850312156127ef575f5ffd5b82356001600160401b03811115612804575f5ffd5b6128108582860161272d565b925050602083013561282181612787565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f8251610100602084015261287761012084018261282c565b90506020840151601f19848303016040850152612894828261282c565b9150506040840151601f198483030160608501526128b2828261282c565b9150506060840151601f198483030160808501526128d0828261282c565b9150506080840151601f198483030160a08501526128ee828261282c565b91505060a0840151601f198483030160c085015261290c828261282c565b91505060c0840151601f198483030160e085015261292a828261282c565b91505060e0840151601f1984830301610100850152612949828261282c565b95945050505050565b60ff81168114612186575f5ffd5b5f5f60408385031215612971575f5ffd5b823561297c81612952565b915060208301356001600160401b03811115612771575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b03811182821017156129cd576129cd612996565b60405290565b604051601f8201601f191681016001600160401b03811182821017156129fb576129fb612996565b604052919050565b5f6001600160401b03821115612a1b57612a1b612996565b5060051b60200190565b5f6001600160401b03821115612a3d57612a3d612996565b50601f01601f191660200190565b5f5f60408385031215612a5c575f5ffd5b82356001600160401b03811115612a71575f5ffd5b8301601f81018513612a81575f5ffd5b8035612a94612a8f82612a03565b6129d3565b8082825260208201915060208360051b850101925087831115612ab5575f5ffd5b602084015b83811015612b355780356001600160401b03811115612ad7575f5ffd5b8501603f81018a13612ae7575f5ffd5b6020810135612af8612a8f82612a25565b8181526040838301018c1015612b0c575f5ffd5b816040840160208301375f60208383010152808652505050602083019250602081019050612aba565b50945050505060208301356001600160401b03811115612771575f5ffd5b5f5f5f60608486031215612b65575f5ffd5b833592506020840135915060408401356001600160401b03811115612b88575f5ffd5b612b948682870161272d565b9150509250925092565b5f60208284031215612bae575f5ffd5b81356001600160401b03811115612bc3575f5ffd5b61083f8482850161272d565b6020815260018060a01b038251166020820152602082015160408201525f604083015160608084015261083f608084018261282c565b5f5f5f60608486031215612c17575f5ffd5b8335612c2281612952565b92506020840135612c3281612952565b915060408401356001600160401b03811115612b88575f5ffd5b5f60208284031215612c5c575f5ffd5b5035919050565b5f5f83601f840112612c73575f5ffd5b5081356001600160401b03811115612c89575f5ffd5b6020830191508360208260051b8501011115612ca3575f5ffd5b9250929050565b5f5f83601f840112612cba575f5ffd5b5081356001600160401b03811115612cd0575f5ffd5b602083019150836020828501011115612ca3575f5ffd5b5f5f5f5f5f5f60608789031215612cfc575f5ffd5b86356001600160401b03811115612d11575f5ffd5b612d1d89828a01612c63565b90975095505060208701356001600160401b03811115612d3b575f5ffd5b612d4789828a01612caa565b90955093505060408701356001600160401b03811115612d65575f5ffd5b612d7189828a01612caa565b979a9699509497509295939492505050565b5f5f60208385031215612d94575f5ffd5b82356001600160401b03811115612da9575f5ffd5b612db585828601612c63565b90969095509350505050565b5f5f5f5f60408587031215612dd4575f5ffd5b84356001600160401b03811115612de9575f5ffd5b612df587828801612c63565b90955093505060208501356001600160401b03811115612e13575f5ffd5b612e1f87828801612c63565b95989497509550505050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561059a5761059a612e2b565b6020808252601a908201527f4e6f7420617574686f72697a65643a2061646d696e206f6e6c79000000000000604082015260600190565b5f5f8335601e19843603018112612e9e575f5ffd5b8301803591506001600160401b03821115612eb7575f5ffd5b602001915036819003821315612ca3575f5ffd5b5f5f8335601e19843603018112612ee0575f5ffd5b8301803591506001600160401b03821115612ef9575f5ffd5b6020019150600581901b3603821315612ca3575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8183525f6001600160fb1b03831115612f4f575f5ffd5b8260051b80836020870137939093016020019392505050565b604081525f612f7b604083018688612f10565b8281036020840152610d8b818587612f38565b5f82601f830112612f9d575f5ffd5b8151602083015f612fb0612a8f84612a25565b9050828152858383011115612fc3575f5ffd5b8282602083015e5f92810160200192909252509392505050565b5f5f60408385031215612fee575f5ffd5b82516001600160401b03811115613003575f5ffd5b61300f85828601612f8e565b92505060208301516001600160401b0381111561302a575f5ffd5b61277d85828601612f8e565b604081525f613048604083018561282c565b905082151560208301529392505050565b5f60208284031215613069575f5ffd5b81516001600160401b0381111561307e575f5ffd5b82016101008185031215613090575f5ffd5b6130986129aa565b81516001600160401b038111156130ad575f5ffd5b6130b986828501612f8e565b82525060208201516001600160401b038111156130d4575f5ffd5b6130e086828501612f8e565b60208301525060408201516001600160401b038111156130fe575f5ffd5b61310a86828501612f8e565b60408301525060608201516001600160401b03811115613128575f5ffd5b61313486828501612f8e565b60608301525060808201516001600160401b03811115613152575f5ffd5b61315e86828501612f8e565b60808301525060a08201516001600160401b0381111561317c575f5ffd5b61318886828501612f8e565b60a08301525060c08201516001600160401b038111156131a6575f5ffd5b6131b286828501612f8e565b60c08301525060e08201516001600160401b038111156131d0575f5ffd5b6131dc86828501612f8e565b60e083015250949350505050565b60ff818116838216019081111561059a5761059a612e2b565b5f5f5f60608486031215613215575f5ffd5b8351602085015190935061322881612952565b604085015190925061323981612952565b809150509250925092565b6020808252604b908201527f5468652063757272656e742064617465207573656420696e207468652070726f60408201527f6f6620646f6573206e6f742066616c6c2077697468696e207468652076616c6960608201526a191a5d1e481c195c9a5bd960aa1b608082015260a00190565b5f602082840312156132c5575f5ffd5b81516001600160401b038111156132da575f5ffd5b61083f84828501612f8e565b602081525f610597602083018461282c565b5f5f5f6060848603121561330a575f5ffd5b8351613315816127af565b6020850151604086015191945092506001600160401b03811115613337575f5ffd5b612b9486828701612f8e565b5f60208284031215613353575f5ffd5b5051919050565b818382375f9101908152919050565b5f82518060208501845e5f920191825250919050565b634e487b7160e01b5f52603260045260245ffd5b8181038181111561059a5761059a612e2b565b60ff828116828216039081111561059a5761059a612e2b565b5f5f858511156133cd575f5ffd5b838611156133d9575f5ffd5b5050600583901b0193919092039150565b5f602082840312156133fa575f5ffd5b815161087a81612787565b634e487b7160e01b5f52602160045260245ffd5b606081525f61342c606083018789612f10565b828103602084015261343f818688612f38565b915050600a831061345e57634e487b7160e01b5f52602160045260245ffd5b8260408301529695505050505050565b5f5f5f60608486031215613480575f5ffd5b5050815160208301516040909301519094929350919050565b602080825260129082015271496e76616c69642070726f6f66207479706560701b604082015260600190565b60208082526052908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746541626060820152711bdd9953dc915c5d585b081a5b9cdd19585960721b608082015260a00190565b60208082526053908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746541606082015272189bdd9953dc915c5d585b081a5b9cdd195859606a1b608082015260a00190565b5f5f604083850312156135c7575f5ffd5b82516001600160401b038111156135dc575f5ffd5b8301601f810185136135ec575f5ffd5b80516135fa612a8f82612a03565b8082825260208201915060208360051b85010192508783111561361b575f5ffd5b602084015b8381101561365b5780516001600160401b0381111561363d575f5ffd5b61364c8a602083890101612f8e565b84525060209283019201613620565b506020969096015195979596505050505050565b5f5f8585111561367d575f5ffd5b83861115613689575f5ffd5b505082019391909203915056fea26469706673582212201ad0934c58c94945ad619ae11884148cc3af0f513c363543f6833c83eb4947ff64736f6c634300081d0033",
|
|
955
|
-
sourceMap: "620:27253:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12931:206;;;;;;:::i;:::-;;:::i;:::-;;;864:14:33;;857:22;839:41;;827:2;812:18;12931:206:26;;;;;;;;14970:192;;;;;;:::i;:::-;;:::i;2441:118::-;;;;;;:::i;:::-;;:::i;:::-;;3092:206;;;;;;:::i;:::-;;:::i;3833:369::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5263:169::-;;;;;;:::i;:::-;;:::i;20967:230::-;;;;;;:::i;:::-;;:::i;652:69::-;;718:1;652:69;;;;;7807:25:33;;;7795:2;7780:18;652:69:26;7661:177:33;16515:227:26;;;;;;:::i;:::-;;:::i;15468:207::-;;;;;;:::i;:::-;;:::i;4480:541::-;;;;;;:::i;:::-;;:::i;21363:347::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;890:18::-;;;;;-1:-1:-1;;;890:18:26;;;;;;5757:766;;;;;;:::i;:::-;;:::i;794:67::-;;858:1;794:67;;21861:271;;;;;;:::i;:::-;;:::i;725:65::-;;787:1;725:65;;12463:204;;;;;;:::i;:::-;;:::i;2208:229::-;;;;;;:::i;:::-;;:::i;998:53::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;998:53:26;;;;;;-1:-1:-1;;;;;10373:32:33;;;10355:51;;10343:2;10328:18;998:53:26;10209:203:33;22471:706:26;;;;;;:::i;:::-;;:::i;2857:231::-;;;;;;:::i;:::-;;:::i;14490:210::-;;;;;;:::i;:::-;;:::i;2563:290::-;;;;;;:::i;:::-;;:::i;17533:211::-;;;;;;:::i;:::-;;:::i;6801:541::-;;;;;;:::i;:::-;;:::i;1125:33::-;;;;;-1:-1:-1;;;;;1125:33:26;;;7584:228;;;;;;:::i;:::-;;:::i;8060:159::-;;;;;;:::i;:::-;;:::i;13490:224::-;;;;;;:::i;:::-;;:::i;18020:195::-;;;;;;:::i;:::-;;:::i;15945:209::-;;;;;;:::i;:::-;;:::i;25096:2775::-;;;;;;:::i;:::-;;:::i;:::-;;;;13833:14:33;;13826:22;13808:41;;13880:2;13865:18;;13858:34;;;;13781:18;25096:2775:26;13640:258:33;14017:206:26;;;;;;:::i;:::-;;:::i;20334:223::-;;;;;;:::i;:::-;;:::i;17051:209::-;;;;;;:::i;:::-;;:::i;19703:229::-;;;;;;:::i;:::-;;:::i;866:20::-;;;;;-1:-1:-1;;;;;866:20:26;;;19149:222;;;;;;:::i;:::-;;:::i;12931:206::-;13048:4;13067:65;13086:16;:7;13096:6;13086:16;:::i;:::-;13104:19;13125:6;13067:18;:65::i;:::-;13060:72;;12931:206;;;;;:::o;14970:192::-;15084:4;15103:54;15117:4;15123;15129:19;15150:6;15103:13;:54::i;2441:118::-;2071:5;;-1:-1:-1;;;;;2071:5:26;2057:10;:19;2049:58;;;;-1:-1:-1;;;2049:58:26;;;;;;;:::i;:::-;;;;;;;;;2499:6:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;2499:16:26::1;-1:-1:-1::0;;;;2499:16:26;;::::1;;::::0;;2526:28:::1;::::0;::::1;::::0;::::1;::::0;2508:7;864:14:33;857:22;839:41;;827:2;812:18;;699:187;2526:28:26::1;;;;;;;;2441:118:::0;:::o;3092:206::-;2071:5;;-1:-1:-1;;;;;2071:5:26;2057:10;:19;2049:58;;;;-1:-1:-1;;;2049:58:26;;;;;;;:::i;:::-;-1:-1:-1;;;;;3176:27:26;::::1;3168:76;;;::::0;-1:-1:-1;;;3168:76:26;;14722:2:33;3168:76:26::1;::::0;::::1;14704:21:33::0;14761:2;14741:18;;;14734:30;14800:34;14780:18;;;14773:62;-1:-1:-1;;;14851:18:33;;;14844:34;14895:19;;3168:76:26::1;14520:400:33::0;3168:76:26::1;3250:12;:43:::0;;-1:-1:-1;;;;;;3250:43:26::1;-1:-1:-1::0;;;;;3250:43:26;;;::::1;::::0;;;::::1;::::0;;3092:206::o;3833:369::-;3952:34;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3952:34:26;3997:26;4027:15;:38;4066:22;;;;:6;:22;:::i;:::-;4090:27;;;;:6;:27;:::i;:::-;4027:91;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4027:91:26;;;;;;;;;;;;:::i;:::-;4140:57;;-1:-1:-1;;;4140:57:26;;3994:124;;-1:-1:-1;4140:15:26;;-1:-1:-1;4140:32:26;;:57;;3994:124;;4188:8;;4140:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4140:57:26;;;;;;;;;;;;:::i;:::-;4124:73;3833:369;-1:-1:-1;;;;3833:369:26:o;5263:169::-;5371:4;5390:37;5408:10;:6;5417:1;5408:10;:::i;:::-;5420:6;5390:17;:37::i;20967:230::-;21099:4;21118:74;21135:11;21148:35;21185:6;21118:16;:74::i;16515:227::-;16656:4;16675:62;16689:7;16698;16707:21;16730:6;16675:13;:62::i;:::-;16668:69;;16515:227;;;;;;:::o;15468:207::-;15593:4;15612:58;15631:7;15640:21;15663:6;15612:18;:58::i;4480:541::-;4595:4;;;;4653:15;:33;4687:22;;;;:6;:22;:::i;:::-;4711:27;;;;:6;:27;:::i;:::-;4653:86;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4607:132;;;;;;4753:66;4775:11;4788:6;:30;;;4753:21;:66::i;:::-;4745:154;;;;-1:-1:-1;;;4745:154:26;;;;;;;:::i;:::-;4913:8;;;;4905:85;;;;;-1:-1:-1;;;4905:85:26;;21776:2:33;4905:85:26;;;21758:21:33;21795:18;;;21788:30;;;;21854:34;21834:18;;;21827:62;21925:34;21905:18;;;21898:62;21977:19;;4905:85:26;21574:428:33;4905:85:26;-1:-1:-1;5003:13:26;;;;;;;;-1:-1:-1;;4480:541:26;;;;:::o;21363:347::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;21489:17:26;21509:15;:34;21544:22;;;;:6;:22;:::i;:::-;21568:27;;;;:6;:27;:::i;:::-;21509:87;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21509:87:26;;;;;;;;;;;;:::i;:::-;21671:34;;-1:-1:-1;;;21671:34:26;;21489:107;;-1:-1:-1;21671:15:26;;:28;;:34;;21489:107;;21671:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21671:34:26;;;;;;;;;;;;:::i;:::-;21647:20;;;21602:103;21628:17;;;21602:103;-1:-1:-1;;;;;21602:103:26;;;-1:-1:-1;21603:9:26;21363:347;-1:-1:-1;21363:347:26:o;5757:766::-;5885:4;;;;5943:15;:33;5977:22;;;;:6;:22;:::i;:::-;6001:27;;;;:6;:27;:::i;:::-;5943:86;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5897:132;;;;;;6043:66;6065:11;6078:6;:30;;;6043:21;:66::i;:::-;6035:154;;;;-1:-1:-1;;;6035:154:26;;;;;;;:::i;:::-;6213:6;6203:16;;:6;:16;;;;6195:74;;;;-1:-1:-1;;;6195:74:26;;23362:2:33;6195:74:26;;;23344:21:33;23401:2;23381:18;;;23374:30;23440:34;23420:18;;;23413:62;-1:-1:-1;;;23491:18:33;;;23484:43;23544:19;;6195:74:26;23160:409:33;6195:74:26;6283:3;:8;;6290:1;6283:8;6275:97;;;;-1:-1:-1;;;6275:97:26;;23776:2:33;6275:97:26;;;23758:21:33;23815:2;23795:18;;;23788:30;23854:34;23834:18;;;23827:62;23925:34;23905:18;;;23898:62;-1:-1:-1;;;23976:19:33;;;23969:43;24029:19;;6275:97:26;23574:480:33;6275:97:26;6386:3;:8;;6393:1;6386:8;6378:97;;;;-1:-1:-1;;;6378:97:26;;24261:2:33;6378:97:26;;;24243:21:33;24300:2;24280:18;;;24273:30;24339:34;24319:18;;;24312:62;24410:34;24390:18;;;24383:62;-1:-1:-1;;;24461:19:33;;;24454:43;24514:19;;6378:97:26;24059:480:33;6378:97:26;6498:3;6488:13;;:6;:13;;;:30;;;;;6515:3;6505:13;;:6;:13;;;6488:30;6481:37;5757:766;-1:-1:-1;;;;;;;5757:766:26:o;21861:271::-;21958:26;21987:15;:39;22027:22;;;;:6;:22;:::i;:::-;22051:27;;;;:6;:27;:::i;:::-;21987:92;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21958:121;;22085:42;22108:18;22085:22;:42::i;:::-;21952:180;21861:271;:::o;12463:204::-;12587:4;12606:56;12625:7;12634:19;12655:6;12606:18;:56::i;2208:229::-;2071:5;;-1:-1:-1;;;;;2071:5:26;2057:10;:19;2049:58;;;;-1:-1:-1;;;2049:58:26;;;;;;;:::i;:::-;-1:-1:-1;;;;;2282:22:26;::::1;2274:63;;;::::0;-1:-1:-1;;;2274:63:26;;24935:2:33;2274:63:26::1;::::0;::::1;24917:21:33::0;24974:2;24954:18;;;24947:30;25013;24993:18;;;24986:58;25061:18;;2274:63:26::1;24733:352:33::0;2274:63:26::1;2343:16;2362:5:::0;;-1:-1:-1;;;;;2373:16:26;;::::1;-1:-1:-1::0;;;;;;2373:16:26;::::1;::::0;::::1;::::0;;2400:32:::1;::::0;2362:5;;;::::1;::::0;;;2400:32:::1;::::0;2343:16;2400:32:::1;2268:169;2208:229:::0;:::o;22471:706::-;22610:4;22724:17;22744:27;22764:6;;22744:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22744:19:26;;-1:-1:-1;;;22744:27:26:i;:::-;:92;;22835:1;22799:32;22823:6;;22806:24;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;22806:24:26;;;;;;;;;;22799:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:37;;22744:92;;;22788:1;22744:92;22724:112;;22936:20;22959:26;22979:5;;22959:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22959:19:26;;-1:-1:-1;;;22959:26:26:i;:::-;:90;;23048:1;23013:31;23037:5;;23020:23;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;23020:23:26;;;;;;;;;;23013:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;;22959:90;;;23002:1;22959:90;22936:113;;23103:9;23062:12;;1073:1:19;23062:37:26;;;;;;;:::i;:::-;;;;;;;:50;:110;;;;;23160:12;23116;;1112:1:19;23116:40:26;;;;;;;:::i;:::-;;;;;;;:56;23062:110;23055:117;22471:706;-1:-1:-1;;;;;;;;;22471:706:26:o;2857:231::-;2071:5;;-1:-1:-1;;;;;2071:5:26;2057:10;:19;2049:58;;;;-1:-1:-1;;;2049:58:26;;;;;;;:::i;:::-;2943:9:::1;2938:146;2958:21:::0;;::::1;2938:146;;;3001:18;:33;3020:10;;3031:1;3020:13;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;3001:33:::0;;-1:-1:-1;3001:33:26;::::1;::::0;;;;;;-1:-1:-1;3001:33:26;2994:40;;-1:-1:-1;;;;;;2994:40:26::1;::::0;;3063:10;;3074:1;3063:13;;::::1;;;;;:::i;:::-;;;;;;;3047:30;;;;;;;;;;2981:3;;2938:146;;;;2857:231:::0;;:::o;14490:210::-;14610:4;14629:66;14649:16;14659:6;14649:7;:16;:::i;:::-;14667:19;14688:6;14629:19;:66::i;2563:290::-;2071:5;;-1:-1:-1;;;;;2071:5:26;2057:10;:19;2049:58;;;;-1:-1:-1;;;2049:58:26;;;;;;;:::i;:::-;2688:9:::1;2683:166;2703:21:::0;;::::1;2683:166;;;2775:9;;2785:1;2775:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2739:18;:33;2758:10;;2769:1;2758:13;;;;;;;:::i;:::-;;;;;;;2739:33;;;;;;;;;;;;:48;;;;;-1:-1:-1::0;;;;;2739:48:26::1;;;;;-1:-1:-1::0;;;;;2739:48:26::1;;;;;;2829:9;;2839:1;2829:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;2800:42:26::1;2814:10;;2825:1;2814:13;;;;;;;:::i;:::-;;;;;;;2800:42;;;;;;;;;;2726:3;;2683:166;;;;2563:290:::0;;;;:::o;17533:211::-;17652:4;17671:68;17691:16;17701:6;17691:7;:16;:::i;:::-;17709:21;17732:6;17671:19;:68::i;6801:541::-;6916:4;;;;6974:15;:33;7008:22;;;;:6;:22;:::i;:::-;7032:27;;;;:6;:27;:::i;:::-;6974:86;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6928:132;;;;;;7074:66;7096:11;7109:6;:30;;;7074:21;:66::i;:::-;7066:154;;;;-1:-1:-1;;;7066:154:26;;;;;;;:::i;:::-;7234:8;;;;7226:85;;;;;-1:-1:-1;;;7226:85:26;;26141:2:33;7226:85:26;;;26123:21:33;26160:18;;;26153:30;;;;26219:34;26199:18;;;26192:62;26290:34;26270:18;;;26263:62;26342:19;;7226:85:26;25939:428:33;7226:85:26;7324:13;;;;;;;;-1:-1:-1;;;6801:541:26;;;;:::o;7584:228::-;7692:4;7721:1;7712:6;:10;;;7704:53;;;;-1:-1:-1;;;7704:53:26;;26574:2:33;7704:53:26;;;26556:21:33;26613:2;26593:18;;;26586:30;26652:32;26632:18;;;26625:60;26702:18;;7704:53:26;26372:354:33;7704:53:26;7770:37;7788:10;7797:1;7788:6;:10;:::i;:::-;7800:6;7770:17;:37::i;8060:159::-;8165:4;8184:30;8197:3;8202;8207:6;8184:12;:30::i;13490:224::-;13630:4;13649:60;13663:7;13672;13681:19;13702:6;13649:13;:60::i;18020:195::-;18135:4;18154:56;18168:4;18174;18180:21;18203:6;18154:13;:56::i;15945:209::-;16063:4;16082:67;16101:16;:7;16111:6;16101:16;:::i;:::-;16119:21;16142:6;16082:18;:67::i;25096:2775::-;25203:12;2163:6;;25203:12;;-1:-1:-1;;;2163:6:26;;;;2162:7;2154:38;;;;-1:-1:-1;;;2154:38:26;;27089:2:33;2154:38:26;;;27071:21:33;27128:2;27108:18;;;27101:30;-1:-1:-1;;;27147:18:33;;;27140:48;27205:18;;2154:38:26;26887:342:33;2154:38:26;25326:16:::1;25345:29;25358:15:::0;::::1;25345:12;:29::i;:::-;25326:48:::0;-1:-1:-1;25423:90:26::1;25448:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;942:1:19;25448:64:26;;;;;;;:::i;:::-;;;;;;;25423:24;:90::i;:::-;25558:82;25579:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;994:1:19;25579:60:26;;;;;;;:::i;:::-;;;;;;;25558:20;:82::i;:::-;25698:62;25708:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;25698:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;;25729:30:26::1;::::0;::::1;;25698:9;:62::i;:::-;25683:144;;;::::0;-1:-1:-1;;;25683:144:26;;27986:2:33;25683:144:26::1;::::0;::::1;27968:21:33::0;28025:2;28005:18;;;27998:30;28064:34;28044:18;;;28037:62;-1:-1:-1;;;28115:18:33;;;28108:49;28174:19;;25683:144:26::1;27784:415:33::0;25683:144:26::1;26171:62;26184:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;26205:13;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;26220:12;;::::0;::::1;:6:::0;:12:::1;:::i;26171:62::-;26163:98;;;::::0;-1:-1:-1;;;26163:98:26;;28933:2:33;26163:98:26::1;::::0;::::1;28915:21:33::0;28972:2;28952:18;;;28945:30;29011:25;28991:18;;;28984:53;29054:18;;26163:98:26::1;28731:347:33::0;26163:98:26::1;26329:244;26415:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;1160:1:19;::::0;26500::26::1;26471:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;:30;::::0;;-1:-1:-1;26471:30:26::1;:::i;:::-;26415:87;;;;;;;:::i;:::-;26329:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;26510:22:26::1;::::0;-1:-1:-1;;;26510:22:26::1;::::0;::::1;::::0;::::1;:::i;:::-;26540:27;;::::0;::::1;:6:::0;:27:::1;:::i;:::-;26329:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;26329:21:26::1;::::0;-1:-1:-1;;;26329:244:26:i:1;:::-;26962:1;26891:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;26940:1;26911:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;:30;::::0;;-1:-1:-1;26911:30:26::1;:::i;:::-;26891:51;;;;;;;:::i;:::-;;;;;;;:74;;:92;;;-1:-1:-1::0;26969:14:26::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;26876:163;;;::::0;-1:-1:-1;;;26876:163:26;;29645:2:33;26876:163:26::1;::::0;::::1;29627:21:33::0;29684:2;29664:18;;;29657:30;29723:34;29703:18;;;29696:62;-1:-1:-1;;;29774:18:33;;;29767:38;29822:19;;26876:163:26::1;29443:404:33::0;26876:163:26::1;1299:1:19;27257:19:26;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;:86;::::0;;-1:-1:-1;27257:86:26::1;:::i;:::-;27219:27;;::::0;::::1;:6:::0;:27:::1;:::i;:::-;:34;;:124;27211:174;;;::::0;-1:-1:-1;;;27211:174:26;;30054:2:33;27211:174:26::1;::::0;::::1;30036:21:33::0;30093:2;30073:18;;;30066:30;30132:34;30112:18;;;30105:62;-1:-1:-1;;;30183:18:33;;;30176:35;30228:19;;27211:174:26::1;29852:401:33::0;27211:174:26::1;-1:-1:-1::0;;;;;27504:26:26;::::1;;27531:12;;::::0;::::1;:6:::0;:12:::1;:::i;:::-;27545:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;27504:61;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27494:71:::0;-1:-1:-1;27628:29:26::1;27689:1;27660:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;:30;::::0;;-1:-1:-1;27660:30:26::1;:::i;:::-;27628:62:::0;-1:-1:-1;27715:19:26::1;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;27735:21;27715:42;;;;;;;:::i;:::-;;;;;;;27696:61;;27832:34;;25096:2775:::0;;;:::o;14017:206::-;14142:4;14161:57;14181:7;14190:19;14211:6;14161:19;:57::i;20334:223::-;20463:4;20482:70;20499:11;20512:31;20545:6;20482:16;:70::i;17051:209::-;17177:4;17196:59;17216:7;17225:21;17248:6;17196:19;:59::i;19703:229::-;19834:4;19853:74;19870:11;19883:35;19920:6;19853:16;:74::i;19149:222::-;19277:4;19296:70;19313:11;19326:31;19359:6;19296:16;:70::i;8223:1133::-;8368:4;;;;8430:15;:34;8465:22;;;;:6;:22;:::i;:::-;8489:27;;;;:6;:27;:::i;:::-;8518:9;8430:98;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8380:148;;;;;;8542:66;8564:11;8577:6;:30;;;8542:21;:66::i;:::-;8534:154;;;;-1:-1:-1;;;8534:154:26;;;;;;;:::i;:::-;8715:19;8702:9;:32;;;;;;;;:::i;:::-;;:70;;;-1:-1:-1;8751:21:26;8738:9;:34;;;;;;;;:::i;:::-;;8702:70;8694:101;;;;-1:-1:-1;;;8694:101:26;;;;;;;:::i;:::-;8818:19;8805:9;:32;;;;;;;;:::i;:::-;;8801:551;;8855:8;;8847:91;;;;-1:-1:-1;;;8847:91:26;;32856:2:33;8847:91:26;;;32838:21:33;32895:2;32875:18;;;32868:30;32934:34;32914:18;;;32907:62;33005:34;32985:18;;;32978:62;-1:-1:-1;;;33056:19:33;;;33049:37;33103:19;;8847:91:26;32654:474:33;8847:91:26;9168:35;144:10:19;9168:3:26;:35;:::i;:::-;9157:7;:46;9150:53;;;;;;;8801:551;9232:8;;9224:92;;;;-1:-1:-1;;;9224:92:26;;33335:2:33;9224:92:26;;;33317:21:33;33374:2;33354:18;;;33347:30;33413:34;33393:18;;;33386:62;33484:34;33464:18;;;33457:62;-1:-1:-1;;;33535:19:33;;;33528:38;33583:19;;9224:92:26;33133:475:33;9224:92:26;-1:-1:-1;9331:14:26;;;-1:-1:-1;9324:21:26;;-1:-1:-1;9324:21:26;9360:1549;9521:4;;;;9583:15;:34;9618:22;;;;:6;:22;:::i;:::-;9642:27;;;;:6;:27;:::i;:::-;9671:9;9583:98;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9533:148;;;;;;9695:66;9717:11;9730:6;:30;;;9695:21;:66::i;:::-;9687:154;;;;-1:-1:-1;;;9687:154:26;;;;;;;:::i;:::-;9866:7;9855;:18;;9847:78;;;;-1:-1:-1;;;9847:78:26;;33815:2:33;9847:78:26;;;33797:21:33;33854:2;33834:18;;;33827:30;33893:34;33873:18;;;33866:62;-1:-1:-1;;;33944:18:33;;;33937:45;33999:19;;9847:78:26;33613:411:33;9847:78:26;9952:19;9939:9;:32;;;;;;;;:::i;:::-;;:70;;;-1:-1:-1;9988:21:26;9975:9;:34;;;;;;;;:::i;:::-;;9939:70;9931:101;;;;-1:-1:-1;;;9931:101:26;;;;;;;:::i;:::-;10055:19;10042:9;:32;;;;;;;;:::i;:::-;;10038:867;;10092:3;10099:1;10092:8;10084:103;;;;-1:-1:-1;;;10084:103:26;;34231:2:33;10084:103:26;;;34213:21:33;34270:2;34250:18;;;34243:30;34309:34;34289:18;;;34282:62;34380:34;34360:18;;;34353:62;-1:-1:-1;;;34431:19:33;;;34424:49;34490:19;;10084:103:26;34029:486:33;10084:103:26;10203:3;10210:1;10203:8;10195:103;;;;-1:-1:-1;;;10195:103:26;;;;;;;:::i;:::-;10529:35;144:10:19;10529:3:26;:35;:::i;:::-;10518:7;:46;:96;;;;-1:-1:-1;10579:35:26;144:10:19;10579:3:26;:35;:::i;:::-;10568:7;:46;10518:96;10511:103;;;;;;;10038:867;10643:3;10650:1;10643:8;10635:104;;;;-1:-1:-1;;;10635:104:26;;35213:2:33;10635:104:26;;;35195:21:33;35252:2;35232:18;;;35225:30;35291:34;35271:18;;;35264:62;35362:34;35342:18;;;35335:62;-1:-1:-1;;;35413:19:33;;;35406:50;35473:19;;10635:104:26;35011:487:33;10635:104:26;10755:3;10762:1;10755:8;10747:104;;;;-1:-1:-1;;;10747:104:26;;;;;;;:::i;:::-;10877:3;10866:7;:14;:32;;;;-1:-1:-1;10884:14:26;;;;9360:1549;-1:-1:-1;;;;;;9360:1549:26:o;18219:606::-;18374:4;;;18455:15;:37;18493:22;;;;:6;:22;:::i;:::-;18517:27;;;;:6;:27;:::i;:::-;18546:9;18455:101;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18455:101:26;;;;;;;;;;;;:::i;:::-;18386:170;;;;18588:22;18566:11;:18;:44;18562:77;;18627:5;18620:12;;;;;;18562:77;18649:9;18644:160;18668:22;18664:1;:26;18644:160;;;18710:55;18729:11;18741:1;18729:14;;;;;;;;:::i;:::-;;;;;;;18745:16;18762:1;18745:19;;;;;;;;:::i;:::-;;;;;;;234::24;;;;;;;211;;;;;;;;;;:42;;119:139;18710:55:26;18705:93;;18784:5;18777:12;;;;;;;18705:93;18692:3;;18644:160;;;-1:-1:-1;18816:4:26;;18219:606;-1:-1:-1;;;;;;18219:606:26:o;392:337:20:-;500:4;;546:35;558:23;546:9;:35;:::i;:::-;512:69;;619:9;600:15;:28;;:73;;;;;664:9;638:23;:35;600:73;:124;;;;-1:-1:-1;709:15:20;-1:-1:-1;683:41:20;392:337;-1:-1:-1;;;392:337:20:o;24599:204:26:-;24689:12;;:62;;-1:-1:-1;;;24689:62:26;;858:1;24689:62;;;37347:25:33;37388:18;;;37381:34;;;-1:-1:-1;;;;;24689:12:26;;;;:24;;37320:18:33;;24689:62:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24674:124;;;;-1:-1:-1;;;24674:124:26;;37628:2:33;24674:124:26;;;37610:21:33;37667:2;37647:18;;;37640:30;37706:33;37686:18;;;37679:61;37757:18;;24674:124:26;37426:355:33;24674:124:26;24599:204;:::o;262:101:24:-;338:15;:20;;262:101::o;10913:1250:26:-;11059:4;;;;11121:15;:34;11156:22;;;;:6;:22;:::i;:::-;11180:27;;;;:6;:27;:::i;:::-;11209:9;11121:98;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11071:148;;;;;;11233:66;11255:11;11268:6;:30;;;11233:21;:66::i;:::-;11225:154;;;;-1:-1:-1;;;11225:154:26;;;;;;;:::i;:::-;11393:8;;11385:86;;;;-1:-1:-1;;;11385:86:26;;37988:2:33;11385:86:26;;;37970:21:33;38027:2;38007:18;;;38000:30;38066:34;38046:18;;;38039:62;38137:34;38117:18;;;38110:62;-1:-1:-1;;;38188:19:33;;;38181:32;38230:19;;11385:86:26;37786:469:33;11385:86:26;11498:19;11485:9;:32;;;;;;;;:::i;:::-;;:70;;;-1:-1:-1;11534:21:26;11521:9;:34;;;;;;;;:::i;:::-;;11485:70;11477:101;;;;-1:-1:-1;;;11477:101:26;;;;;;;:::i;:::-;11601:19;11588:9;:32;;;;;;;;:::i;:::-;;11584:575;;11638:3;11645:1;11638:8;11630:103;;;;-1:-1:-1;;;11630:103:26;;;;;;;:::i;:::-;11963:35;144:10:19;11963:3:26;:35;:::i;11584:575::-;12027:3;12034:1;12027:8;12019:104;;;;-1:-1:-1;;;12019:104:26;;;;;;;:::i;:::-;12138:14;;;-1:-1:-1;12131:21:26;;-1:-1:-1;;12131:21:26;23969:210;24032:7;24066:28;;;:18;:28;;;;;;-1:-1:-1;;;;;24066:28:26;;24100:53;;;;-1:-1:-1;;;24100:53:26;;38462:2:33;24100:53:26;;;38444:21:33;38501:2;38481:18;;;38474:30;-1:-1:-1;;;38520:18:33;;;38513:48;38578:18;;24100:53:26;38260:342:33;24183:214:26;24277:12;;:66;;-1:-1:-1;;;24277:66:26;;:12;:66;;;37347:25:33;37388:18;;;37381:34;;;-1:-1:-1;;;;;24277:12:26;;;;:24;;37320:18:33;;24277:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24262:130;;;;-1:-1:-1;;;24262:130:26;;38809:2:33;24262:130:26;;;38791:21:33;38848:2;38828:18;;;38821:30;38887:34;38867:18;;;38860:62;-1:-1:-1;;;38938:18:33;;;38931:31;38979:19;;24262:130:26;38607:397:33;24401:194:26;24487:12;;;:58;;-1:-1:-1;;;24487:58:26;;;;;37347:25:33;;;;37388:18;;;37381:34;;;-1:-1:-1;;;;;24487:12:26;;:24;;37320:18:33;;24487:58:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24472:118;;;;-1:-1:-1;;;24472:118:26;;39211:2:33;24472:118:26;;;39193:21:33;39250:2;39230:18;;;39223:30;39289:31;39269:18;;;39262:59;39338:18;;24472:118:26;39009:353:33;3302:300:26;3420:4;3432:28;3471:12;1037:1:19;3471:44:26;;;;;;;;:::i;:::-;;;;;;;3463:53;;3432:84;;3529:68;3551:20;3573:23;3529:21;:68::i;23181:784::-;23354:14;;23378:410;23402:20;:27;23398:1;:31;23378:410;;;23524:28;23657:1;23555:98;23588:15;;23604:6;23588:56;23620:20;23641:1;23620:23;;;;;;;;:::i;:::-;;;;;;;23611:6;:32;;;;:::i;:::-;23588:56;;;;;;;:::i;:::-;23571:74;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;23571:74:26;;;;;;;;;;23555:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:103;;23524:134;;23698:16;23715:1;23698:19;;;;;;;;:::i;:::-;;;;;;;23674:20;:43;23666:74;;;;-1:-1:-1;;;23666:74:26;;40187:2:33;23666:74:26;;;40169:21:33;40226:2;40206:18;;;40199:30;-1:-1:-1;;;40245:18:33;;;40238:48;40303:18;;23666:74:26;39985:342:33;23666:74:26;23758:20;23779:1;23758:23;;;;;;;;:::i;:::-;;;;;;;23748:33;;;;;:::i;:::-;;-1:-1:-1;;23431:3:26;;23378:410;;;-1:-1:-1;23892:32:26;;;23884:76;;;;-1:-1:-1;;;23884:76:26;;40534:2:33;23884:76:26;;;40516:21:33;40573:2;40553:18;;;40546:30;40612:33;40592:18;;;40585:61;40663:18;;23884:76:26;40332:355:33;14:172;90:5;135:3;126:6;121:3;117:16;113:26;110:46;;;152:1;149;142:12;110:46;-1:-1:-1;174:6:33;14:172;-1:-1:-1;14:172:33:o;191:503::-;303:6;311;364:2;352:9;343:7;339:23;335:32;332:52;;;380:1;377;370:12;332:52;425:23;;;-1:-1:-1;523:2:33;508:18;;495:32;-1:-1:-1;;;;;539:30:33;;536:50;;;582:1;579;572:12;536:50;605:83;680:7;671:6;660:9;656:22;605:83;:::i;:::-;595:93;;;191:503;;;;;:::o;891:118::-;977:5;970:13;963:21;956:5;953:32;943:60;;999:1;996;989:12;1014:241;1070:6;1123:2;1111:9;1102:7;1098:23;1094:32;1091:52;;;1139:1;1136;1129:12;1091:52;1178:9;1165:23;1197:28;1219:5;1197:28;:::i;1260:131::-;-1:-1:-1;;;;;1335:31:33;;1325:42;;1315:70;;1381:1;1378;1371:12;1396:247;1455:6;1508:2;1496:9;1487:7;1483:23;1479:32;1476:52;;;1524:1;1521;1514:12;1476:52;1563:9;1550:23;1582:31;1607:5;1582:31;:::i;1648:518::-;1757:6;1765;1818:2;1806:9;1797:7;1793:23;1789:32;1786:52;;;1834:1;1831;1824:12;1786:52;1874:9;1861:23;-1:-1:-1;;;;;1899:6:33;1896:30;1893:50;;;1939:1;1936;1929:12;1893:50;1962:83;2037:7;2028:6;2017:9;2013:22;1962:83;:::i;:::-;1952:93;;;2095:2;2084:9;2080:18;2067:32;2108:28;2130:5;2108:28;:::i;:::-;2155:5;2145:15;;;1648:518;;;;;:::o;2171:289::-;2213:3;2251:5;2245:12;2278:6;2273:3;2266:19;2334:6;2327:4;2320:5;2316:16;2309:4;2304:3;2300:14;2294:47;2386:1;2379:4;2370:6;2365:3;2361:16;2357:27;2350:38;2449:4;2442:2;2438:7;2433:2;2425:6;2421:15;2417:29;2412:3;2408:39;2404:50;2397:57;;;2171:289;;;;:::o;2465:1698::-;2658:2;2647:9;2640:21;2621:4;2696:6;2690:13;2739:6;2734:2;2723:9;2719:18;2712:34;2769:52;2816:3;2805:9;2801:19;2787:12;2769:52;:::i;:::-;2755:66;;2870:2;2862:6;2858:15;2852:22;2942:2;2938:7;2926:9;2918:6;2914:22;2910:36;2905:2;2894:9;2890:18;2883:64;2970:41;3004:6;2988:14;2970:41;:::i;:::-;2956:55;;;3060:2;3052:6;3048:15;3042:22;3132:2;3128:7;3116:9;3108:6;3104:22;3100:36;3095:2;3084:9;3080:18;3073:64;3160:41;3194:6;3178:14;3160:41;:::i;:::-;3146:55;;;3250:2;3242:6;3238:15;3232:22;3323:2;3319:7;3307:9;3299:6;3295:22;3291:36;3285:3;3274:9;3270:19;3263:65;3351:41;3385:6;3369:14;3351:41;:::i;:::-;3337:55;;;3441:3;3433:6;3429:16;3423:23;3515:2;3511:7;3499:9;3491:6;3487:22;3483:36;3477:3;3466:9;3462:19;3455:65;3543:41;3577:6;3561:14;3543:41;:::i;:::-;3529:55;;;3633:3;3625:6;3621:16;3615:23;3707:2;3703:7;3691:9;3683:6;3679:22;3675:36;3669:3;3658:9;3654:19;3647:65;3735:41;3769:6;3753:14;3735:41;:::i;:::-;3721:55;;;3825:3;3817:6;3813:16;3807:23;3899:2;3895:7;3883:9;3875:6;3871:22;3867:36;3861:3;3850:9;3846:19;3839:65;3927:41;3961:6;3945:14;3927:41;:::i;:::-;3913:55;;;4017:3;4009:6;4005:16;3999:23;4094:2;4090:7;4078:9;4070:6;4066:22;4062:36;4053:6;4042:9;4038:22;4031:68;4116:41;4150:6;4134:14;4116:41;:::i;:::-;4108:49;2465:1698;-1:-1:-1;;;;;2465:1698:33:o;4168:114::-;4252:4;4245:5;4241:16;4234:5;4231:27;4221:55;;4272:1;4269;4262:12;4287:520;4397:6;4405;4458:2;4446:9;4437:7;4433:23;4429:32;4426:52;;;4474:1;4471;4464:12;4426:52;4513:9;4500:23;4532:29;4555:5;4532:29;:::i;:::-;4580:5;-1:-1:-1;4636:2:33;4621:18;;4608:32;-1:-1:-1;;;;;4652:30:33;;4649:50;;;4695:1;4692;4685:12;4812:127;4873:10;4868:3;4864:20;4861:1;4854:31;4904:4;4901:1;4894:15;4928:4;4925:1;4918:15;4944:255;5016:2;5010:9;5058:6;5046:19;;-1:-1:-1;;;;;5080:34:33;;5116:22;;;5077:62;5074:88;;;5142:18;;:::i;:::-;5178:2;5171:22;4944:255;:::o;5204:275::-;5275:2;5269:9;5340:2;5321:13;;-1:-1:-1;;5317:27:33;5305:40;;-1:-1:-1;;;;;5360:34:33;;5396:22;;;5357:62;5354:88;;;5422:18;;:::i;:::-;5458:2;5451:22;5204:275;;-1:-1:-1;5204:275:33:o;5484:182::-;5543:4;-1:-1:-1;;;;;5568:6:33;5565:30;5562:56;;;5598:18;;:::i;:::-;-1:-1:-1;5643:1:33;5639:14;5655:4;5635:25;;5484:182::o;5671:187::-;5720:4;-1:-1:-1;;;;;5745:6:33;5742:30;5739:56;;;5775:18;;:::i;:::-;-1:-1:-1;5841:2:33;5820:15;-1:-1:-1;;5816:29:33;5847:4;5812:40;;5671:187::o;5863:1793::-;6010:6;6018;6071:2;6059:9;6050:7;6046:23;6042:32;6039:52;;;6087:1;6084;6077:12;6039:52;6127:9;6114:23;-1:-1:-1;;;;;6152:6:33;6149:30;6146:50;;;6192:1;6189;6182:12;6146:50;6215:22;;6268:4;6260:13;;6256:27;-1:-1:-1;6246:55:33;;6297:1;6294;6287:12;6246:55;6337:2;6324:16;6360:63;6376:46;6415:6;6376:46;:::i;:::-;6360:63;:::i;:::-;6445:3;6469:6;6464:3;6457:19;6501:4;6496:3;6492:14;6485:21;;6558:4;6548:6;6545:1;6541:14;6537:2;6533:23;6529:34;6515:48;;6586:7;6578:6;6575:19;6572:39;;;6607:1;6604;6597:12;6572:39;6639:4;6635:2;6631:13;6653:749;6669:6;6664:3;6661:15;6653:749;;;6757:3;6744:17;-1:-1:-1;;;;;6780:11:33;6777:35;6774:55;;;6825:1;6822;6815:12;6774:55;6852:20;;6907:2;6899:11;;6895:25;-1:-1:-1;6885:53:33;;6934:1;6931;6924:12;6885:53;6988:4;6984:2;6980:13;6967:27;7022:55;7038:38;7067:8;7038:38;:::i;7022:55::-;7090:25;;;7134:39;7142:17;;;7134:39;7131:52;-1:-1:-1;7128:72:33;;;7196:1;7193;7186:12;7128:72;7259:8;7254:2;7250;7246:11;7239:4;7230:7;7226:18;7213:55;7323:1;7316:4;7305:8;7296:7;7292:22;7288:33;7281:44;7350:7;7345:3;7338:20;;;;7387:4;7382:3;7378:14;7371:21;;6695:4;6690:3;6686:14;6679:21;;6653:749;;;-1:-1:-1;7421:5:33;-1:-1:-1;;;;7479:4:33;7464:20;;7451:34;-1:-1:-1;;;;;7497:32:33;;7494:52;;;7542:1;7539;7532:12;7843:623;7964:6;7972;7980;8033:2;8021:9;8012:7;8008:23;8004:32;8001:52;;;8049:1;8046;8039:12;8001:52;8094:23;;;-1:-1:-1;8214:2:33;8199:18;;8186:32;;-1:-1:-1;8295:2:33;8280:18;;8267:32;-1:-1:-1;;;;;8311:30:33;;8308:50;;;8354:1;8351;8344:12;8308:50;8377:83;8452:7;8443:6;8432:9;8428:22;8377:83;:::i;:::-;8367:93;;;7843:623;;;;;:::o;8471:389::-;8574:6;8627:2;8615:9;8606:7;8602:23;8598:32;8595:52;;;8643:1;8640;8633:12;8595:52;8683:9;8670:23;-1:-1:-1;;;;;8708:6:33;8705:30;8702:50;;;8748:1;8745;8738:12;8702:50;8771:83;8846:7;8837:6;8826:9;8822:22;8771:83;:::i;8865:492::-;9050:2;9039:9;9032:21;9125:1;9121;9116:3;9112:11;9108:19;9099:6;9093:13;9089:39;9084:2;9073:9;9069:18;9062:67;9183:2;9175:6;9171:15;9165:22;9160:2;9149:9;9145:18;9138:50;9013:4;9235:2;9227:6;9223:15;9217:22;9277:4;9270;9259:9;9255:20;9248:34;9299:52;9346:3;9335:9;9331:19;9317:12;9299:52;:::i;9362:657::-;9479:6;9487;9495;9548:2;9536:9;9527:7;9523:23;9519:32;9516:52;;;9564:1;9561;9554:12;9516:52;9603:9;9590:23;9622:29;9645:5;9622:29;:::i;:::-;9670:5;-1:-1:-1;9727:2:33;9712:18;;9699:32;9740:31;9699:32;9740:31;:::i;:::-;9790:7;-1:-1:-1;9848:2:33;9833:18;;9820:32;-1:-1:-1;;;;;9864:30:33;;9861:50;;;9907:1;9904;9897:12;10024:180;10083:6;10136:2;10124:9;10115:7;10111:23;10107:32;10104:52;;;10152:1;10149;10142:12;10104:52;-1:-1:-1;10175:23:33;;10024:180;-1:-1:-1;10024:180:33:o;10417:367::-;10480:8;10490:6;10544:3;10537:4;10529:6;10525:17;10521:27;10511:55;;10562:1;10559;10552:12;10511:55;-1:-1:-1;10585:20:33;;-1:-1:-1;;;;;10617:30:33;;10614:50;;;10660:1;10657;10650:12;10614:50;10697:4;10689:6;10685:17;10673:29;;10757:3;10750:4;10740:6;10737:1;10733:14;10725:6;10721:27;10717:38;10714:47;10711:67;;;10774:1;10771;10764:12;10711:67;10417:367;;;;;:::o;10789:348::-;10841:8;10851:6;10905:3;10898:4;10890:6;10886:17;10882:27;10872:55;;10923:1;10920;10913:12;10872:55;-1:-1:-1;10946:20:33;;-1:-1:-1;;;;;10978:30:33;;10975:50;;;11021:1;11018;11011:12;10975:50;11058:4;11050:6;11046:17;11034:29;;11110:3;11103:4;11094:6;11086;11082:19;11078:30;11075:39;11072:59;;;11127:1;11124;11117:12;11142:1047;11270:6;11278;11286;11294;11302;11310;11363:2;11351:9;11342:7;11338:23;11334:32;11331:52;;;11379:1;11376;11369:12;11331:52;11419:9;11406:23;-1:-1:-1;;;;;11444:6:33;11441:30;11438:50;;;11484:1;11481;11474:12;11438:50;11523:70;11585:7;11576:6;11565:9;11561:22;11523:70;:::i;:::-;11612:8;;-1:-1:-1;11497:96:33;-1:-1:-1;;11700:2:33;11685:18;;11672:32;-1:-1:-1;;;;;11716:32:33;;11713:52;;;11761:1;11758;11751:12;11713:52;11800:61;11853:7;11842:8;11831:9;11827:24;11800:61;:::i;:::-;11880:8;;-1:-1:-1;11774:87:33;-1:-1:-1;;11968:2:33;11953:18;;11940:32;-1:-1:-1;;;;;11984:32:33;;11981:52;;;12029:1;12026;12019:12;11981:52;12068:61;12121:7;12110:8;12099:9;12095:24;12068:61;:::i;:::-;11142:1047;;;;-1:-1:-1;11142:1047:33;;-1:-1:-1;11142:1047:33;;12148:8;;11142:1047;-1:-1:-1;;;11142:1047:33:o;12194:437::-;12280:6;12288;12341:2;12329:9;12320:7;12316:23;12312:32;12309:52;;;12357:1;12354;12347:12;12309:52;12397:9;12384:23;-1:-1:-1;;;;;12422:6:33;12419:30;12416:50;;;12462:1;12459;12452:12;12416:50;12501:70;12563:7;12554:6;12543:9;12539:22;12501:70;:::i;:::-;12590:8;;12475:96;;-1:-1:-1;12194:437:33;-1:-1:-1;;;;12194:437:33:o;12636:768::-;12758:6;12766;12774;12782;12835:2;12823:9;12814:7;12810:23;12806:32;12803:52;;;12851:1;12848;12841:12;12803:52;12891:9;12878:23;-1:-1:-1;;;;;12916:6:33;12913:30;12910:50;;;12956:1;12953;12946:12;12910:50;12995:70;13057:7;13048:6;13037:9;13033:22;12995:70;:::i;:::-;13084:8;;-1:-1:-1;12969:96:33;-1:-1:-1;;13172:2:33;13157:18;;13144:32;-1:-1:-1;;;;;13188:32:33;;13185:52;;;13233:1;13230;13223:12;13185:52;13272:72;13336:7;13325:8;13314:9;13310:24;13272:72;:::i;:::-;12636:768;;;;-1:-1:-1;13363:8:33;-1:-1:-1;;;;12636:768:33:o;13903:127::-;13964:10;13959:3;13955:20;13952:1;13945:31;13995:4;13992:1;13985:15;14019:4;14016:1;14009:15;14035:125;14100:9;;;14121:10;;;14118:36;;;14134:18;;:::i;14165:350::-;14367:2;14349:21;;;14406:2;14386:18;;;14379:30;14445:28;14440:2;14425:18;;14418:56;14506:2;14491:18;;14165:350::o;14925:521::-;15002:4;15008:6;15068:11;15055:25;15162:2;15158:7;15147:8;15131:14;15127:29;15123:43;15103:18;15099:68;15089:96;;15181:1;15178;15171:12;15089:96;15208:33;;15260:20;;;-1:-1:-1;;;;;;15292:30:33;;15289:50;;;15335:1;15332;15325:12;15289:50;15368:4;15356:17;;-1:-1:-1;15399:14:33;15395:27;;;15385:38;;15382:58;;;15436:1;15433;15426:12;15451:545;15544:4;15550:6;15610:11;15597:25;15704:2;15700:7;15689:8;15673:14;15669:29;15665:43;15645:18;15641:68;15631:96;;15723:1;15720;15713:12;15631:96;15750:33;;15802:20;;;-1:-1:-1;;;;;;15834:30:33;;15831:50;;;15877:1;15874;15867:12;15831:50;15910:4;15898:17;;-1:-1:-1;15961:1:33;15957:14;;;15941;15937:35;15927:46;;15924:66;;;15986:1;15983;15976:12;16001:266;16089:6;16084:3;16077:19;16141:6;16134:5;16127:4;16122:3;16118:14;16105:43;-1:-1:-1;16193:1:33;16168:16;;;16186:4;16164:27;;;16157:38;;;;16249:2;16228:15;;;-1:-1:-1;;16224:29:33;16215:39;;;16211:50;;16001:266::o;16272:311::-;16360:19;;;16342:3;-1:-1:-1;;;;;16391:31:33;;16388:51;;;16435:1;16432;16425:12;16388:51;16471:6;16468:1;16464:14;16523:8;16516:5;16509:4;16504:3;16500:14;16487:45;16552:18;;;;16572:4;16548:29;;16272:311;-1:-1:-1;;;16272:311:33:o;16588:483::-;16841:2;16830:9;16823:21;16804:4;16867:61;16924:2;16913:9;16909:18;16901:6;16893;16867:61;:::i;:::-;16976:9;16968:6;16964:22;16959:2;16948:9;16944:18;16937:50;17004:61;17058:6;17050;17042;17004:61;:::i;17076:514::-;17129:5;17182:3;17175:4;17167:6;17163:17;17159:27;17149:55;;17200:1;17197;17190:12;17149:55;17233:6;17227:13;17272:4;17264:6;17260:17;17301:1;17322:53;17338:36;17367:6;17338:36;:::i;17322:53::-;17311:64;;17400:6;17391:7;17384:23;17440:3;17431:6;17426:3;17422:16;17419:25;17416:45;;;17457:1;17454;17447:12;17416:45;17501:6;17496:3;17489:4;17480:7;17476:18;17470:38;17557:1;17528:20;;;17550:4;17524:31;17517:42;;;;-1:-1:-1;17532:7:33;17076:514;-1:-1:-1;;;17076:514:33:o;17595:553::-;17692:6;17700;17753:2;17741:9;17732:7;17728:23;17724:32;17721:52;;;17769:1;17766;17759:12;17721:52;17802:9;17796:16;-1:-1:-1;;;;;17827:6:33;17824:30;17821:50;;;17867:1;17864;17857:12;17821:50;17890:60;17942:7;17933:6;17922:9;17918:22;17890:60;:::i;:::-;17880:70;;;17996:2;17985:9;17981:18;17975:25;-1:-1:-1;;;;;18015:8:33;18012:32;18009:52;;;18057:1;18054;18047:12;18009:52;18080:62;18134:7;18123:8;18112:9;18108:24;18080:62;:::i;18153:307::-;18330:2;18319:9;18312:21;18293:4;18350:45;18391:2;18380:9;18376:18;18368:6;18350:45;:::i;:::-;18342:53;;18445:6;18438:14;18431:22;18426:2;18415:9;18411:18;18404:50;18153:307;;;;;:::o;18465:1972::-;18567:6;18620:2;18608:9;18599:7;18595:23;18591:32;18588:52;;;18636:1;18633;18626:12;18588:52;18669:9;18663:16;-1:-1:-1;;;;;18694:6:33;18691:30;18688:50;;;18734:1;18731;18724:12;18688:50;18757:22;;18813:6;18795:16;;;18791:29;18788:49;;;18833:1;18830;18823:12;18788:49;18859:22;;:::i;:::-;18912:2;18906:9;-1:-1:-1;;;;;18930:8:33;18927:32;18924:52;;;18972:1;18969;18962:12;18924:52;18999:55;19046:7;19035:8;19031:2;19027:17;18999:55;:::i;:::-;18992:5;18985:70;;19094:2;19090;19086:11;19080:18;-1:-1:-1;;;;;19113:8:33;19110:32;19107:52;;;19155:1;19152;19145:12;19107:52;19191:55;19238:7;19227:8;19223:2;19219:17;19191:55;:::i;:::-;19186:2;19179:5;19175:14;19168:79;;19286:2;19282;19278:11;19272:18;-1:-1:-1;;;;;19305:8:33;19302:32;19299:52;;;19347:1;19344;19337:12;19299:52;19383:55;19430:7;19419:8;19415:2;19411:17;19383:55;:::i;:::-;19378:2;19371:5;19367:14;19360:79;;19478:2;19474;19470:11;19464:18;-1:-1:-1;;;;;19497:8:33;19494:32;19491:52;;;19539:1;19536;19529:12;19491:52;19575:55;19622:7;19611:8;19607:2;19603:17;19575:55;:::i;:::-;19570:2;19563:5;19559:14;19552:79;;19670:3;19666:2;19662:12;19656:19;-1:-1:-1;;;;;19690:8:33;19687:32;19684:52;;;19732:1;19729;19722:12;19684:52;19769:55;19816:7;19805:8;19801:2;19797:17;19769:55;:::i;:::-;19763:3;19756:5;19752:15;19745:80;;19864:3;19860:2;19856:12;19850:19;-1:-1:-1;;;;;19884:8:33;19881:32;19878:52;;;19926:1;19923;19916:12;19878:52;19963:55;20010:7;19999:8;19995:2;19991:17;19963:55;:::i;:::-;19957:3;19950:5;19946:15;19939:80;;20058:3;20054:2;20050:12;20044:19;-1:-1:-1;;;;;20078:8:33;20075:32;20072:52;;;20120:1;20117;20110:12;20072:52;20157:55;20204:7;20193:8;20189:2;20185:17;20157:55;:::i;:::-;20151:3;20144:5;20140:15;20133:80;;20252:3;20248:2;20244:12;20238:19;-1:-1:-1;;;;;20272:8:33;20269:32;20266:52;;;20314:1;20311;20304:12;20266:52;20351:55;20398:7;20387:8;20383:2;20379:17;20351:55;:::i;:::-;20345:3;20334:15;;20327:80;-1:-1:-1;20338:5:33;18465:1972;-1:-1:-1;;;;18465:1972:33:o;20442:148::-;20530:4;20509:12;;;20523;;;20505:31;;20548:13;;20545:39;;;20564:18;;:::i;20595:490::-;20679:6;20687;20695;20748:2;20736:9;20727:7;20723:23;20719:32;20716:52;;;20764:1;20761;20754:12;20716:52;20809:16;;20894:2;20879:18;;20873:25;20809:16;;-1:-1:-1;20907:31:33;20873:25;20907:31;:::i;:::-;21009:2;20994:18;;20988:25;20957:7;;-1:-1:-1;21022:31:33;20988:25;21022:31;:::i;:::-;21072:7;21062:17;;;20595:490;;;;;:::o;21090:479::-;21292:2;21274:21;;;21331:2;21311:18;;;21304:30;21370:34;21365:2;21350:18;;21343:62;21441:34;21436:2;21421:18;;21414:62;-1:-1:-1;;;21507:3:33;21492:19;;21485:42;21559:3;21544:19;;21090:479::o;22007:335::-;22086:6;22139:2;22127:9;22118:7;22114:23;22110:32;22107:52;;;22155:1;22152;22145:12;22107:52;22188:9;22182:16;-1:-1:-1;;;;;22213:6:33;22210:30;22207:50;;;22253:1;22250;22243:12;22207:50;22276:60;22328:7;22319:6;22308:9;22304:22;22276:60;:::i;22347:226::-;22502:2;22491:9;22484:21;22465:4;22522:45;22563:2;22552:9;22548:18;22540:6;22522:45;:::i;22578:577::-;22676:6;22684;22692;22745:2;22733:9;22724:7;22720:23;22716:32;22713:52;;;22761:1;22758;22751:12;22713:52;22793:9;22787:16;22812:31;22837:5;22812:31;:::i;:::-;22933:2;22918:18;;22912:25;23007:2;22992:18;;22986:25;22862:5;;-1:-1:-1;22912:25:33;-1:-1:-1;;;;;;23023:30:33;;23020:50;;;23066:1;23063;23056:12;23020:50;23089:60;23141:7;23132:6;23121:9;23117:22;23089:60;:::i;24544:184::-;24614:6;24667:2;24655:9;24646:7;24642:23;24638:32;24635:52;;;24683:1;24680;24673:12;24635:52;-1:-1:-1;24706:16:33;;24544:184;-1:-1:-1;24544:184:33:o;25090:273::-;25275:6;25267;25262:3;25249:33;25231:3;25301:16;;25326:13;;;25301:16;25090:273;-1:-1:-1;25090:273:33:o;25368:301::-;25497:3;25535:6;25529:13;25581:6;25574:4;25566:6;25562:17;25557:3;25551:37;25643:1;25607:16;;25632:13;;;-1:-1:-1;25607:16:33;25368:301;-1:-1:-1;25368:301:33:o;25674:127::-;25735:10;25730:3;25726:20;25723:1;25716:31;25766:4;25763:1;25756:15;25790:4;25787:1;25780:15;25806:128;25873:9;;;25894:11;;;25891:37;;;25908:18;;:::i;26731:151::-;26821:4;26814:12;;;26800;;;26796:31;;26839:14;;26836:40;;;26856:18;;:::i;29083:355::-;29204:9;29215;29257:8;29245:10;29242:24;29239:44;;;29279:1;29276;29269:12;29239:44;29308:6;29298:8;29295:20;29292:40;;;29328:1;29325;29318:12;29292:40;-1:-1:-1;;29370:1:33;29366:18;;;29354:31;;29407:25;;;;;-1:-1:-1;29083:355:33:o;30738:245::-;30805:6;30858:2;30846:9;30837:7;30833:23;30829:32;30826:52;;;30874:1;30871;30864:12;30826:52;30906:9;30900:16;30925:28;30947:5;30925:28;:::i;30988:127::-;31049:10;31044:3;31040:20;31037:1;31030:31;31080:4;31077:1;31070:15;31104:4;31101:1;31094:15;31120:721;31414:2;31403:9;31396:21;31377:4;31440:61;31497:2;31486:9;31482:18;31474:6;31466;31440:61;:::i;:::-;31549:9;31541:6;31537:22;31532:2;31521:9;31517:18;31510:50;31577:61;31631:6;31623;31615;31577:61;:::i;:::-;31569:69;;;31668:2;31660:6;31657:14;31647:145;;31714:10;31709:3;31705:20;31702:1;31695:31;31749:4;31746:1;31739:15;31777:4;31774:1;31767:15;31647:145;31828:6;31823:2;31812:9;31808:18;31801:34;31120:721;;;;;;;;:::o;31846:456::-;31934:6;31942;31950;32003:2;31991:9;31982:7;31978:23;31974:32;31971:52;;;32019:1;32016;32009:12;31971:52;-1:-1:-1;;32064:16:33;;32170:2;32155:18;;32149:25;32266:2;32251:18;;;32245:25;32064:16;;32149:25;;-1:-1:-1;32245:25:33;31846:456;-1:-1:-1;31846:456:33:o;32307:342::-;32509:2;32491:21;;;32548:2;32528:18;;;32521:30;-1:-1:-1;;;32582:2:33;32567:18;;32560:48;32640:2;32625:18;;32307:342::o;34520:486::-;34722:2;34704:21;;;34761:2;34741:18;;;34734:30;34800:34;34795:2;34780:18;;34773:62;34871:34;34866:2;34851:18;;34844:62;-1:-1:-1;;;34937:3:33;34922:19;;34915:49;34996:3;34981:19;;34520:486::o;35503:487::-;35705:2;35687:21;;;35744:2;35724:18;;;35717:30;35783:34;35778:2;35763:18;;35756:62;35854:34;35849:2;35834:18;;35827:62;-1:-1:-1;;;35920:3:33;35905:19;;35898:50;35980:3;35965:19;;35503:487::o;35995:1173::-;36109:6;36117;36170:2;36158:9;36149:7;36145:23;36141:32;36138:52;;;36186:1;36183;36176:12;36138:52;36219:9;36213:16;-1:-1:-1;;;;;36244:6:33;36241:30;36238:50;;;36284:1;36281;36274:12;36238:50;36307:22;;36360:4;36352:13;;36348:27;-1:-1:-1;36338:55:33;;36389:1;36386;36379:12;36338:55;36422:2;36416:9;36445:63;36461:46;36500:6;36461:46;:::i;36445:63::-;36530:3;36554:6;36549:3;36542:19;36586:4;36581:3;36577:14;36570:21;;36643:4;36633:6;36630:1;36626:14;36622:2;36618:23;36614:34;36600:48;;36671:7;36663:6;36660:19;36657:39;;;36692:1;36689;36682:12;36657:39;36724:4;36720:2;36716:13;36738:308;36754:6;36749:3;36746:15;36738:308;;;36835:3;36829:10;-1:-1:-1;;;;;36858:11:33;36855:35;36852:55;;;36903:1;36900;36893:12;36852:55;36932:69;36993:7;36986:4;36972:11;36968:2;36964:20;36960:31;36932:69;:::i;:::-;36920:82;;-1:-1:-1;37031:4:33;37022:14;;;;36771;36738:308;;;-1:-1:-1;37132:4:33;37117:20;;;;37111:27;37065:5;;37111:27;;-1:-1:-1;;;;;;35995:1173:33:o;39367:331::-;39472:9;39483;39525:8;39513:10;39510:24;39507:44;;;39547:1;39544;39537:12;39507:44;39576:6;39566:8;39563:20;39560:40;;;39596:1;39593;39586:12;39560:40;-1:-1:-1;;39622:23:33;;;39667:25;;;;;-1:-1:-1;39367:331:33:o",
|
|
956
|
-
linkReferences: {
|
|
957
|
-
"src/InputsExtractor.sol": {
|
|
958
|
-
InputsExtractor: [
|
|
959
|
-
{ start: 1839, length: 20 },
|
|
960
|
-
{ start: 2003, length: 20 },
|
|
961
|
-
{ start: 2196, length: 20 },
|
|
962
|
-
{ start: 2557, length: 20 },
|
|
963
|
-
{ start: 2721, length: 20 },
|
|
964
|
-
{ start: 2859, length: 20 },
|
|
965
|
-
{ start: 3481, length: 20 },
|
|
966
|
-
{ start: 4861, length: 20 },
|
|
967
|
-
{ start: 6622, length: 20 },
|
|
968
|
-
{ start: 7225, length: 20 },
|
|
969
|
-
{ start: 8054, length: 20 },
|
|
970
|
-
{ start: 8596, length: 20 }
|
|
971
|
-
]
|
|
972
|
-
}
|
|
973
|
-
}
|
|
974
|
-
},
|
|
975
|
-
methodIdentifiers: {
|
|
976
|
-
"CERTIFICATE_REGISTRY_ID()": "41a0e2c2",
|
|
977
|
-
"CIRCUIT_REGISTRY_ID()": "6c40d5d6",
|
|
978
|
-
"SANCTIONS_REGISTRY_ID()": "652ba33d",
|
|
979
|
-
"addVerifiers(bytes32[],address[])": "a6df2c01",
|
|
980
|
-
"admin()": "f851a440",
|
|
981
|
-
"enforceSanctionsRoot((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "653cfd81",
|
|
982
|
-
"getBoundData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "59545f45",
|
|
983
|
-
"getDisclosedData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool),bool)": "1e26a9dc",
|
|
984
|
-
"isAgeAbove(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "37889655",
|
|
985
|
-
"isAgeAboveOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "54dbe4d1",
|
|
986
|
-
"isAgeBelow(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "bf73c26c",
|
|
987
|
-
"isAgeBelowOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "aa1346ea",
|
|
988
|
-
"isAgeBetween(uint8,uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "62067c82",
|
|
989
|
-
"isAgeEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "c0940ebd",
|
|
990
|
-
"isBirthdateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "04951b86",
|
|
991
|
-
"isBirthdateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "704876d6",
|
|
992
|
-
"isBirthdateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "921076c7",
|
|
993
|
-
"isBirthdateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "deb7c059",
|
|
994
|
-
"isBirthdateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "c4560786",
|
|
995
|
-
"isBirthdateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "0b90581b",
|
|
996
|
-
"isExpiryDateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "d3f6ffff",
|
|
997
|
-
"isExpiryDateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "4c127428",
|
|
998
|
-
"isExpiryDateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "a88f1cef",
|
|
999
|
-
"isExpiryDateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "e718bc32",
|
|
1000
|
-
"isExpiryDateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "46bd0a16",
|
|
1001
|
-
"isExpiryDateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "cfd9464a",
|
|
1002
|
-
"isIssuingCountryIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "ec46f774",
|
|
1003
|
-
"isIssuingCountryOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "3a86bd3d",
|
|
1004
|
-
"isNationalityIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "f87e19b1",
|
|
1005
|
-
"isNationalityOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "e420e354",
|
|
1006
|
-
"paused()": "5c975abb",
|
|
1007
|
-
"removeVerifiers(bytes32[])": "8d6937b8",
|
|
1008
|
-
"rootRegistry()": "b96b161c",
|
|
1009
|
-
"setPaused(bool)": "16c38b3c",
|
|
1010
|
-
"transferAdmin(address)": "75829def",
|
|
1011
|
-
"updateRootRegistry(address)": "18677f2a",
|
|
1012
|
-
"verifyProof((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "d7bf616a",
|
|
1013
|
-
"verifyScopes(bytes32[],string,string)": "847755e3",
|
|
1014
|
-
"vkeyHashToVerifier(bytes32)": "8163f231"
|
|
1015
|
-
},
|
|
1016
|
-
rawMetadata: '{"compiler":{"version":"0.8.29+commit.ab55807c"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_rootRegistry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"certificateRegistryRoot","type":"bytes32"}],"name":"CertificateRegistryRootAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"certificateRegistryRoot","type":"bytes32"}],"name":"CertificateRegistryRootRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PausedStatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"_sanctionsTreesRoot","type":"bytes32"}],"name":"SanctionsTreesRootUpdates","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"verifier","type":"address"}],"name":"VerifierAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"vkeyHash","type":"bytes32"}],"name":"VerifierRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ZKPassportVerifierDeployed","type":"event"},{"inputs":[],"name":"CERTIFICATE_REGISTRY_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CIRCUIT_REGISTRY_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SANCTIONS_REGISTRY_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"vkeyHashes","type":"bytes32[]"},{"internalType":"address[]","name":"verifiers","type":"address[]"}],"name":"addVerifiers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"enforceSanctionsRoot","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"getBoundData","outputs":[{"components":[{"internalType":"address","name":"senderAddress","type":"address"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"string","name":"customData","type":"string"}],"internalType":"struct BoundData","name":"boundData","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"},{"internalType":"bool","name":"isIDCard","type":"bool"}],"name":"getDisclosedData","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"issuingCountry","type":"string"},{"internalType":"string","name":"nationality","type":"string"},{"internalType":"string","name":"gender","type":"string"},{"internalType":"string","name":"birthDate","type":"string"},{"internalType":"string","name":"expiryDate","type":"string"},{"internalType":"string","name":"documentNumber","type":"string"},{"internalType":"string","name":"documentType","type":"string"}],"internalType":"struct DisclosedData","name":"disclosedData","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint8","name":"minAge","type":"uint8"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isAgeAbove","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"minAge","type":"uint8"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isAgeAboveOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"maxAge","type":"uint8"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isAgeBelow","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"maxAge","type":"uint8"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isAgeBelowOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"minAge","type":"uint8"},{"internalType":"uint8","name":"maxAge","type":"uint8"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isAgeBetween","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"age","type":"uint8"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isAgeEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isBirthdateAfter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isBirthdateAfterOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isBirthdateBefore","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isBirthdateBeforeOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isBirthdateBetween","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"date","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isBirthdateEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isExpiryDateAfter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isExpiryDateAfterOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isExpiryDateBefore","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isExpiryDateBeforeOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isExpiryDateBetween","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"date","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isExpiryDateEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string[]","name":"countryList","type":"string[]"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isIssuingCountryIn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string[]","name":"countryList","type":"string[]"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isIssuingCountryOut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string[]","name":"countryList","type":"string[]"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isNationalityIn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string[]","name":"countryList","type":"string[]"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isNationalityOut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"vkeyHashes","type":"bytes32[]"}],"name":"removeVerifiers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rootRegistry","outputs":[{"internalType":"contract IRootRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"transferAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_rootRegistry","type":"address"}],"name":"updateRootRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"verifyProof","outputs":[{"internalType":"bool","name":"isValid","type":"bool"},{"internalType":"bytes32","name":"uniqueIdentifier","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"}],"name":"verifyScopes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"vkeyHashToVerifier","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Constructor"},"enforceSanctionsRoot((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"params":"The proof verification parameters"}},"getBoundData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"params":"The proof verification parameters"},"returns":{"boundData":"The data bound to the proof"}},"getDisclosedData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool),bool)":{"params":{"isIDCard":"Whether the proof is an ID card","params":"The proof verification parameters"},"returns":{"disclosedData":"The data disclosed by the proof"}},"isAgeAbove(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"minAge":"The age must be above this age","params":"The proof verification parameters"},"returns":{"_0":"True if the age is above the given age, false otherwise"}},"isAgeAboveOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"minAge":"The age must be above or equal to this age","params":"The proof verification parameters"},"returns":{"_0":"True if the age is above or equal to the given age, false otherwise"}},"isAgeBelow(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxAge":"The age must be below this age","params":"The proof verification parameters"},"returns":{"_0":"True if the age is below the given age, false otherwise"}},"isAgeBelowOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxAge":"The age must be below or equal to this age","params":"The proof verification parameters"},"returns":{"_0":"True if the age is below or equal to the given age, false otherwise"}},"isAgeBetween(uint8,uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxAge":"The age must be less than or equal to this age","minAge":"The age must be greater than or equal to this age","params":"The proof verification parameters"},"returns":{"_0":"True if the age is in the given range, false otherwise"}},"isAgeEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"age":"The age must be equal to this age","params":"The proof verification parameters"},"returns":{"_0":"True if the age is equal to the given age, false otherwise"}},"isBirthdateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"minDate":"The birthdate must be after this date","params":"The proof verification parameters"},"returns":{"_0":"True if the birthdate is after the given date, false otherwise"}},"isBirthdateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"minDate":"The birthdate must be after or equal to this date","params":"The proof verification parameters"},"returns":{"_0":"True if the birthdate is after or equal to the given date, false otherwise"}},"isBirthdateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxDate":"The birthdate must be before this date","params":"The proof verification parameters"},"returns":{"_0":"True if the birthdate is before the given date, false otherwise"}},"isBirthdateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxDate":"The birthdate must be before or equal to this date","params":"The proof verification parameters"},"returns":{"_0":"True if the birthdate is before or equal to the given date, false otherwise"}},"isBirthdateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxDate":"The birthdate must be before or equal to this date","minDate":"The birthdate must be after or equal to this date","params":"The proof verification parameters"},"returns":{"_0":"True if the birthdate is between the given dates, false otherwise"}},"isBirthdateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"date":"The birthdate must be equal to this date","params":"The proof verification parameters"},"returns":{"_0":"True if the birthdate is equal to the given date, false otherwise"}},"isExpiryDateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"minDate":"The expiry date must be after this date","params":"The proof verification parameters"},"returns":{"_0":"True if the expiry date is after the given date, false otherwise"}},"isExpiryDateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"minDate":"The expiry date must be after or equal to this date","params":"The proof verification parameters"},"returns":{"_0":"True if the expiry date is after or equal to the given date, false otherwise"}},"isExpiryDateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxDate":"The expiry date must be before this date","params":"The proof verification parameters"},"returns":{"_0":"True if the expiry date is before the given date, false otherwise"}},"isExpiryDateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxDate":"The expiry date must be before or equal to this date","params":"The proof verification parameters"},"returns":{"_0":"True if the expiry date is before or equal to the given date, false otherwise"}},"isExpiryDateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxDate":"The expiry date must be before or equal to this date","minDate":"The expiry date must be after or equal to this date","params":"The proof verification parameters"},"returns":{"_0":"True if the expiry date is between the given dates, false otherwise"}},"isExpiryDateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"date":"The expiry date must be equal to this date","params":"The proof verification parameters"},"returns":{"_0":"True if the expiry date is equal to the given date, false otherwise"}},"isIssuingCountryIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"countryList":"The list of countries (needs to match exactly the list of countries in the proof)","params":"The proof verification parameters"},"returns":{"_0":"True if the issuing country is in the list of countries, false otherwise"}},"isIssuingCountryOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"countryList":"The list of countries (needs to match exactly the list of countries in the proof) Note: The list of countries must be sorted in alphabetical order","params":"The proof verification parameters"},"returns":{"_0":"True if the issuing country is not in the list of countries, false otherwise"}},"isNationalityIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"countryList":"The list of countries (needs to match exactly the list of countries in the proof)","params":"The proof verification parameters"},"returns":{"_0":"True if the nationality is in the list of countries, false otherwise"}},"isNationalityOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"countryList":"The list of countries (needs to match exactly the list of countries in the proof) Note: The list of countries must be sorted in alphabetical order","params":"The proof verification parameters"},"returns":{"_0":"True if the nationality is not in the list of countries, false otherwise"}},"verifyProof((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"params":"The proof verification parameters"},"returns":{"isValid":"True if the proof is valid, false otherwise","uniqueIdentifier":"The unique identifier associated to the identity document that generated the proof"}},"verifyScopes(bytes32[],string,string)":{"params":{"domain":"The domain to check against","publicInputs":"The public inputs of the proof","scope":"The scope to check against"},"returns":{"_0":"True if the proof was generated for the given domain and scope, false otherwise"}}},"version":1},"userdoc":{"kind":"user","methods":{"enforceSanctionsRoot((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Enforces that the proof checks against the expected sanction list(s)"},"getBoundData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Gets the data bound to the proof"},"getDisclosedData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool),bool)":{"notice":"Gets the data disclosed by the proof"},"isAgeAbove(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the age is above the given age"},"isAgeAboveOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the age is above or equal to the given age"},"isAgeBelow(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the age is below the given age"},"isAgeBelowOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the age is below or equal to the given age"},"isAgeBetween(uint8,uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the age is in the given range"},"isAgeEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the age is equal to the given age"},"isBirthdateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the birthdate is after the given date"},"isBirthdateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the birthdate is after or equal to the given date"},"isBirthdateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the birthdate is before the given date"},"isBirthdateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the birthdate is before or equal to the given date"},"isBirthdateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the birthdate is between the given dates"},"isBirthdateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the birthdate is equal to the given date"},"isExpiryDateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the expiry date is after the given date"},"isExpiryDateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the expiry date is after or equal to the given date"},"isExpiryDateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the expiry date is before the given date"},"isExpiryDateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the expiry date is before or equal to the given date"},"isExpiryDateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the expiry date is between the given dates"},"isExpiryDateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the expiry date is equal to the given date"},"isIssuingCountryIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the issuing country is in the list of countries"},"isIssuingCountryOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the issuing country is not in the list of countries"},"isNationalityIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the nationality is in the list of countries"},"isNationalityOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the nationality is not in the list of countries"},"verifyProof((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Verifies a proof from ZKPassport"},"verifyScopes(bytes32[],string,string)":{"notice":"Verifies that the proof was generated for the given domain and scope"}},"version":1}},"settings":{"compilationTarget":{"src/ZKPassportVerifier.sol":"ZKPassportVerifier"},"evmVersion":"cancun","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":200},"remappings":[":forge-std/=lib/forge-std/src/"]},"sources":{"src/Constants.sol":{"keccak256":"0xb1105acee68946ef452b55289a556a42289c3e1e849482d26cb8af4e2447ebdd","license":"Apache-2.0","urls":["bzz-raw://4639a621a472a215c320dd3f2d22e08d57028550df503bbffbd7330b57ba9ed8","dweb:/ipfs/QmfMoxNwnJMBNzHxUByv1eqtaktX1EGFqU2VJ4L1pYidJq"]},"src/DateUtils.sol":{"keccak256":"0xc04aef2f5732f8c3b28077a0af19e2fbbdec2f9178f3800563bf64ccdecefc77","license":"Apache-2.0","urls":["bzz-raw://bcc2610f3bdd3411fc040d39efe9e68f826b48986b2df7987f3adb6a1467c833","dweb:/ipfs/Qmc7uyW8Y7ekaKEdjd3kU9e1eDcCiAqsujGc5ZavuzGx4w"]},"src/IRootRegistry.sol":{"keccak256":"0xa9955e80821ca9ccbdf7d05a8ce9a3e237b4771e1f6e09190ed1c803a5e1e516","license":"MIT","urls":["bzz-raw://fd9fc9fbd7057a6bcc16a682e52be9ebd012954898626a11f0a0e8788644789d","dweb:/ipfs/QmZYpMRHdv4gMCNXCQtGQu8XqRVtNR9Kgkzh7u1YMpvrEB"]},"src/InputsExtractor.sol":{"keccak256":"0x55af333a1ed7cd5a1299f1b0778db0fc2a15f68903e9ae6a6034d24f13da03e7","license":"Apache-2.0","urls":["bzz-raw://10ccdb51863cfd11f222ecb3111f0f291aae3a19fdbef6d90233d08f02eab1d5","dweb:/ipfs/QmebPTX4Dbc5LkhG57YuTjEZgEvCk51ut3ZERZoqeGemsB"]},"src/StringUtils.sol":{"keccak256":"0x0174454c28003f489bcdf636c93ccb512d80f3dbdca7485e11b51cf2c8ebfff1","license":"Apache-2.0","urls":["bzz-raw://92ea71064b8199c9a05cbe279cf42adaaa7b29604d960a84754d3d997b1c2342","dweb:/ipfs/QmcsrqRJ2YZABCZHzS782RqKmWEegSK1LCmTTjJ94gdh5q"]},"src/Types.sol":{"keccak256":"0x6cd3120512911d8319b011016e19204c3f2d72b75efc2663cbde807571a5a7f0","license":"Apache-2.0","urls":["bzz-raw://ec0c51990097f62145282a34f553465843007d0c86e742652c5ea2c7878e78be","dweb:/ipfs/QmVUFfqiYGZuwbj5AA4smnSn5KpDyeKpw9iFmRzuK18dVo"]},"src/ZKPassportVerifier.sol":{"keccak256":"0x692154ad13d61bc9a232b33396888dcbe6f0ff46bbcd261e00ffa49c4afc8728","license":"Apache-2.0","urls":["bzz-raw://d1477d1851973999abda47bbb20d4f3120bc50b0ad9a3c5a041b768a2c9d47c3","dweb:/ipfs/QmZqefNqexmbFbQ7HUJUDwAAMjcDUobNUyhj1tDYj2HU9S"]},"src/ultra-honk-verifiers/OuterCount4.sol":{"keccak256":"0x9f343e672cd22bb67bda44f4ed5ce7318769dfd65270f52eadf70c12a2377aab","license":"Apache-2.0","urls":["bzz-raw://69a1177da0c5a7148676bef2a5e5c58840a66b2e142d2a0d331dca01dd0109ad","dweb:/ipfs/QmQ6iVmrCNEG6XE3ejP4dgBiw3XhMaGm1hW61z4rj7zsiF"]}},"version":1}',
|
|
1017
|
-
metadata: {
|
|
1018
|
-
compiler: { version: "0.8.29+commit.ab55807c" },
|
|
1019
|
-
language: "Solidity",
|
|
1020
|
-
output: {
|
|
1021
|
-
abi: [
|
|
1022
|
-
{
|
|
1023
|
-
inputs: [{ internalType: "address", name: "_rootRegistry", type: "address" }],
|
|
1024
|
-
stateMutability: "nonpayable",
|
|
1025
|
-
type: "constructor"
|
|
1026
|
-
},
|
|
1027
|
-
{
|
|
1028
|
-
inputs: [
|
|
1029
|
-
{ internalType: "address", name: "oldAdmin", type: "address", indexed: true },
|
|
1030
|
-
{ internalType: "address", name: "newAdmin", type: "address", indexed: true }
|
|
1031
|
-
],
|
|
1032
|
-
type: "event",
|
|
1033
|
-
name: "AdminUpdated",
|
|
1034
|
-
anonymous: false
|
|
1035
|
-
},
|
|
1036
|
-
{
|
|
1037
|
-
inputs: [
|
|
1038
|
-
{
|
|
1039
|
-
internalType: "bytes32",
|
|
1040
|
-
name: "certificateRegistryRoot",
|
|
1041
|
-
type: "bytes32",
|
|
1042
|
-
indexed: true
|
|
1043
|
-
}
|
|
1044
|
-
],
|
|
1045
|
-
type: "event",
|
|
1046
|
-
name: "CertificateRegistryRootAdded",
|
|
1047
|
-
anonymous: false
|
|
1048
|
-
},
|
|
1049
|
-
{
|
|
1050
|
-
inputs: [
|
|
1051
|
-
{
|
|
1052
|
-
internalType: "bytes32",
|
|
1053
|
-
name: "certificateRegistryRoot",
|
|
1054
|
-
type: "bytes32",
|
|
1055
|
-
indexed: true
|
|
1056
|
-
}
|
|
1057
|
-
],
|
|
1058
|
-
type: "event",
|
|
1059
|
-
name: "CertificateRegistryRootRemoved",
|
|
1060
|
-
anonymous: false
|
|
1061
|
-
},
|
|
1062
|
-
{
|
|
1063
|
-
inputs: [
|
|
1064
|
-
{ internalType: "bool", name: "paused", type: "bool", indexed: false }
|
|
1065
|
-
],
|
|
1066
|
-
type: "event",
|
|
1067
|
-
name: "PausedStatusChanged",
|
|
1068
|
-
anonymous: false
|
|
1069
|
-
},
|
|
1070
|
-
{
|
|
1071
|
-
inputs: [
|
|
1072
|
-
{
|
|
1073
|
-
internalType: "bytes32",
|
|
1074
|
-
name: "_sanctionsTreesRoot",
|
|
1075
|
-
type: "bytes32",
|
|
1076
|
-
indexed: true
|
|
1077
|
-
}
|
|
1078
|
-
],
|
|
1079
|
-
type: "event",
|
|
1080
|
-
name: "SanctionsTreesRootUpdates",
|
|
1081
|
-
anonymous: false
|
|
1082
|
-
},
|
|
1083
|
-
{
|
|
1084
|
-
inputs: [
|
|
1085
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32", indexed: true },
|
|
1086
|
-
{ internalType: "address", name: "verifier", type: "address", indexed: true }
|
|
1087
|
-
],
|
|
1088
|
-
type: "event",
|
|
1089
|
-
name: "VerifierAdded",
|
|
1090
|
-
anonymous: false
|
|
1091
|
-
},
|
|
1092
|
-
{
|
|
1093
|
-
inputs: [
|
|
1094
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32", indexed: true }
|
|
1095
|
-
],
|
|
1096
|
-
type: "event",
|
|
1097
|
-
name: "VerifierRemoved",
|
|
1098
|
-
anonymous: false
|
|
1099
|
-
},
|
|
1100
|
-
{
|
|
1101
|
-
inputs: [
|
|
1102
|
-
{ internalType: "address", name: "admin", type: "address", indexed: true },
|
|
1103
|
-
{ internalType: "uint256", name: "timestamp", type: "uint256", indexed: false }
|
|
1104
|
-
],
|
|
1105
|
-
type: "event",
|
|
1106
|
-
name: "ZKPassportVerifierDeployed",
|
|
1107
|
-
anonymous: false
|
|
1108
|
-
},
|
|
1109
|
-
{
|
|
1110
|
-
inputs: [],
|
|
1111
|
-
stateMutability: "view",
|
|
1112
|
-
type: "function",
|
|
1113
|
-
name: "CERTIFICATE_REGISTRY_ID",
|
|
1114
|
-
outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }]
|
|
1115
|
-
},
|
|
1116
|
-
{
|
|
1117
|
-
inputs: [],
|
|
1118
|
-
stateMutability: "view",
|
|
1119
|
-
type: "function",
|
|
1120
|
-
name: "CIRCUIT_REGISTRY_ID",
|
|
1121
|
-
outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }]
|
|
1122
|
-
},
|
|
1123
|
-
{
|
|
1124
|
-
inputs: [],
|
|
1125
|
-
stateMutability: "view",
|
|
1126
|
-
type: "function",
|
|
1127
|
-
name: "SANCTIONS_REGISTRY_ID",
|
|
1128
|
-
outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }]
|
|
1129
|
-
},
|
|
1130
|
-
{
|
|
1131
|
-
inputs: [
|
|
1132
|
-
{ internalType: "bytes32[]", name: "vkeyHashes", type: "bytes32[]" },
|
|
1133
|
-
{ internalType: "address[]", name: "verifiers", type: "address[]" }
|
|
1134
|
-
],
|
|
1135
|
-
stateMutability: "nonpayable",
|
|
1136
|
-
type: "function",
|
|
1137
|
-
name: "addVerifiers"
|
|
1138
|
-
},
|
|
1139
|
-
{
|
|
1140
|
-
inputs: [],
|
|
1141
|
-
stateMutability: "view",
|
|
1142
|
-
type: "function",
|
|
1143
|
-
name: "admin",
|
|
1144
|
-
outputs: [{ internalType: "address", name: "", type: "address" }]
|
|
1145
|
-
},
|
|
1146
|
-
{
|
|
1147
|
-
inputs: [
|
|
1148
|
-
{
|
|
1149
|
-
internalType: "struct ProofVerificationParams",
|
|
1150
|
-
name: "params",
|
|
1151
|
-
type: "tuple",
|
|
1152
|
-
components: [
|
|
1153
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1154
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1155
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1156
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1157
|
-
{
|
|
1158
|
-
internalType: "uint256[]",
|
|
1159
|
-
name: "committedInputCounts",
|
|
1160
|
-
type: "uint256[]"
|
|
1161
|
-
},
|
|
1162
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1163
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1164
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1165
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1166
|
-
]
|
|
1167
|
-
}
|
|
1168
|
-
],
|
|
1169
|
-
stateMutability: "view",
|
|
1170
|
-
type: "function",
|
|
1171
|
-
name: "enforceSanctionsRoot"
|
|
1172
|
-
},
|
|
1173
|
-
{
|
|
1174
|
-
inputs: [
|
|
1175
|
-
{
|
|
1176
|
-
internalType: "struct ProofVerificationParams",
|
|
1177
|
-
name: "params",
|
|
1178
|
-
type: "tuple",
|
|
1179
|
-
components: [
|
|
1180
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1181
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1182
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1183
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1184
|
-
{
|
|
1185
|
-
internalType: "uint256[]",
|
|
1186
|
-
name: "committedInputCounts",
|
|
1187
|
-
type: "uint256[]"
|
|
1188
|
-
},
|
|
1189
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1190
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1191
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1192
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1193
|
-
]
|
|
1194
|
-
}
|
|
1195
|
-
],
|
|
1196
|
-
stateMutability: "pure",
|
|
1197
|
-
type: "function",
|
|
1198
|
-
name: "getBoundData",
|
|
1199
|
-
outputs: [
|
|
1200
|
-
{
|
|
1201
|
-
internalType: "struct BoundData",
|
|
1202
|
-
name: "boundData",
|
|
1203
|
-
type: "tuple",
|
|
1204
|
-
components: [
|
|
1205
|
-
{ internalType: "address", name: "senderAddress", type: "address" },
|
|
1206
|
-
{ internalType: "uint256", name: "chainId", type: "uint256" },
|
|
1207
|
-
{ internalType: "string", name: "customData", type: "string" }
|
|
1208
|
-
]
|
|
1209
|
-
}
|
|
1210
|
-
]
|
|
1211
|
-
},
|
|
1212
|
-
{
|
|
1213
|
-
inputs: [
|
|
1214
|
-
{
|
|
1215
|
-
internalType: "struct ProofVerificationParams",
|
|
1216
|
-
name: "params",
|
|
1217
|
-
type: "tuple",
|
|
1218
|
-
components: [
|
|
1219
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1220
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1221
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1222
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1223
|
-
{
|
|
1224
|
-
internalType: "uint256[]",
|
|
1225
|
-
name: "committedInputCounts",
|
|
1226
|
-
type: "uint256[]"
|
|
1227
|
-
},
|
|
1228
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1229
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1230
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1231
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1232
|
-
]
|
|
1233
|
-
},
|
|
1234
|
-
{ internalType: "bool", name: "isIDCard", type: "bool" }
|
|
1235
|
-
],
|
|
1236
|
-
stateMutability: "pure",
|
|
1237
|
-
type: "function",
|
|
1238
|
-
name: "getDisclosedData",
|
|
1239
|
-
outputs: [
|
|
1240
|
-
{
|
|
1241
|
-
internalType: "struct DisclosedData",
|
|
1242
|
-
name: "disclosedData",
|
|
1243
|
-
type: "tuple",
|
|
1244
|
-
components: [
|
|
1245
|
-
{ internalType: "string", name: "name", type: "string" },
|
|
1246
|
-
{ internalType: "string", name: "issuingCountry", type: "string" },
|
|
1247
|
-
{ internalType: "string", name: "nationality", type: "string" },
|
|
1248
|
-
{ internalType: "string", name: "gender", type: "string" },
|
|
1249
|
-
{ internalType: "string", name: "birthDate", type: "string" },
|
|
1250
|
-
{ internalType: "string", name: "expiryDate", type: "string" },
|
|
1251
|
-
{ internalType: "string", name: "documentNumber", type: "string" },
|
|
1252
|
-
{ internalType: "string", name: "documentType", type: "string" }
|
|
1253
|
-
]
|
|
1254
|
-
}
|
|
1255
|
-
]
|
|
1256
|
-
},
|
|
1257
|
-
{
|
|
1258
|
-
inputs: [
|
|
1259
|
-
{ internalType: "uint8", name: "minAge", type: "uint8" },
|
|
1260
|
-
{
|
|
1261
|
-
internalType: "struct ProofVerificationParams",
|
|
1262
|
-
name: "params",
|
|
1263
|
-
type: "tuple",
|
|
1264
|
-
components: [
|
|
1265
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1266
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1267
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1268
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1269
|
-
{
|
|
1270
|
-
internalType: "uint256[]",
|
|
1271
|
-
name: "committedInputCounts",
|
|
1272
|
-
type: "uint256[]"
|
|
1273
|
-
},
|
|
1274
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1275
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1276
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1277
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1278
|
-
]
|
|
1279
|
-
}
|
|
1280
|
-
],
|
|
1281
|
-
stateMutability: "view",
|
|
1282
|
-
type: "function",
|
|
1283
|
-
name: "isAgeAbove",
|
|
1284
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1285
|
-
},
|
|
1286
|
-
{
|
|
1287
|
-
inputs: [
|
|
1288
|
-
{ internalType: "uint8", name: "minAge", type: "uint8" },
|
|
1289
|
-
{
|
|
1290
|
-
internalType: "struct ProofVerificationParams",
|
|
1291
|
-
name: "params",
|
|
1292
|
-
type: "tuple",
|
|
1293
|
-
components: [
|
|
1294
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1295
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1296
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1297
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1298
|
-
{
|
|
1299
|
-
internalType: "uint256[]",
|
|
1300
|
-
name: "committedInputCounts",
|
|
1301
|
-
type: "uint256[]"
|
|
1302
|
-
},
|
|
1303
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1304
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1305
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1306
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1307
|
-
]
|
|
1308
|
-
}
|
|
1309
|
-
],
|
|
1310
|
-
stateMutability: "view",
|
|
1311
|
-
type: "function",
|
|
1312
|
-
name: "isAgeAboveOrEqual",
|
|
1313
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1314
|
-
},
|
|
1315
|
-
{
|
|
1316
|
-
inputs: [
|
|
1317
|
-
{ internalType: "uint8", name: "maxAge", type: "uint8" },
|
|
1318
|
-
{
|
|
1319
|
-
internalType: "struct ProofVerificationParams",
|
|
1320
|
-
name: "params",
|
|
1321
|
-
type: "tuple",
|
|
1322
|
-
components: [
|
|
1323
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1324
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1325
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1326
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1327
|
-
{
|
|
1328
|
-
internalType: "uint256[]",
|
|
1329
|
-
name: "committedInputCounts",
|
|
1330
|
-
type: "uint256[]"
|
|
1331
|
-
},
|
|
1332
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1333
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1334
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1335
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1336
|
-
]
|
|
1337
|
-
}
|
|
1338
|
-
],
|
|
1339
|
-
stateMutability: "view",
|
|
1340
|
-
type: "function",
|
|
1341
|
-
name: "isAgeBelow",
|
|
1342
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1343
|
-
},
|
|
1344
|
-
{
|
|
1345
|
-
inputs: [
|
|
1346
|
-
{ internalType: "uint8", name: "maxAge", type: "uint8" },
|
|
1347
|
-
{
|
|
1348
|
-
internalType: "struct ProofVerificationParams",
|
|
1349
|
-
name: "params",
|
|
1350
|
-
type: "tuple",
|
|
1351
|
-
components: [
|
|
1352
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1353
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1354
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1355
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1356
|
-
{
|
|
1357
|
-
internalType: "uint256[]",
|
|
1358
|
-
name: "committedInputCounts",
|
|
1359
|
-
type: "uint256[]"
|
|
1360
|
-
},
|
|
1361
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1362
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1363
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1364
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1365
|
-
]
|
|
1366
|
-
}
|
|
1367
|
-
],
|
|
1368
|
-
stateMutability: "view",
|
|
1369
|
-
type: "function",
|
|
1370
|
-
name: "isAgeBelowOrEqual",
|
|
1371
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1372
|
-
},
|
|
1373
|
-
{
|
|
1374
|
-
inputs: [
|
|
1375
|
-
{ internalType: "uint8", name: "minAge", type: "uint8" },
|
|
1376
|
-
{ internalType: "uint8", name: "maxAge", type: "uint8" },
|
|
1377
|
-
{
|
|
1378
|
-
internalType: "struct ProofVerificationParams",
|
|
1379
|
-
name: "params",
|
|
1380
|
-
type: "tuple",
|
|
1381
|
-
components: [
|
|
1382
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1383
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1384
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1385
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1386
|
-
{
|
|
1387
|
-
internalType: "uint256[]",
|
|
1388
|
-
name: "committedInputCounts",
|
|
1389
|
-
type: "uint256[]"
|
|
1390
|
-
},
|
|
1391
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1392
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1393
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1394
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1395
|
-
]
|
|
1396
|
-
}
|
|
1397
|
-
],
|
|
1398
|
-
stateMutability: "view",
|
|
1399
|
-
type: "function",
|
|
1400
|
-
name: "isAgeBetween",
|
|
1401
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1402
|
-
},
|
|
1403
|
-
{
|
|
1404
|
-
inputs: [
|
|
1405
|
-
{ internalType: "uint8", name: "age", type: "uint8" },
|
|
1406
|
-
{
|
|
1407
|
-
internalType: "struct ProofVerificationParams",
|
|
1408
|
-
name: "params",
|
|
1409
|
-
type: "tuple",
|
|
1410
|
-
components: [
|
|
1411
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1412
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1413
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1414
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1415
|
-
{
|
|
1416
|
-
internalType: "uint256[]",
|
|
1417
|
-
name: "committedInputCounts",
|
|
1418
|
-
type: "uint256[]"
|
|
1419
|
-
},
|
|
1420
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1421
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1422
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1423
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1424
|
-
]
|
|
1425
|
-
}
|
|
1426
|
-
],
|
|
1427
|
-
stateMutability: "view",
|
|
1428
|
-
type: "function",
|
|
1429
|
-
name: "isAgeEqual",
|
|
1430
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1431
|
-
},
|
|
1432
|
-
{
|
|
1433
|
-
inputs: [
|
|
1434
|
-
{ internalType: "uint256", name: "minDate", type: "uint256" },
|
|
1435
|
-
{
|
|
1436
|
-
internalType: "struct ProofVerificationParams",
|
|
1437
|
-
name: "params",
|
|
1438
|
-
type: "tuple",
|
|
1439
|
-
components: [
|
|
1440
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1441
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1442
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1443
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1444
|
-
{
|
|
1445
|
-
internalType: "uint256[]",
|
|
1446
|
-
name: "committedInputCounts",
|
|
1447
|
-
type: "uint256[]"
|
|
1448
|
-
},
|
|
1449
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1450
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1451
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1452
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1453
|
-
]
|
|
1454
|
-
}
|
|
1455
|
-
],
|
|
1456
|
-
stateMutability: "view",
|
|
1457
|
-
type: "function",
|
|
1458
|
-
name: "isBirthdateAfter",
|
|
1459
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1460
|
-
},
|
|
1461
|
-
{
|
|
1462
|
-
inputs: [
|
|
1463
|
-
{ internalType: "uint256", name: "minDate", type: "uint256" },
|
|
1464
|
-
{
|
|
1465
|
-
internalType: "struct ProofVerificationParams",
|
|
1466
|
-
name: "params",
|
|
1467
|
-
type: "tuple",
|
|
1468
|
-
components: [
|
|
1469
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1470
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1471
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1472
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1473
|
-
{
|
|
1474
|
-
internalType: "uint256[]",
|
|
1475
|
-
name: "committedInputCounts",
|
|
1476
|
-
type: "uint256[]"
|
|
1477
|
-
},
|
|
1478
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1479
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1480
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1481
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1482
|
-
]
|
|
1483
|
-
}
|
|
1484
|
-
],
|
|
1485
|
-
stateMutability: "view",
|
|
1486
|
-
type: "function",
|
|
1487
|
-
name: "isBirthdateAfterOrEqual",
|
|
1488
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1489
|
-
},
|
|
1490
|
-
{
|
|
1491
|
-
inputs: [
|
|
1492
|
-
{ internalType: "uint256", name: "maxDate", type: "uint256" },
|
|
1493
|
-
{
|
|
1494
|
-
internalType: "struct ProofVerificationParams",
|
|
1495
|
-
name: "params",
|
|
1496
|
-
type: "tuple",
|
|
1497
|
-
components: [
|
|
1498
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1499
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1500
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1501
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1502
|
-
{
|
|
1503
|
-
internalType: "uint256[]",
|
|
1504
|
-
name: "committedInputCounts",
|
|
1505
|
-
type: "uint256[]"
|
|
1506
|
-
},
|
|
1507
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1508
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1509
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1510
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1511
|
-
]
|
|
1512
|
-
}
|
|
1513
|
-
],
|
|
1514
|
-
stateMutability: "view",
|
|
1515
|
-
type: "function",
|
|
1516
|
-
name: "isBirthdateBefore",
|
|
1517
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1518
|
-
},
|
|
1519
|
-
{
|
|
1520
|
-
inputs: [
|
|
1521
|
-
{ internalType: "uint256", name: "maxDate", type: "uint256" },
|
|
1522
|
-
{
|
|
1523
|
-
internalType: "struct ProofVerificationParams",
|
|
1524
|
-
name: "params",
|
|
1525
|
-
type: "tuple",
|
|
1526
|
-
components: [
|
|
1527
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1528
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1529
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1530
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1531
|
-
{
|
|
1532
|
-
internalType: "uint256[]",
|
|
1533
|
-
name: "committedInputCounts",
|
|
1534
|
-
type: "uint256[]"
|
|
1535
|
-
},
|
|
1536
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1537
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1538
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1539
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1540
|
-
]
|
|
1541
|
-
}
|
|
1542
|
-
],
|
|
1543
|
-
stateMutability: "view",
|
|
1544
|
-
type: "function",
|
|
1545
|
-
name: "isBirthdateBeforeOrEqual",
|
|
1546
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1547
|
-
},
|
|
1548
|
-
{
|
|
1549
|
-
inputs: [
|
|
1550
|
-
{ internalType: "uint256", name: "minDate", type: "uint256" },
|
|
1551
|
-
{ internalType: "uint256", name: "maxDate", type: "uint256" },
|
|
1552
|
-
{
|
|
1553
|
-
internalType: "struct ProofVerificationParams",
|
|
1554
|
-
name: "params",
|
|
1555
|
-
type: "tuple",
|
|
1556
|
-
components: [
|
|
1557
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1558
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1559
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1560
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1561
|
-
{
|
|
1562
|
-
internalType: "uint256[]",
|
|
1563
|
-
name: "committedInputCounts",
|
|
1564
|
-
type: "uint256[]"
|
|
1565
|
-
},
|
|
1566
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1567
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1568
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1569
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1570
|
-
]
|
|
1571
|
-
}
|
|
1572
|
-
],
|
|
1573
|
-
stateMutability: "view",
|
|
1574
|
-
type: "function",
|
|
1575
|
-
name: "isBirthdateBetween",
|
|
1576
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1577
|
-
},
|
|
1578
|
-
{
|
|
1579
|
-
inputs: [
|
|
1580
|
-
{ internalType: "uint256", name: "date", type: "uint256" },
|
|
1581
|
-
{
|
|
1582
|
-
internalType: "struct ProofVerificationParams",
|
|
1583
|
-
name: "params",
|
|
1584
|
-
type: "tuple",
|
|
1585
|
-
components: [
|
|
1586
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1587
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1588
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1589
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1590
|
-
{
|
|
1591
|
-
internalType: "uint256[]",
|
|
1592
|
-
name: "committedInputCounts",
|
|
1593
|
-
type: "uint256[]"
|
|
1594
|
-
},
|
|
1595
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1596
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1597
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1598
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1599
|
-
]
|
|
1600
|
-
}
|
|
1601
|
-
],
|
|
1602
|
-
stateMutability: "view",
|
|
1603
|
-
type: "function",
|
|
1604
|
-
name: "isBirthdateEqual",
|
|
1605
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1606
|
-
},
|
|
1607
|
-
{
|
|
1608
|
-
inputs: [
|
|
1609
|
-
{ internalType: "uint256", name: "minDate", type: "uint256" },
|
|
1610
|
-
{
|
|
1611
|
-
internalType: "struct ProofVerificationParams",
|
|
1612
|
-
name: "params",
|
|
1613
|
-
type: "tuple",
|
|
1614
|
-
components: [
|
|
1615
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1616
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1617
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1618
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1619
|
-
{
|
|
1620
|
-
internalType: "uint256[]",
|
|
1621
|
-
name: "committedInputCounts",
|
|
1622
|
-
type: "uint256[]"
|
|
1623
|
-
},
|
|
1624
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1625
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1626
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1627
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1628
|
-
]
|
|
1629
|
-
}
|
|
1630
|
-
],
|
|
1631
|
-
stateMutability: "view",
|
|
1632
|
-
type: "function",
|
|
1633
|
-
name: "isExpiryDateAfter",
|
|
1634
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1635
|
-
},
|
|
1636
|
-
{
|
|
1637
|
-
inputs: [
|
|
1638
|
-
{ internalType: "uint256", name: "minDate", type: "uint256" },
|
|
1639
|
-
{
|
|
1640
|
-
internalType: "struct ProofVerificationParams",
|
|
1641
|
-
name: "params",
|
|
1642
|
-
type: "tuple",
|
|
1643
|
-
components: [
|
|
1644
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1645
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1646
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1647
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1648
|
-
{
|
|
1649
|
-
internalType: "uint256[]",
|
|
1650
|
-
name: "committedInputCounts",
|
|
1651
|
-
type: "uint256[]"
|
|
1652
|
-
},
|
|
1653
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1654
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1655
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1656
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1657
|
-
]
|
|
1658
|
-
}
|
|
1659
|
-
],
|
|
1660
|
-
stateMutability: "view",
|
|
1661
|
-
type: "function",
|
|
1662
|
-
name: "isExpiryDateAfterOrEqual",
|
|
1663
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1664
|
-
},
|
|
1665
|
-
{
|
|
1666
|
-
inputs: [
|
|
1667
|
-
{ internalType: "uint256", name: "maxDate", type: "uint256" },
|
|
1668
|
-
{
|
|
1669
|
-
internalType: "struct ProofVerificationParams",
|
|
1670
|
-
name: "params",
|
|
1671
|
-
type: "tuple",
|
|
1672
|
-
components: [
|
|
1673
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1674
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1675
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1676
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1677
|
-
{
|
|
1678
|
-
internalType: "uint256[]",
|
|
1679
|
-
name: "committedInputCounts",
|
|
1680
|
-
type: "uint256[]"
|
|
1681
|
-
},
|
|
1682
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1683
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1684
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1685
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1686
|
-
]
|
|
1687
|
-
}
|
|
1688
|
-
],
|
|
1689
|
-
stateMutability: "view",
|
|
1690
|
-
type: "function",
|
|
1691
|
-
name: "isExpiryDateBefore",
|
|
1692
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1693
|
-
},
|
|
1694
|
-
{
|
|
1695
|
-
inputs: [
|
|
1696
|
-
{ internalType: "uint256", name: "maxDate", type: "uint256" },
|
|
1697
|
-
{
|
|
1698
|
-
internalType: "struct ProofVerificationParams",
|
|
1699
|
-
name: "params",
|
|
1700
|
-
type: "tuple",
|
|
1701
|
-
components: [
|
|
1702
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1703
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1704
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1705
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1706
|
-
{
|
|
1707
|
-
internalType: "uint256[]",
|
|
1708
|
-
name: "committedInputCounts",
|
|
1709
|
-
type: "uint256[]"
|
|
1710
|
-
},
|
|
1711
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1712
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1713
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1714
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1715
|
-
]
|
|
1716
|
-
}
|
|
1717
|
-
],
|
|
1718
|
-
stateMutability: "view",
|
|
1719
|
-
type: "function",
|
|
1720
|
-
name: "isExpiryDateBeforeOrEqual",
|
|
1721
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1722
|
-
},
|
|
1723
|
-
{
|
|
1724
|
-
inputs: [
|
|
1725
|
-
{ internalType: "uint256", name: "minDate", type: "uint256" },
|
|
1726
|
-
{ internalType: "uint256", name: "maxDate", type: "uint256" },
|
|
1727
|
-
{
|
|
1728
|
-
internalType: "struct ProofVerificationParams",
|
|
1729
|
-
name: "params",
|
|
1730
|
-
type: "tuple",
|
|
1731
|
-
components: [
|
|
1732
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1733
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1734
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1735
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1736
|
-
{
|
|
1737
|
-
internalType: "uint256[]",
|
|
1738
|
-
name: "committedInputCounts",
|
|
1739
|
-
type: "uint256[]"
|
|
1740
|
-
},
|
|
1741
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1742
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1743
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1744
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1745
|
-
]
|
|
1746
|
-
}
|
|
1747
|
-
],
|
|
1748
|
-
stateMutability: "view",
|
|
1749
|
-
type: "function",
|
|
1750
|
-
name: "isExpiryDateBetween",
|
|
1751
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1752
|
-
},
|
|
1753
|
-
{
|
|
1754
|
-
inputs: [
|
|
1755
|
-
{ internalType: "uint256", name: "date", type: "uint256" },
|
|
1756
|
-
{
|
|
1757
|
-
internalType: "struct ProofVerificationParams",
|
|
1758
|
-
name: "params",
|
|
1759
|
-
type: "tuple",
|
|
1760
|
-
components: [
|
|
1761
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1762
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1763
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1764
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1765
|
-
{
|
|
1766
|
-
internalType: "uint256[]",
|
|
1767
|
-
name: "committedInputCounts",
|
|
1768
|
-
type: "uint256[]"
|
|
1769
|
-
},
|
|
1770
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1771
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1772
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1773
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1774
|
-
]
|
|
1775
|
-
}
|
|
1776
|
-
],
|
|
1777
|
-
stateMutability: "view",
|
|
1778
|
-
type: "function",
|
|
1779
|
-
name: "isExpiryDateEqual",
|
|
1780
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1781
|
-
},
|
|
1782
|
-
{
|
|
1783
|
-
inputs: [
|
|
1784
|
-
{ internalType: "string[]", name: "countryList", type: "string[]" },
|
|
1785
|
-
{
|
|
1786
|
-
internalType: "struct ProofVerificationParams",
|
|
1787
|
-
name: "params",
|
|
1788
|
-
type: "tuple",
|
|
1789
|
-
components: [
|
|
1790
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1791
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1792
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1793
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1794
|
-
{
|
|
1795
|
-
internalType: "uint256[]",
|
|
1796
|
-
name: "committedInputCounts",
|
|
1797
|
-
type: "uint256[]"
|
|
1798
|
-
},
|
|
1799
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1800
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1801
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1802
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1803
|
-
]
|
|
1804
|
-
}
|
|
1805
|
-
],
|
|
1806
|
-
stateMutability: "pure",
|
|
1807
|
-
type: "function",
|
|
1808
|
-
name: "isIssuingCountryIn",
|
|
1809
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1810
|
-
},
|
|
1811
|
-
{
|
|
1812
|
-
inputs: [
|
|
1813
|
-
{ internalType: "string[]", name: "countryList", type: "string[]" },
|
|
1814
|
-
{
|
|
1815
|
-
internalType: "struct ProofVerificationParams",
|
|
1816
|
-
name: "params",
|
|
1817
|
-
type: "tuple",
|
|
1818
|
-
components: [
|
|
1819
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1820
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1821
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1822
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1823
|
-
{
|
|
1824
|
-
internalType: "uint256[]",
|
|
1825
|
-
name: "committedInputCounts",
|
|
1826
|
-
type: "uint256[]"
|
|
1827
|
-
},
|
|
1828
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1829
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1830
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1831
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1832
|
-
]
|
|
1833
|
-
}
|
|
1834
|
-
],
|
|
1835
|
-
stateMutability: "pure",
|
|
1836
|
-
type: "function",
|
|
1837
|
-
name: "isIssuingCountryOut",
|
|
1838
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1839
|
-
},
|
|
1840
|
-
{
|
|
1841
|
-
inputs: [
|
|
1842
|
-
{ internalType: "string[]", name: "countryList", type: "string[]" },
|
|
1843
|
-
{
|
|
1844
|
-
internalType: "struct ProofVerificationParams",
|
|
1845
|
-
name: "params",
|
|
1846
|
-
type: "tuple",
|
|
1847
|
-
components: [
|
|
1848
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1849
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1850
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1851
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1852
|
-
{
|
|
1853
|
-
internalType: "uint256[]",
|
|
1854
|
-
name: "committedInputCounts",
|
|
1855
|
-
type: "uint256[]"
|
|
1856
|
-
},
|
|
1857
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1858
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1859
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1860
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1861
|
-
]
|
|
1862
|
-
}
|
|
1863
|
-
],
|
|
1864
|
-
stateMutability: "pure",
|
|
1865
|
-
type: "function",
|
|
1866
|
-
name: "isNationalityIn",
|
|
1867
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1868
|
-
},
|
|
1869
|
-
{
|
|
1870
|
-
inputs: [
|
|
1871
|
-
{ internalType: "string[]", name: "countryList", type: "string[]" },
|
|
1872
|
-
{
|
|
1873
|
-
internalType: "struct ProofVerificationParams",
|
|
1874
|
-
name: "params",
|
|
1875
|
-
type: "tuple",
|
|
1876
|
-
components: [
|
|
1877
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1878
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1879
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1880
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1881
|
-
{
|
|
1882
|
-
internalType: "uint256[]",
|
|
1883
|
-
name: "committedInputCounts",
|
|
1884
|
-
type: "uint256[]"
|
|
1885
|
-
},
|
|
1886
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1887
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1888
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1889
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1890
|
-
]
|
|
1891
|
-
}
|
|
1892
|
-
],
|
|
1893
|
-
stateMutability: "pure",
|
|
1894
|
-
type: "function",
|
|
1895
|
-
name: "isNationalityOut",
|
|
1896
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1897
|
-
},
|
|
1898
|
-
{
|
|
1899
|
-
inputs: [],
|
|
1900
|
-
stateMutability: "view",
|
|
1901
|
-
type: "function",
|
|
1902
|
-
name: "paused",
|
|
1903
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1904
|
-
},
|
|
1905
|
-
{
|
|
1906
|
-
inputs: [{ internalType: "bytes32[]", name: "vkeyHashes", type: "bytes32[]" }],
|
|
1907
|
-
stateMutability: "nonpayable",
|
|
1908
|
-
type: "function",
|
|
1909
|
-
name: "removeVerifiers"
|
|
1910
|
-
},
|
|
1911
|
-
{
|
|
1912
|
-
inputs: [],
|
|
1913
|
-
stateMutability: "view",
|
|
1914
|
-
type: "function",
|
|
1915
|
-
name: "rootRegistry",
|
|
1916
|
-
outputs: [{ internalType: "contract IRootRegistry", name: "", type: "address" }]
|
|
1917
|
-
},
|
|
1918
|
-
{
|
|
1919
|
-
inputs: [{ internalType: "bool", name: "_paused", type: "bool" }],
|
|
1920
|
-
stateMutability: "nonpayable",
|
|
1921
|
-
type: "function",
|
|
1922
|
-
name: "setPaused"
|
|
1923
|
-
},
|
|
1924
|
-
{
|
|
1925
|
-
inputs: [{ internalType: "address", name: "newAdmin", type: "address" }],
|
|
1926
|
-
stateMutability: "nonpayable",
|
|
1927
|
-
type: "function",
|
|
1928
|
-
name: "transferAdmin"
|
|
1929
|
-
},
|
|
1930
|
-
{
|
|
1931
|
-
inputs: [{ internalType: "address", name: "_rootRegistry", type: "address" }],
|
|
1932
|
-
stateMutability: "nonpayable",
|
|
1933
|
-
type: "function",
|
|
1934
|
-
name: "updateRootRegistry"
|
|
1935
|
-
},
|
|
1936
|
-
{
|
|
1937
|
-
inputs: [
|
|
1938
|
-
{
|
|
1939
|
-
internalType: "struct ProofVerificationParams",
|
|
1940
|
-
name: "params",
|
|
1941
|
-
type: "tuple",
|
|
1942
|
-
components: [
|
|
1943
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1944
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1945
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1946
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" },
|
|
1947
|
-
{
|
|
1948
|
-
internalType: "uint256[]",
|
|
1949
|
-
name: "committedInputCounts",
|
|
1950
|
-
type: "uint256[]"
|
|
1951
|
-
},
|
|
1952
|
-
{ internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
|
|
1953
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1954
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1955
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1956
|
-
]
|
|
1957
|
-
}
|
|
1958
|
-
],
|
|
1959
|
-
stateMutability: "view",
|
|
1960
|
-
type: "function",
|
|
1961
|
-
name: "verifyProof",
|
|
1962
|
-
outputs: [
|
|
1963
|
-
{ internalType: "bool", name: "isValid", type: "bool" },
|
|
1964
|
-
{ internalType: "bytes32", name: "uniqueIdentifier", type: "bytes32" }
|
|
1965
|
-
]
|
|
1966
|
-
},
|
|
1967
|
-
{
|
|
1968
|
-
inputs: [
|
|
1969
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1970
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1971
|
-
{ internalType: "string", name: "scope", type: "string" }
|
|
1972
|
-
],
|
|
1973
|
-
stateMutability: "pure",
|
|
1974
|
-
type: "function",
|
|
1975
|
-
name: "verifyScopes",
|
|
1976
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1977
|
-
},
|
|
1978
|
-
{
|
|
1979
|
-
inputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
|
|
1980
|
-
stateMutability: "view",
|
|
1981
|
-
type: "function",
|
|
1982
|
-
name: "vkeyHashToVerifier",
|
|
1983
|
-
outputs: [{ internalType: "address", name: "", type: "address" }]
|
|
1984
|
-
}
|
|
1985
|
-
],
|
|
1986
|
-
devdoc: {
|
|
1987
|
-
kind: "dev",
|
|
1988
|
-
methods: {
|
|
1989
|
-
constructor: { details: "Constructor" },
|
|
1990
|
-
"enforceSanctionsRoot((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
1991
|
-
params: { params: "The proof verification parameters" }
|
|
1992
|
-
},
|
|
1993
|
-
"getBoundData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
1994
|
-
params: { params: "The proof verification parameters" },
|
|
1995
|
-
returns: { boundData: "The data bound to the proof" }
|
|
1996
|
-
},
|
|
1997
|
-
"getDisclosedData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool),bool)": {
|
|
1998
|
-
params: {
|
|
1999
|
-
isIDCard: "Whether the proof is an ID card",
|
|
2000
|
-
params: "The proof verification parameters"
|
|
2001
|
-
},
|
|
2002
|
-
returns: { disclosedData: "The data disclosed by the proof" }
|
|
2003
|
-
},
|
|
2004
|
-
"isAgeAbove(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2005
|
-
params: {
|
|
2006
|
-
minAge: "The age must be above this age",
|
|
2007
|
-
params: "The proof verification parameters"
|
|
2008
|
-
},
|
|
2009
|
-
returns: { _0: "True if the age is above the given age, false otherwise" }
|
|
2010
|
-
},
|
|
2011
|
-
"isAgeAboveOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2012
|
-
params: {
|
|
2013
|
-
minAge: "The age must be above or equal to this age",
|
|
2014
|
-
params: "The proof verification parameters"
|
|
2015
|
-
},
|
|
2016
|
-
returns: {
|
|
2017
|
-
_0: "True if the age is above or equal to the given age, false otherwise"
|
|
2018
|
-
}
|
|
2019
|
-
},
|
|
2020
|
-
"isAgeBelow(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2021
|
-
params: {
|
|
2022
|
-
maxAge: "The age must be below this age",
|
|
2023
|
-
params: "The proof verification parameters"
|
|
2024
|
-
},
|
|
2025
|
-
returns: { _0: "True if the age is below the given age, false otherwise" }
|
|
2026
|
-
},
|
|
2027
|
-
"isAgeBelowOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2028
|
-
params: {
|
|
2029
|
-
maxAge: "The age must be below or equal to this age",
|
|
2030
|
-
params: "The proof verification parameters"
|
|
2031
|
-
},
|
|
2032
|
-
returns: {
|
|
2033
|
-
_0: "True if the age is below or equal to the given age, false otherwise"
|
|
2034
|
-
}
|
|
2035
|
-
},
|
|
2036
|
-
"isAgeBetween(uint8,uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2037
|
-
params: {
|
|
2038
|
-
maxAge: "The age must be less than or equal to this age",
|
|
2039
|
-
minAge: "The age must be greater than or equal to this age",
|
|
2040
|
-
params: "The proof verification parameters"
|
|
2041
|
-
},
|
|
2042
|
-
returns: { _0: "True if the age is in the given range, false otherwise" }
|
|
2043
|
-
},
|
|
2044
|
-
"isAgeEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2045
|
-
params: {
|
|
2046
|
-
age: "The age must be equal to this age",
|
|
2047
|
-
params: "The proof verification parameters"
|
|
2048
|
-
},
|
|
2049
|
-
returns: { _0: "True if the age is equal to the given age, false otherwise" }
|
|
2050
|
-
},
|
|
2051
|
-
"isBirthdateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2052
|
-
params: {
|
|
2053
|
-
minDate: "The birthdate must be after this date",
|
|
2054
|
-
params: "The proof verification parameters"
|
|
2055
|
-
},
|
|
2056
|
-
returns: { _0: "True if the birthdate is after the given date, false otherwise" }
|
|
2057
|
-
},
|
|
2058
|
-
"isBirthdateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2059
|
-
params: {
|
|
2060
|
-
minDate: "The birthdate must be after or equal to this date",
|
|
2061
|
-
params: "The proof verification parameters"
|
|
2062
|
-
},
|
|
2063
|
-
returns: {
|
|
2064
|
-
_0: "True if the birthdate is after or equal to the given date, false otherwise"
|
|
2065
|
-
}
|
|
2066
|
-
},
|
|
2067
|
-
"isBirthdateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2068
|
-
params: {
|
|
2069
|
-
maxDate: "The birthdate must be before this date",
|
|
2070
|
-
params: "The proof verification parameters"
|
|
2071
|
-
},
|
|
2072
|
-
returns: { _0: "True if the birthdate is before the given date, false otherwise" }
|
|
2073
|
-
},
|
|
2074
|
-
"isBirthdateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2075
|
-
params: {
|
|
2076
|
-
maxDate: "The birthdate must be before or equal to this date",
|
|
2077
|
-
params: "The proof verification parameters"
|
|
2078
|
-
},
|
|
2079
|
-
returns: {
|
|
2080
|
-
_0: "True if the birthdate is before or equal to the given date, false otherwise"
|
|
2081
|
-
}
|
|
2082
|
-
},
|
|
2083
|
-
"isBirthdateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2084
|
-
params: {
|
|
2085
|
-
maxDate: "The birthdate must be before or equal to this date",
|
|
2086
|
-
minDate: "The birthdate must be after or equal to this date",
|
|
2087
|
-
params: "The proof verification parameters"
|
|
2088
|
-
},
|
|
2089
|
-
returns: { _0: "True if the birthdate is between the given dates, false otherwise" }
|
|
2090
|
-
},
|
|
2091
|
-
"isBirthdateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2092
|
-
params: {
|
|
2093
|
-
date: "The birthdate must be equal to this date",
|
|
2094
|
-
params: "The proof verification parameters"
|
|
2095
|
-
},
|
|
2096
|
-
returns: { _0: "True if the birthdate is equal to the given date, false otherwise" }
|
|
2097
|
-
},
|
|
2098
|
-
"isExpiryDateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2099
|
-
params: {
|
|
2100
|
-
minDate: "The expiry date must be after this date",
|
|
2101
|
-
params: "The proof verification parameters"
|
|
2102
|
-
},
|
|
2103
|
-
returns: { _0: "True if the expiry date is after the given date, false otherwise" }
|
|
2104
|
-
},
|
|
2105
|
-
"isExpiryDateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2106
|
-
params: {
|
|
2107
|
-
minDate: "The expiry date must be after or equal to this date",
|
|
2108
|
-
params: "The proof verification parameters"
|
|
2109
|
-
},
|
|
2110
|
-
returns: {
|
|
2111
|
-
_0: "True if the expiry date is after or equal to the given date, false otherwise"
|
|
2112
|
-
}
|
|
2113
|
-
},
|
|
2114
|
-
"isExpiryDateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2115
|
-
params: {
|
|
2116
|
-
maxDate: "The expiry date must be before this date",
|
|
2117
|
-
params: "The proof verification parameters"
|
|
2118
|
-
},
|
|
2119
|
-
returns: { _0: "True if the expiry date is before the given date, false otherwise" }
|
|
2120
|
-
},
|
|
2121
|
-
"isExpiryDateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2122
|
-
params: {
|
|
2123
|
-
maxDate: "The expiry date must be before or equal to this date",
|
|
2124
|
-
params: "The proof verification parameters"
|
|
2125
|
-
},
|
|
2126
|
-
returns: {
|
|
2127
|
-
_0: "True if the expiry date is before or equal to the given date, false otherwise"
|
|
2128
|
-
}
|
|
2129
|
-
},
|
|
2130
|
-
"isExpiryDateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2131
|
-
params: {
|
|
2132
|
-
maxDate: "The expiry date must be before or equal to this date",
|
|
2133
|
-
minDate: "The expiry date must be after or equal to this date",
|
|
2134
|
-
params: "The proof verification parameters"
|
|
2135
|
-
},
|
|
2136
|
-
returns: {
|
|
2137
|
-
_0: "True if the expiry date is between the given dates, false otherwise"
|
|
2138
|
-
}
|
|
2139
|
-
},
|
|
2140
|
-
"isExpiryDateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2141
|
-
params: {
|
|
2142
|
-
date: "The expiry date must be equal to this date",
|
|
2143
|
-
params: "The proof verification parameters"
|
|
2144
|
-
},
|
|
2145
|
-
returns: {
|
|
2146
|
-
_0: "True if the expiry date is equal to the given date, false otherwise"
|
|
2147
|
-
}
|
|
2148
|
-
},
|
|
2149
|
-
"isIssuingCountryIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2150
|
-
params: {
|
|
2151
|
-
countryList: "The list of countries (needs to match exactly the list of countries in the proof)",
|
|
2152
|
-
params: "The proof verification parameters"
|
|
2153
|
-
},
|
|
2154
|
-
returns: {
|
|
2155
|
-
_0: "True if the issuing country is in the list of countries, false otherwise"
|
|
2156
|
-
}
|
|
2157
|
-
},
|
|
2158
|
-
"isIssuingCountryOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2159
|
-
params: {
|
|
2160
|
-
countryList: "The list of countries (needs to match exactly the list of countries in the proof) Note: The list of countries must be sorted in alphabetical order",
|
|
2161
|
-
params: "The proof verification parameters"
|
|
2162
|
-
},
|
|
2163
|
-
returns: {
|
|
2164
|
-
_0: "True if the issuing country is not in the list of countries, false otherwise"
|
|
2165
|
-
}
|
|
2166
|
-
},
|
|
2167
|
-
"isNationalityIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2168
|
-
params: {
|
|
2169
|
-
countryList: "The list of countries (needs to match exactly the list of countries in the proof)",
|
|
2170
|
-
params: "The proof verification parameters"
|
|
2171
|
-
},
|
|
2172
|
-
returns: {
|
|
2173
|
-
_0: "True if the nationality is in the list of countries, false otherwise"
|
|
2174
|
-
}
|
|
2175
|
-
},
|
|
2176
|
-
"isNationalityOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2177
|
-
params: {
|
|
2178
|
-
countryList: "The list of countries (needs to match exactly the list of countries in the proof) Note: The list of countries must be sorted in alphabetical order",
|
|
2179
|
-
params: "The proof verification parameters"
|
|
2180
|
-
},
|
|
2181
|
-
returns: {
|
|
2182
|
-
_0: "True if the nationality is not in the list of countries, false otherwise"
|
|
2183
|
-
}
|
|
2184
|
-
},
|
|
2185
|
-
"verifyProof((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2186
|
-
params: { params: "The proof verification parameters" },
|
|
2187
|
-
returns: {
|
|
2188
|
-
isValid: "True if the proof is valid, false otherwise",
|
|
2189
|
-
uniqueIdentifier: "The unique identifier associated to the identity document that generated the proof"
|
|
2190
|
-
}
|
|
2191
|
-
},
|
|
2192
|
-
"verifyScopes(bytes32[],string,string)": {
|
|
2193
|
-
params: {
|
|
2194
|
-
domain: "The domain to check against",
|
|
2195
|
-
publicInputs: "The public inputs of the proof",
|
|
2196
|
-
scope: "The scope to check against"
|
|
2197
|
-
},
|
|
2198
|
-
returns: {
|
|
2199
|
-
_0: "True if the proof was generated for the given domain and scope, false otherwise"
|
|
2200
|
-
}
|
|
2201
|
-
}
|
|
2202
|
-
},
|
|
2203
|
-
version: 1
|
|
2204
|
-
},
|
|
2205
|
-
userdoc: {
|
|
2206
|
-
kind: "user",
|
|
2207
|
-
methods: {
|
|
2208
|
-
"enforceSanctionsRoot((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2209
|
-
notice: "Enforces that the proof checks against the expected sanction list(s)"
|
|
2210
|
-
},
|
|
2211
|
-
"getBoundData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2212
|
-
notice: "Gets the data bound to the proof"
|
|
2213
|
-
},
|
|
2214
|
-
"getDisclosedData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool),bool)": {
|
|
2215
|
-
notice: "Gets the data disclosed by the proof"
|
|
2216
|
-
},
|
|
2217
|
-
"isAgeAbove(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2218
|
-
notice: "Checks if the age is above the given age"
|
|
2219
|
-
},
|
|
2220
|
-
"isAgeAboveOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2221
|
-
notice: "Checks if the age is above or equal to the given age"
|
|
2222
|
-
},
|
|
2223
|
-
"isAgeBelow(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2224
|
-
notice: "Checks if the age is below the given age"
|
|
2225
|
-
},
|
|
2226
|
-
"isAgeBelowOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2227
|
-
notice: "Checks if the age is below or equal to the given age"
|
|
2228
|
-
},
|
|
2229
|
-
"isAgeBetween(uint8,uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2230
|
-
notice: "Checks if the age is in the given range"
|
|
2231
|
-
},
|
|
2232
|
-
"isAgeEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2233
|
-
notice: "Checks if the age is equal to the given age"
|
|
2234
|
-
},
|
|
2235
|
-
"isBirthdateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2236
|
-
notice: "Checks if the birthdate is after the given date"
|
|
2237
|
-
},
|
|
2238
|
-
"isBirthdateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2239
|
-
notice: "Checks if the birthdate is after or equal to the given date"
|
|
2240
|
-
},
|
|
2241
|
-
"isBirthdateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2242
|
-
notice: "Checks if the birthdate is before the given date"
|
|
2243
|
-
},
|
|
2244
|
-
"isBirthdateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2245
|
-
notice: "Checks if the birthdate is before or equal to the given date"
|
|
2246
|
-
},
|
|
2247
|
-
"isBirthdateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2248
|
-
notice: "Checks if the birthdate is between the given dates"
|
|
2249
|
-
},
|
|
2250
|
-
"isBirthdateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2251
|
-
notice: "Checks if the birthdate is equal to the given date"
|
|
2252
|
-
},
|
|
2253
|
-
"isExpiryDateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2254
|
-
notice: "Checks if the expiry date is after the given date"
|
|
2255
|
-
},
|
|
2256
|
-
"isExpiryDateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2257
|
-
notice: "Checks if the expiry date is after or equal to the given date"
|
|
2258
|
-
},
|
|
2259
|
-
"isExpiryDateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2260
|
-
notice: "Checks if the expiry date is before the given date"
|
|
2261
|
-
},
|
|
2262
|
-
"isExpiryDateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2263
|
-
notice: "Checks if the expiry date is before or equal to the given date"
|
|
2264
|
-
},
|
|
2265
|
-
"isExpiryDateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2266
|
-
notice: "Checks if the expiry date is between the given dates"
|
|
2267
|
-
},
|
|
2268
|
-
"isExpiryDateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2269
|
-
notice: "Checks if the expiry date is equal to the given date"
|
|
2270
|
-
},
|
|
2271
|
-
"isIssuingCountryIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2272
|
-
notice: "Checks if the issuing country is in the list of countries"
|
|
2273
|
-
},
|
|
2274
|
-
"isIssuingCountryOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2275
|
-
notice: "Checks if the issuing country is not in the list of countries"
|
|
2276
|
-
},
|
|
2277
|
-
"isNationalityIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2278
|
-
notice: "Checks if the nationality is in the list of countries"
|
|
2279
|
-
},
|
|
2280
|
-
"isNationalityOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2281
|
-
notice: "Checks if the nationality is not in the list of countries"
|
|
2282
|
-
},
|
|
2283
|
-
"verifyProof((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
|
|
2284
|
-
notice: "Verifies a proof from ZKPassport"
|
|
2285
|
-
},
|
|
2286
|
-
"verifyScopes(bytes32[],string,string)": {
|
|
2287
|
-
notice: "Verifies that the proof was generated for the given domain and scope"
|
|
2288
|
-
}
|
|
2289
|
-
},
|
|
2290
|
-
version: 1
|
|
2291
|
-
}
|
|
2292
|
-
},
|
|
2293
|
-
settings: {
|
|
2294
|
-
remappings: ["forge-std/=lib/forge-std/src/"],
|
|
2295
|
-
optimizer: { enabled: true, runs: 200 },
|
|
2296
|
-
metadata: { bytecodeHash: "ipfs" },
|
|
2297
|
-
compilationTarget: { "src/ZKPassportVerifier.sol": "ZKPassportVerifier" },
|
|
2298
|
-
evmVersion: "cancun",
|
|
2299
|
-
libraries: {}
|
|
2300
|
-
},
|
|
2301
|
-
sources: {
|
|
2302
|
-
"src/Constants.sol": {
|
|
2303
|
-
keccak256: "0xb1105acee68946ef452b55289a556a42289c3e1e849482d26cb8af4e2447ebdd",
|
|
2304
|
-
urls: [
|
|
2305
|
-
"bzz-raw://4639a621a472a215c320dd3f2d22e08d57028550df503bbffbd7330b57ba9ed8",
|
|
2306
|
-
"dweb:/ipfs/QmfMoxNwnJMBNzHxUByv1eqtaktX1EGFqU2VJ4L1pYidJq"
|
|
2307
|
-
],
|
|
2308
|
-
license: "Apache-2.0"
|
|
2309
|
-
},
|
|
2310
|
-
"src/DateUtils.sol": {
|
|
2311
|
-
keccak256: "0xc04aef2f5732f8c3b28077a0af19e2fbbdec2f9178f3800563bf64ccdecefc77",
|
|
2312
|
-
urls: [
|
|
2313
|
-
"bzz-raw://bcc2610f3bdd3411fc040d39efe9e68f826b48986b2df7987f3adb6a1467c833",
|
|
2314
|
-
"dweb:/ipfs/Qmc7uyW8Y7ekaKEdjd3kU9e1eDcCiAqsujGc5ZavuzGx4w"
|
|
2315
|
-
],
|
|
2316
|
-
license: "Apache-2.0"
|
|
2317
|
-
},
|
|
2318
|
-
"src/IRootRegistry.sol": {
|
|
2319
|
-
keccak256: "0xa9955e80821ca9ccbdf7d05a8ce9a3e237b4771e1f6e09190ed1c803a5e1e516",
|
|
2320
|
-
urls: [
|
|
2321
|
-
"bzz-raw://fd9fc9fbd7057a6bcc16a682e52be9ebd012954898626a11f0a0e8788644789d",
|
|
2322
|
-
"dweb:/ipfs/QmZYpMRHdv4gMCNXCQtGQu8XqRVtNR9Kgkzh7u1YMpvrEB"
|
|
2323
|
-
],
|
|
2324
|
-
license: "MIT"
|
|
2325
|
-
},
|
|
2326
|
-
"src/InputsExtractor.sol": {
|
|
2327
|
-
keccak256: "0x55af333a1ed7cd5a1299f1b0778db0fc2a15f68903e9ae6a6034d24f13da03e7",
|
|
2328
|
-
urls: [
|
|
2329
|
-
"bzz-raw://10ccdb51863cfd11f222ecb3111f0f291aae3a19fdbef6d90233d08f02eab1d5",
|
|
2330
|
-
"dweb:/ipfs/QmebPTX4Dbc5LkhG57YuTjEZgEvCk51ut3ZERZoqeGemsB"
|
|
2331
|
-
],
|
|
2332
|
-
license: "Apache-2.0"
|
|
2333
|
-
},
|
|
2334
|
-
"src/StringUtils.sol": {
|
|
2335
|
-
keccak256: "0x0174454c28003f489bcdf636c93ccb512d80f3dbdca7485e11b51cf2c8ebfff1",
|
|
2336
|
-
urls: [
|
|
2337
|
-
"bzz-raw://92ea71064b8199c9a05cbe279cf42adaaa7b29604d960a84754d3d997b1c2342",
|
|
2338
|
-
"dweb:/ipfs/QmcsrqRJ2YZABCZHzS782RqKmWEegSK1LCmTTjJ94gdh5q"
|
|
2339
|
-
],
|
|
2340
|
-
license: "Apache-2.0"
|
|
2341
|
-
},
|
|
2342
|
-
"src/Types.sol": {
|
|
2343
|
-
keccak256: "0x6cd3120512911d8319b011016e19204c3f2d72b75efc2663cbde807571a5a7f0",
|
|
2344
|
-
urls: [
|
|
2345
|
-
"bzz-raw://ec0c51990097f62145282a34f553465843007d0c86e742652c5ea2c7878e78be",
|
|
2346
|
-
"dweb:/ipfs/QmVUFfqiYGZuwbj5AA4smnSn5KpDyeKpw9iFmRzuK18dVo"
|
|
2347
|
-
],
|
|
2348
|
-
license: "Apache-2.0"
|
|
2349
|
-
},
|
|
2350
|
-
"src/ZKPassportVerifier.sol": {
|
|
2351
|
-
keccak256: "0x692154ad13d61bc9a232b33396888dcbe6f0ff46bbcd261e00ffa49c4afc8728",
|
|
2352
|
-
urls: [
|
|
2353
|
-
"bzz-raw://d1477d1851973999abda47bbb20d4f3120bc50b0ad9a3c5a041b768a2c9d47c3",
|
|
2354
|
-
"dweb:/ipfs/QmZqefNqexmbFbQ7HUJUDwAAMjcDUobNUyhj1tDYj2HU9S"
|
|
2355
|
-
],
|
|
2356
|
-
license: "Apache-2.0"
|
|
2357
|
-
},
|
|
2358
|
-
"src/ultra-honk-verifiers/OuterCount4.sol": {
|
|
2359
|
-
keccak256: "0x9f343e672cd22bb67bda44f4ed5ce7318769dfd65270f52eadf70c12a2377aab",
|
|
2360
|
-
urls: [
|
|
2361
|
-
"bzz-raw://69a1177da0c5a7148676bef2a5e5c58840a66b2e142d2a0d331dca01dd0109ad",
|
|
2362
|
-
"dweb:/ipfs/QmQ6iVmrCNEG6XE3ejP4dgBiw3XhMaGm1hW61z4rj7zsiF"
|
|
2363
|
-
],
|
|
2364
|
-
license: "Apache-2.0"
|
|
2365
|
-
}
|
|
2366
|
-
},
|
|
2367
|
-
version: 1
|
|
2368
|
-
},
|
|
2369
|
-
id: 26
|
|
2370
|
-
};
|
|
2371
|
-
|
|
2372
|
-
// src/index.ts
|
|
2373
26
|
import { RegistryClient } from "@zkpassport/registry";
|
|
2374
27
|
import { Bridge } from "@obsidion/bridge";
|
|
2375
28
|
import {
|
|
@@ -2380,9 +33,6 @@ import {
|
|
|
2380
33
|
ASEAN_COUNTRIES,
|
|
2381
34
|
MERCOSUR_COUNTRIES
|
|
2382
35
|
} from "@zkpassport/utils";
|
|
2383
|
-
var VERSION = "0.8.7";
|
|
2384
|
-
var DEFAULT_DATE_VALUE = /* @__PURE__ */ new Date(0);
|
|
2385
|
-
var DEFAULT_VALIDITY = 7 * 24 * 60 * 60;
|
|
2386
36
|
if (typeof globalThis.Buffer === "undefined") {
|
|
2387
37
|
globalThis.Buffer = Buffer;
|
|
2388
38
|
if (typeof window !== "undefined") {
|
|
@@ -2770,1856 +420,6 @@ var ZKPassport = class {
|
|
|
2770
420
|
});
|
|
2771
421
|
return this.getZkPassportRequest(topic);
|
|
2772
422
|
}
|
|
2773
|
-
checkDiscloseBytesPublicInputs(proof, queryResult) {
|
|
2774
|
-
const queryResultErrors = {};
|
|
2775
|
-
let isCorrect = true;
|
|
2776
|
-
const disclosedDataPassport = DisclosedData.fromDisclosedBytes(
|
|
2777
|
-
(proof.committedInputs?.disclose_bytes).disclosedBytes,
|
|
2778
|
-
"passport"
|
|
2779
|
-
);
|
|
2780
|
-
const disclosedDataIDCard = DisclosedData.fromDisclosedBytes(
|
|
2781
|
-
(proof.committedInputs?.disclose_bytes).disclosedBytes,
|
|
2782
|
-
"id_card"
|
|
2783
|
-
);
|
|
2784
|
-
if (queryResult.document_type) {
|
|
2785
|
-
if (queryResult.document_type.eq && queryResult.document_type.eq.result && queryResult.document_type.eq.expected !== disclosedDataPassport.documentType) {
|
|
2786
|
-
console.warn("Document type does not match the expected document type");
|
|
2787
|
-
isCorrect = false;
|
|
2788
|
-
queryResultErrors.document_type = {
|
|
2789
|
-
...queryResultErrors.document_type,
|
|
2790
|
-
eq: {
|
|
2791
|
-
expected: `${queryResult.document_type.eq.expected}`,
|
|
2792
|
-
received: `${disclosedDataPassport.documentType ?? disclosedDataIDCard.documentType}`,
|
|
2793
|
-
message: "Document type does not match the expected document type"
|
|
2794
|
-
}
|
|
2795
|
-
};
|
|
2796
|
-
}
|
|
2797
|
-
if (queryResult.document_type.disclose?.result !== disclosedDataIDCard.documentType) {
|
|
2798
|
-
console.warn("Document type does not match the disclosed document type in query result");
|
|
2799
|
-
isCorrect = false;
|
|
2800
|
-
queryResultErrors.document_type = {
|
|
2801
|
-
...queryResultErrors.document_type,
|
|
2802
|
-
disclose: {
|
|
2803
|
-
expected: `${queryResult.document_type.disclose?.result}`,
|
|
2804
|
-
received: `${disclosedDataIDCard.documentType ?? disclosedDataPassport.documentType}`,
|
|
2805
|
-
message: "Document type does not match the disclosed document type in query result"
|
|
2806
|
-
}
|
|
2807
|
-
};
|
|
2808
|
-
}
|
|
2809
|
-
}
|
|
2810
|
-
if (queryResult.birthdate) {
|
|
2811
|
-
const birthdatePassport = disclosedDataPassport.dateOfBirth;
|
|
2812
|
-
const birthdateIDCard = disclosedDataIDCard.dateOfBirth;
|
|
2813
|
-
if (queryResult.birthdate.eq && queryResult.birthdate.eq.result && !areDatesEqual(queryResult.birthdate.eq.expected, birthdatePassport) && !areDatesEqual(queryResult.birthdate.eq.expected, birthdateIDCard)) {
|
|
2814
|
-
console.warn("Birthdate does not match the expected birthdate");
|
|
2815
|
-
isCorrect = false;
|
|
2816
|
-
queryResultErrors.birthdate = {
|
|
2817
|
-
...queryResultErrors.birthdate,
|
|
2818
|
-
eq: {
|
|
2819
|
-
expected: `${queryResult.birthdate.eq.expected.toISOString()}`,
|
|
2820
|
-
received: `${birthdatePassport?.toISOString() ?? birthdateIDCard?.toISOString()}`,
|
|
2821
|
-
message: "Birthdate does not match the expected birthdate"
|
|
2822
|
-
}
|
|
2823
|
-
};
|
|
2824
|
-
}
|
|
2825
|
-
if (queryResult.birthdate.disclose && !areDatesEqual(queryResult.birthdate.disclose.result, birthdatePassport) && !areDatesEqual(queryResult.birthdate.disclose.result, birthdateIDCard)) {
|
|
2826
|
-
console.warn("Birthdate does not match the disclosed birthdate in query result");
|
|
2827
|
-
isCorrect = false;
|
|
2828
|
-
queryResultErrors.birthdate = {
|
|
2829
|
-
...queryResultErrors.birthdate,
|
|
2830
|
-
disclose: {
|
|
2831
|
-
expected: `${queryResult.birthdate.disclose.result.toISOString()}`,
|
|
2832
|
-
received: `${birthdatePassport?.toISOString() ?? birthdateIDCard?.toISOString()}`,
|
|
2833
|
-
message: "Birthdate does not match the disclosed birthdate in query result"
|
|
2834
|
-
}
|
|
2835
|
-
};
|
|
2836
|
-
}
|
|
2837
|
-
}
|
|
2838
|
-
if (queryResult.expiry_date) {
|
|
2839
|
-
const expiryDatePassport = disclosedDataPassport.dateOfExpiry;
|
|
2840
|
-
const expiryDateIDCard = disclosedDataIDCard.dateOfExpiry;
|
|
2841
|
-
if (queryResult.expiry_date.eq && queryResult.expiry_date.eq.result && !areDatesEqual(queryResult.expiry_date.eq.expected, expiryDatePassport) && !areDatesEqual(queryResult.expiry_date.eq.expected, expiryDateIDCard)) {
|
|
2842
|
-
console.warn("Expiry date does not match the expected expiry date");
|
|
2843
|
-
isCorrect = false;
|
|
2844
|
-
queryResultErrors.expiry_date = {
|
|
2845
|
-
...queryResultErrors.expiry_date,
|
|
2846
|
-
eq: {
|
|
2847
|
-
expected: `${queryResult.expiry_date.eq.expected.toISOString()}`,
|
|
2848
|
-
received: `${expiryDatePassport?.toISOString() ?? expiryDateIDCard?.toISOString()}`,
|
|
2849
|
-
message: "Expiry date does not match the expected expiry date"
|
|
2850
|
-
}
|
|
2851
|
-
};
|
|
2852
|
-
}
|
|
2853
|
-
if (queryResult.expiry_date.disclose && !areDatesEqual(queryResult.expiry_date.disclose.result, expiryDatePassport) && !areDatesEqual(queryResult.expiry_date.disclose.result, expiryDateIDCard)) {
|
|
2854
|
-
console.warn("Expiry date does not match the disclosed expiry date in query result");
|
|
2855
|
-
isCorrect = false;
|
|
2856
|
-
queryResultErrors.expiry_date = {
|
|
2857
|
-
...queryResultErrors.expiry_date,
|
|
2858
|
-
disclose: {
|
|
2859
|
-
expected: `${queryResult.expiry_date.disclose.result.toISOString()}`,
|
|
2860
|
-
received: `${expiryDatePassport?.toISOString() ?? expiryDateIDCard?.toISOString()}`,
|
|
2861
|
-
message: "Expiry date does not match the disclosed expiry date in query result"
|
|
2862
|
-
}
|
|
2863
|
-
};
|
|
2864
|
-
}
|
|
2865
|
-
}
|
|
2866
|
-
if (queryResult.nationality) {
|
|
2867
|
-
const nationalityPassport = disclosedDataPassport.nationality;
|
|
2868
|
-
const nationalityIDCard = disclosedDataIDCard.nationality;
|
|
2869
|
-
if (queryResult.nationality.eq && queryResult.nationality.eq.result && queryResult.nationality.eq.expected !== nationalityPassport && queryResult.nationality.eq.expected !== nationalityIDCard) {
|
|
2870
|
-
console.warn("Nationality does not match the expected nationality");
|
|
2871
|
-
isCorrect = false;
|
|
2872
|
-
queryResultErrors.nationality = {
|
|
2873
|
-
...queryResultErrors.nationality,
|
|
2874
|
-
eq: {
|
|
2875
|
-
expected: `${queryResult.nationality.eq.expected}`,
|
|
2876
|
-
received: `${nationalityPassport ?? nationalityIDCard}`,
|
|
2877
|
-
message: "Nationality does not match the expected nationality"
|
|
2878
|
-
}
|
|
2879
|
-
};
|
|
2880
|
-
}
|
|
2881
|
-
if (queryResult.nationality.disclose && queryResult.nationality.disclose.result !== nationalityPassport && queryResult.nationality.disclose.result !== nationalityIDCard) {
|
|
2882
|
-
console.warn("Nationality does not match the disclosed nationality in query result");
|
|
2883
|
-
isCorrect = false;
|
|
2884
|
-
queryResultErrors.nationality = {
|
|
2885
|
-
...queryResultErrors.nationality,
|
|
2886
|
-
disclose: {
|
|
2887
|
-
expected: `${queryResult.nationality.disclose.result}`,
|
|
2888
|
-
received: `${nationalityPassport ?? nationalityIDCard}`,
|
|
2889
|
-
message: "Nationality does not match the disclosed nationality in query result"
|
|
2890
|
-
}
|
|
2891
|
-
};
|
|
2892
|
-
}
|
|
2893
|
-
}
|
|
2894
|
-
if (queryResult.document_number) {
|
|
2895
|
-
const documentNumberPassport = disclosedDataPassport.documentNumber;
|
|
2896
|
-
const documentNumberIDCard = disclosedDataIDCard.documentNumber;
|
|
2897
|
-
if (queryResult.document_number.eq && queryResult.document_number.eq.result && queryResult.document_number.eq.expected !== documentNumberPassport && queryResult.document_number.eq.expected !== documentNumberIDCard) {
|
|
2898
|
-
console.warn("Document number does not match the expected document number");
|
|
2899
|
-
isCorrect = false;
|
|
2900
|
-
queryResultErrors.document_number = {
|
|
2901
|
-
...queryResultErrors.document_number,
|
|
2902
|
-
eq: {
|
|
2903
|
-
expected: `${queryResult.document_number.eq.expected}`,
|
|
2904
|
-
received: `${documentNumberPassport ?? documentNumberIDCard}`,
|
|
2905
|
-
message: "Document number does not match the expected document number"
|
|
2906
|
-
}
|
|
2907
|
-
};
|
|
2908
|
-
}
|
|
2909
|
-
if (queryResult.document_number.disclose && queryResult.document_number.disclose.result !== documentNumberPassport && queryResult.document_number.disclose.result !== documentNumberIDCard) {
|
|
2910
|
-
console.warn("Document number does not match the disclosed document number in query result");
|
|
2911
|
-
isCorrect = false;
|
|
2912
|
-
queryResultErrors.document_number = {
|
|
2913
|
-
...queryResultErrors.document_number,
|
|
2914
|
-
disclose: {
|
|
2915
|
-
expected: `${queryResult.document_number.disclose.result}`,
|
|
2916
|
-
received: `${documentNumberPassport ?? documentNumberIDCard}`,
|
|
2917
|
-
message: "Document number does not match the disclosed document number in query result"
|
|
2918
|
-
}
|
|
2919
|
-
};
|
|
2920
|
-
}
|
|
2921
|
-
}
|
|
2922
|
-
if (queryResult.gender) {
|
|
2923
|
-
const genderPassport = disclosedDataPassport.gender;
|
|
2924
|
-
const genderIDCard = disclosedDataIDCard.gender;
|
|
2925
|
-
if (queryResult.gender.eq && queryResult.gender.eq.result && queryResult.gender.eq.expected !== genderPassport && queryResult.gender.eq.expected !== genderIDCard) {
|
|
2926
|
-
console.warn("Gender does not match the expected gender");
|
|
2927
|
-
isCorrect = false;
|
|
2928
|
-
queryResultErrors.gender = {
|
|
2929
|
-
...queryResultErrors.gender,
|
|
2930
|
-
eq: {
|
|
2931
|
-
expected: `${queryResult.gender.eq.expected}`,
|
|
2932
|
-
received: `${genderPassport ?? genderIDCard}`,
|
|
2933
|
-
message: "Gender does not match the expected gender"
|
|
2934
|
-
}
|
|
2935
|
-
};
|
|
2936
|
-
}
|
|
2937
|
-
if (queryResult.gender.disclose && queryResult.gender.disclose.result !== genderPassport && queryResult.gender.disclose.result !== genderIDCard) {
|
|
2938
|
-
console.warn("Gender does not match the disclosed gender in query result");
|
|
2939
|
-
isCorrect = false;
|
|
2940
|
-
queryResultErrors.gender = {
|
|
2941
|
-
...queryResultErrors.gender,
|
|
2942
|
-
disclose: {
|
|
2943
|
-
expected: `${queryResult.gender.disclose.result}`,
|
|
2944
|
-
received: `${genderPassport ?? genderIDCard}`,
|
|
2945
|
-
message: "Gender does not match the disclosed gender in query result"
|
|
2946
|
-
}
|
|
2947
|
-
};
|
|
2948
|
-
}
|
|
2949
|
-
}
|
|
2950
|
-
if (queryResult.issuing_country) {
|
|
2951
|
-
const issuingCountryPassport = disclosedDataPassport.issuingCountry;
|
|
2952
|
-
const issuingCountryIDCard = disclosedDataIDCard.issuingCountry;
|
|
2953
|
-
if (queryResult.issuing_country.eq && queryResult.issuing_country.eq.result && queryResult.issuing_country.eq.expected !== issuingCountryPassport && queryResult.issuing_country.eq.expected !== issuingCountryIDCard) {
|
|
2954
|
-
console.warn("Issuing country does not match the expected issuing country");
|
|
2955
|
-
isCorrect = false;
|
|
2956
|
-
queryResultErrors.issuing_country = {
|
|
2957
|
-
...queryResultErrors.issuing_country,
|
|
2958
|
-
eq: {
|
|
2959
|
-
expected: `${queryResult.issuing_country.eq.expected}`,
|
|
2960
|
-
received: `${issuingCountryPassport ?? issuingCountryIDCard}`,
|
|
2961
|
-
message: "Issuing country does not match the expected issuing country"
|
|
2962
|
-
}
|
|
2963
|
-
};
|
|
2964
|
-
}
|
|
2965
|
-
if (queryResult.issuing_country.disclose && queryResult.issuing_country.disclose.result !== issuingCountryPassport && queryResult.issuing_country.disclose.result !== issuingCountryIDCard) {
|
|
2966
|
-
console.warn("Issuing country does not match the disclosed issuing country in query result");
|
|
2967
|
-
isCorrect = false;
|
|
2968
|
-
queryResultErrors.issuing_country = {
|
|
2969
|
-
...queryResultErrors.issuing_country,
|
|
2970
|
-
disclose: {
|
|
2971
|
-
expected: `${queryResult.issuing_country.disclose.result}`,
|
|
2972
|
-
received: `${issuingCountryPassport ?? issuingCountryIDCard}`,
|
|
2973
|
-
message: "Issuing country does not match the disclosed issuing country in query result"
|
|
2974
|
-
}
|
|
2975
|
-
};
|
|
2976
|
-
}
|
|
2977
|
-
}
|
|
2978
|
-
if (queryResult.fullname) {
|
|
2979
|
-
const fullnamePassport = disclosedDataPassport.name;
|
|
2980
|
-
const fullnameIDCard = disclosedDataIDCard.name;
|
|
2981
|
-
if (queryResult.fullname.eq && queryResult.fullname.eq.result && formatName(queryResult.fullname.eq.expected).toLowerCase() !== fullnamePassport.toLowerCase() && formatName(queryResult.fullname.eq.expected).toLowerCase() !== fullnameIDCard.toLowerCase()) {
|
|
2982
|
-
console.warn("Fullname does not match the expected fullname");
|
|
2983
|
-
isCorrect = false;
|
|
2984
|
-
queryResultErrors.fullname = {
|
|
2985
|
-
...queryResultErrors.fullname,
|
|
2986
|
-
eq: {
|
|
2987
|
-
expected: `${queryResult.fullname.eq.expected}`,
|
|
2988
|
-
received: `${fullnamePassport ?? fullnameIDCard}`,
|
|
2989
|
-
message: "Fullname does not match the expected fullname"
|
|
2990
|
-
}
|
|
2991
|
-
};
|
|
2992
|
-
}
|
|
2993
|
-
if (queryResult.fullname.disclose && formatName(queryResult.fullname.disclose.result).toLowerCase() !== fullnamePassport.toLowerCase() && formatName(queryResult.fullname.disclose.result).toLowerCase() !== fullnameIDCard.toLowerCase()) {
|
|
2994
|
-
console.warn("Fullname does not match the disclosed fullname in query result");
|
|
2995
|
-
isCorrect = false;
|
|
2996
|
-
queryResultErrors.fullname = {
|
|
2997
|
-
...queryResultErrors.fullname,
|
|
2998
|
-
disclose: {
|
|
2999
|
-
expected: `${queryResult.fullname.disclose.result}`,
|
|
3000
|
-
received: `${fullnamePassport ?? fullnameIDCard}`,
|
|
3001
|
-
message: "Fullname does not match the disclosed fullname in query result"
|
|
3002
|
-
}
|
|
3003
|
-
};
|
|
3004
|
-
}
|
|
3005
|
-
}
|
|
3006
|
-
if (queryResult.firstname) {
|
|
3007
|
-
const firstnamePassport = disclosedDataPassport.firstName && disclosedDataPassport.firstName.length > 0 ? disclosedDataPassport.firstName : disclosedDataPassport.name;
|
|
3008
|
-
const firstnameIDCard = disclosedDataIDCard.firstName && disclosedDataIDCard.firstName.length > 0 ? disclosedDataIDCard.firstName : disclosedDataIDCard.name;
|
|
3009
|
-
if (queryResult.firstname.eq && queryResult.firstname.eq.result && formatName(queryResult.firstname.eq.expected).toLowerCase() !== firstnamePassport.toLowerCase() && formatName(queryResult.firstname.eq.expected).toLowerCase() !== firstnameIDCard.toLowerCase()) {
|
|
3010
|
-
console.warn("Firstname does not match the expected firstname");
|
|
3011
|
-
isCorrect = false;
|
|
3012
|
-
queryResultErrors.firstname = {
|
|
3013
|
-
...queryResultErrors.firstname,
|
|
3014
|
-
eq: {
|
|
3015
|
-
expected: `${queryResult.firstname.eq.expected}`,
|
|
3016
|
-
received: `${firstnamePassport ?? firstnameIDCard}`,
|
|
3017
|
-
message: "Firstname does not match the expected firstname"
|
|
3018
|
-
}
|
|
3019
|
-
};
|
|
3020
|
-
}
|
|
3021
|
-
if (queryResult.firstname.disclose && formatName(queryResult.firstname.disclose.result).toLowerCase() !== firstnamePassport.toLowerCase() && formatName(queryResult.firstname.disclose.result).toLowerCase() !== firstnameIDCard.toLowerCase()) {
|
|
3022
|
-
console.warn("Firstname does not match the disclosed firstname in query result");
|
|
3023
|
-
isCorrect = false;
|
|
3024
|
-
queryResultErrors.firstname = {
|
|
3025
|
-
...queryResultErrors.firstname,
|
|
3026
|
-
disclose: {
|
|
3027
|
-
expected: `${queryResult.firstname.disclose.result}`,
|
|
3028
|
-
received: `${firstnamePassport ?? firstnameIDCard}`,
|
|
3029
|
-
message: "Firstname does not match the disclosed firstname in query result"
|
|
3030
|
-
}
|
|
3031
|
-
};
|
|
3032
|
-
}
|
|
3033
|
-
}
|
|
3034
|
-
if (queryResult.lastname) {
|
|
3035
|
-
const lastnamePassport = disclosedDataPassport.lastName && disclosedDataPassport.lastName.length > 0 ? disclosedDataPassport.lastName : disclosedDataPassport.name;
|
|
3036
|
-
const lastnameIDCard = disclosedDataIDCard.lastName && disclosedDataIDCard.lastName.length > 0 ? disclosedDataIDCard.lastName : disclosedDataIDCard.name;
|
|
3037
|
-
if (queryResult.lastname.eq && queryResult.lastname.eq.result && formatName(queryResult.lastname.eq.expected).toLowerCase() !== lastnamePassport.toLowerCase() && formatName(queryResult.lastname.eq.expected).toLowerCase() !== lastnameIDCard.toLowerCase()) {
|
|
3038
|
-
console.warn("Lastname does not match the expected lastname");
|
|
3039
|
-
isCorrect = false;
|
|
3040
|
-
queryResultErrors.lastname = {
|
|
3041
|
-
...queryResultErrors.lastname,
|
|
3042
|
-
eq: {
|
|
3043
|
-
expected: `${queryResult.lastname.eq.expected}`,
|
|
3044
|
-
received: `${lastnamePassport ?? lastnameIDCard}`,
|
|
3045
|
-
message: "Lastname does not match the expected lastname"
|
|
3046
|
-
}
|
|
3047
|
-
};
|
|
3048
|
-
}
|
|
3049
|
-
if (queryResult.lastname.disclose && formatName(queryResult.lastname.disclose.result).toLowerCase() !== lastnamePassport.toLowerCase() && formatName(queryResult.lastname.disclose.result).toLowerCase() !== lastnameIDCard.toLowerCase()) {
|
|
3050
|
-
console.warn("Lastname does not match the disclosed lastname in query result");
|
|
3051
|
-
isCorrect = false;
|
|
3052
|
-
queryResultErrors.lastname = {
|
|
3053
|
-
...queryResultErrors.lastname,
|
|
3054
|
-
disclose: {
|
|
3055
|
-
expected: `${queryResult.lastname.disclose.result}`,
|
|
3056
|
-
received: `${lastnamePassport ?? lastnameIDCard}`,
|
|
3057
|
-
message: "Lastname does not match the disclosed lastname in query result"
|
|
3058
|
-
}
|
|
3059
|
-
};
|
|
3060
|
-
}
|
|
3061
|
-
}
|
|
3062
|
-
return { isCorrect, queryResultErrors };
|
|
3063
|
-
}
|
|
3064
|
-
checkAgePublicInputs(proof, queryResult) {
|
|
3065
|
-
const queryResultErrors = {};
|
|
3066
|
-
let isCorrect = true;
|
|
3067
|
-
const currentTime = /* @__PURE__ */ new Date();
|
|
3068
|
-
const today = new Date(
|
|
3069
|
-
currentTime.getFullYear(),
|
|
3070
|
-
currentTime.getMonth(),
|
|
3071
|
-
currentTime.getDate(),
|
|
3072
|
-
0,
|
|
3073
|
-
0,
|
|
3074
|
-
0,
|
|
3075
|
-
0
|
|
3076
|
-
);
|
|
3077
|
-
const minAge = getMinAgeFromCommittedInputs(
|
|
3078
|
-
proof.committedInputs?.compare_age
|
|
3079
|
-
);
|
|
3080
|
-
const maxAge = getMaxAgeFromCommittedInputs(
|
|
3081
|
-
proof.committedInputs?.compare_age
|
|
3082
|
-
);
|
|
3083
|
-
if (queryResult.age) {
|
|
3084
|
-
if (queryResult.age.gte && queryResult.age.gte.result && minAge !== queryResult.age.gte.expected) {
|
|
3085
|
-
console.warn("Age is not greater than or equal to the expected age");
|
|
3086
|
-
isCorrect = false;
|
|
3087
|
-
queryResultErrors.age = {
|
|
3088
|
-
...queryResultErrors.age,
|
|
3089
|
-
gte: {
|
|
3090
|
-
expected: queryResult.age.gte.expected,
|
|
3091
|
-
received: minAge,
|
|
3092
|
-
message: "Age is not greater than or equal to the expected age"
|
|
3093
|
-
}
|
|
3094
|
-
};
|
|
3095
|
-
}
|
|
3096
|
-
if (queryResult.age.lt && queryResult.age.lt.result && maxAge !== queryResult.age.lt.expected) {
|
|
3097
|
-
console.warn("Age is not less than the expected age");
|
|
3098
|
-
isCorrect = false;
|
|
3099
|
-
queryResultErrors.age = {
|
|
3100
|
-
...queryResultErrors.age,
|
|
3101
|
-
lt: {
|
|
3102
|
-
expected: queryResult.age.lt.expected,
|
|
3103
|
-
received: maxAge,
|
|
3104
|
-
message: "Age is not less than the expected age"
|
|
3105
|
-
}
|
|
3106
|
-
};
|
|
3107
|
-
}
|
|
3108
|
-
if (queryResult.age.range) {
|
|
3109
|
-
if (queryResult.age.range.result && (minAge !== queryResult.age.range.expected[0] || maxAge !== queryResult.age.range.expected[1])) {
|
|
3110
|
-
console.warn("Age is not in the expected range");
|
|
3111
|
-
isCorrect = false;
|
|
3112
|
-
queryResultErrors.age = {
|
|
3113
|
-
...queryResultErrors.age,
|
|
3114
|
-
range: {
|
|
3115
|
-
expected: queryResult.age.range.expected,
|
|
3116
|
-
received: [minAge, maxAge],
|
|
3117
|
-
message: "Age is not in the expected range"
|
|
3118
|
-
}
|
|
3119
|
-
};
|
|
3120
|
-
}
|
|
3121
|
-
}
|
|
3122
|
-
if (!queryResult.age.lt && !queryResult.age.lte && !queryResult.age.eq && !queryResult.age.range && maxAge != 0) {
|
|
3123
|
-
console.warn("Maximum age should be equal to 0");
|
|
3124
|
-
isCorrect = false;
|
|
3125
|
-
queryResultErrors.age = {
|
|
3126
|
-
...queryResultErrors.age,
|
|
3127
|
-
disclose: {
|
|
3128
|
-
expected: 0,
|
|
3129
|
-
received: maxAge,
|
|
3130
|
-
message: "Maximum age should be equal to 0"
|
|
3131
|
-
}
|
|
3132
|
-
};
|
|
3133
|
-
}
|
|
3134
|
-
if (!queryResult.age.gte && !queryResult.age.gt && !queryResult.age.eq && !queryResult.age.range && minAge != 0) {
|
|
3135
|
-
console.warn("Minimum age should be equal to 0");
|
|
3136
|
-
isCorrect = false;
|
|
3137
|
-
queryResultErrors.age = {
|
|
3138
|
-
...queryResultErrors.age,
|
|
3139
|
-
disclose: {
|
|
3140
|
-
expected: 0,
|
|
3141
|
-
received: minAge,
|
|
3142
|
-
message: "Minimum age should be equal to 0"
|
|
3143
|
-
}
|
|
3144
|
-
};
|
|
3145
|
-
}
|
|
3146
|
-
if (queryResult.age.disclose && (queryResult.age.disclose.result !== minAge || queryResult.age.disclose.result !== maxAge)) {
|
|
3147
|
-
console.warn("Age does not match the disclosed age in query result");
|
|
3148
|
-
isCorrect = false;
|
|
3149
|
-
queryResultErrors.age = {
|
|
3150
|
-
...queryResultErrors.age,
|
|
3151
|
-
disclose: {
|
|
3152
|
-
expected: `${minAge}`,
|
|
3153
|
-
received: `${queryResult.age.disclose.result}`,
|
|
3154
|
-
message: "Age does not match the disclosed age in query result"
|
|
3155
|
-
}
|
|
3156
|
-
};
|
|
3157
|
-
}
|
|
3158
|
-
} else {
|
|
3159
|
-
console.warn("Age is not set in the query result");
|
|
3160
|
-
isCorrect = false;
|
|
3161
|
-
queryResultErrors.age = {
|
|
3162
|
-
...queryResultErrors.age,
|
|
3163
|
-
disclose: {
|
|
3164
|
-
message: "Age is not set in the query result"
|
|
3165
|
-
}
|
|
3166
|
-
};
|
|
3167
|
-
}
|
|
3168
|
-
const currentDate = getCurrentDateFromCommittedInputs(
|
|
3169
|
-
proof.committedInputs?.compare_age
|
|
3170
|
-
);
|
|
3171
|
-
if (!areDatesEqual(currentDate, today) && !areDatesEqual(currentDate, today.getTime() - 864e5)) {
|
|
3172
|
-
console.warn("Current date in the proof is too old");
|
|
3173
|
-
isCorrect = false;
|
|
3174
|
-
queryResultErrors.age = {
|
|
3175
|
-
...queryResultErrors.age,
|
|
3176
|
-
disclose: {
|
|
3177
|
-
expected: `${today.toISOString()}`,
|
|
3178
|
-
received: `${currentDate.toISOString()}`,
|
|
3179
|
-
message: "Current date in the proof is too old"
|
|
3180
|
-
}
|
|
3181
|
-
};
|
|
3182
|
-
}
|
|
3183
|
-
return { isCorrect, queryResultErrors };
|
|
3184
|
-
}
|
|
3185
|
-
checkBirthdatePublicInputs(proof, queryResult) {
|
|
3186
|
-
const queryResultErrors = {};
|
|
3187
|
-
let isCorrect = true;
|
|
3188
|
-
const currentTime = /* @__PURE__ */ new Date();
|
|
3189
|
-
const today = new Date(
|
|
3190
|
-
currentTime.getFullYear(),
|
|
3191
|
-
currentTime.getMonth(),
|
|
3192
|
-
currentTime.getDate(),
|
|
3193
|
-
0,
|
|
3194
|
-
0,
|
|
3195
|
-
0
|
|
3196
|
-
);
|
|
3197
|
-
const minDate = getBirthdateMinDateTimestamp(
|
|
3198
|
-
proof.committedInputs?.compare_birthdate,
|
|
3199
|
-
-1 * SECONDS_BETWEEN_1900_AND_1970
|
|
3200
|
-
);
|
|
3201
|
-
const maxDate = getBirthdateMaxDateTimestamp(
|
|
3202
|
-
proof.committedInputs?.compare_birthdate,
|
|
3203
|
-
-1 * SECONDS_BETWEEN_1900_AND_1970
|
|
3204
|
-
);
|
|
3205
|
-
const currentDate = getCurrentDateFromCommittedInputs(
|
|
3206
|
-
proof.committedInputs?.compare_birthdate
|
|
3207
|
-
);
|
|
3208
|
-
if (queryResult.birthdate) {
|
|
3209
|
-
if (queryResult.birthdate.gte && queryResult.birthdate.gte.result && !areDatesEqual(minDate, queryResult.birthdate.gte.expected)) {
|
|
3210
|
-
console.warn("Birthdate is not greater than or equal to the expected birthdate");
|
|
3211
|
-
isCorrect = false;
|
|
3212
|
-
queryResultErrors.birthdate = {
|
|
3213
|
-
...queryResultErrors.birthdate,
|
|
3214
|
-
gte: {
|
|
3215
|
-
expected: queryResult.birthdate.gte.expected,
|
|
3216
|
-
received: minDate,
|
|
3217
|
-
message: "Birthdate is not greater than or equal to the expected birthdate"
|
|
3218
|
-
}
|
|
3219
|
-
};
|
|
3220
|
-
}
|
|
3221
|
-
if (queryResult.birthdate.lte && queryResult.birthdate.lte.result && !areDatesEqual(maxDate, queryResult.birthdate.lte.expected)) {
|
|
3222
|
-
console.warn("Birthdate is not less than the expected birthdate");
|
|
3223
|
-
isCorrect = false;
|
|
3224
|
-
queryResultErrors.birthdate = {
|
|
3225
|
-
...queryResultErrors.birthdate,
|
|
3226
|
-
lte: {
|
|
3227
|
-
expected: queryResult.birthdate.lte.expected,
|
|
3228
|
-
received: maxDate,
|
|
3229
|
-
message: "Birthdate is not less than the expected birthdate"
|
|
3230
|
-
}
|
|
3231
|
-
};
|
|
3232
|
-
}
|
|
3233
|
-
if (queryResult.birthdate.range) {
|
|
3234
|
-
if (queryResult.birthdate.range.result && (!areDatesEqual(minDate, queryResult.birthdate.range.expected[0]) || !areDatesEqual(maxDate, queryResult.birthdate.range.expected[1]))) {
|
|
3235
|
-
console.warn("Birthdate is not in the expected range");
|
|
3236
|
-
isCorrect = false;
|
|
3237
|
-
queryResultErrors.birthdate = {
|
|
3238
|
-
...queryResultErrors.birthdate,
|
|
3239
|
-
range: {
|
|
3240
|
-
expected: queryResult.birthdate.range.expected,
|
|
3241
|
-
received: [minDate, maxDate],
|
|
3242
|
-
message: "Birthdate is not in the expected range"
|
|
3243
|
-
}
|
|
3244
|
-
};
|
|
3245
|
-
}
|
|
3246
|
-
}
|
|
3247
|
-
if (!queryResult.birthdate.lte && !queryResult.birthdate.lt && !queryResult.birthdate.eq && !queryResult.birthdate.range && !areDatesEqual(maxDate, DEFAULT_DATE_VALUE)) {
|
|
3248
|
-
console.warn("Maximum birthdate should be equal to default date value");
|
|
3249
|
-
isCorrect = false;
|
|
3250
|
-
queryResultErrors.birthdate = {
|
|
3251
|
-
...queryResultErrors.birthdate,
|
|
3252
|
-
disclose: {
|
|
3253
|
-
expected: `${DEFAULT_DATE_VALUE.toISOString()}`,
|
|
3254
|
-
received: `${maxDate.toISOString()}`,
|
|
3255
|
-
message: "Maximum birthdate should be equal to default date value"
|
|
3256
|
-
}
|
|
3257
|
-
};
|
|
3258
|
-
}
|
|
3259
|
-
if (!queryResult.birthdate.gte && !queryResult.birthdate.gt && !queryResult.birthdate.eq && !queryResult.birthdate.range && !areDatesEqual(minDate, DEFAULT_DATE_VALUE)) {
|
|
3260
|
-
console.warn("Minimum birthdate should be equal to default date value");
|
|
3261
|
-
isCorrect = false;
|
|
3262
|
-
queryResultErrors.birthdate = {
|
|
3263
|
-
...queryResultErrors.birthdate,
|
|
3264
|
-
disclose: {
|
|
3265
|
-
expected: `${DEFAULT_DATE_VALUE.toISOString()}`,
|
|
3266
|
-
received: `${minDate.toISOString()}`,
|
|
3267
|
-
message: "Minimum birthdate should be equal to default date value"
|
|
3268
|
-
}
|
|
3269
|
-
};
|
|
3270
|
-
}
|
|
3271
|
-
} else {
|
|
3272
|
-
console.warn("Birthdate is not set in the query result");
|
|
3273
|
-
isCorrect = false;
|
|
3274
|
-
queryResultErrors.birthdate = {
|
|
3275
|
-
...queryResultErrors.birthdate,
|
|
3276
|
-
disclose: {
|
|
3277
|
-
message: "Birthdate is not set in the query result"
|
|
3278
|
-
}
|
|
3279
|
-
};
|
|
3280
|
-
}
|
|
3281
|
-
if (!areDatesEqual(currentDate, today) && !areDatesEqual(currentDate, today.getTime() - 864e5)) {
|
|
3282
|
-
console.warn("Current date in the proof is too old");
|
|
3283
|
-
isCorrect = false;
|
|
3284
|
-
queryResultErrors.birthdate = {
|
|
3285
|
-
...queryResultErrors.birthdate,
|
|
3286
|
-
disclose: {
|
|
3287
|
-
expected: `${today.toISOString()}`,
|
|
3288
|
-
received: `${currentDate.toISOString()}`,
|
|
3289
|
-
message: "Current date in the proof is too old"
|
|
3290
|
-
}
|
|
3291
|
-
};
|
|
3292
|
-
}
|
|
3293
|
-
return { isCorrect, queryResultErrors };
|
|
3294
|
-
}
|
|
3295
|
-
checkExpiryDatePublicInputs(proof, queryResult) {
|
|
3296
|
-
const queryResultErrors = {};
|
|
3297
|
-
let isCorrect = true;
|
|
3298
|
-
const currentTime = /* @__PURE__ */ new Date();
|
|
3299
|
-
const today = new Date(
|
|
3300
|
-
currentTime.getFullYear(),
|
|
3301
|
-
currentTime.getMonth(),
|
|
3302
|
-
currentTime.getDate(),
|
|
3303
|
-
0,
|
|
3304
|
-
0,
|
|
3305
|
-
0
|
|
3306
|
-
);
|
|
3307
|
-
const minDate = getMinDateFromCommittedInputs(
|
|
3308
|
-
proof.committedInputs?.compare_expiry
|
|
3309
|
-
);
|
|
3310
|
-
const maxDate = getMaxDateFromCommittedInputs(
|
|
3311
|
-
proof.committedInputs?.compare_expiry
|
|
3312
|
-
);
|
|
3313
|
-
const currentDate = getCurrentDateFromCommittedInputs(
|
|
3314
|
-
proof.committedInputs?.compare_expiry
|
|
3315
|
-
);
|
|
3316
|
-
if (queryResult.expiry_date) {
|
|
3317
|
-
if (queryResult.expiry_date.gte && queryResult.expiry_date.gte.result && !areDatesEqual(minDate, queryResult.expiry_date.gte.expected)) {
|
|
3318
|
-
console.warn("Expiry date is not greater than or equal to the expected expiry date");
|
|
3319
|
-
isCorrect = false;
|
|
3320
|
-
queryResultErrors.expiry_date = {
|
|
3321
|
-
...queryResultErrors.expiry_date,
|
|
3322
|
-
gte: {
|
|
3323
|
-
expected: queryResult.expiry_date.gte.expected,
|
|
3324
|
-
received: minDate,
|
|
3325
|
-
message: "Expiry date is not greater than or equal to the expected expiry date"
|
|
3326
|
-
}
|
|
3327
|
-
};
|
|
3328
|
-
}
|
|
3329
|
-
if (queryResult.expiry_date.lte && queryResult.expiry_date.lte.result && !areDatesEqual(maxDate, queryResult.expiry_date.lte.expected)) {
|
|
3330
|
-
console.warn("Expiry date is not less than the expected expiry date");
|
|
3331
|
-
isCorrect = false;
|
|
3332
|
-
queryResultErrors.expiry_date = {
|
|
3333
|
-
...queryResultErrors.expiry_date,
|
|
3334
|
-
lte: {
|
|
3335
|
-
expected: queryResult.expiry_date.lte.expected,
|
|
3336
|
-
received: maxDate,
|
|
3337
|
-
message: "Expiry date is not less than the expected expiry date"
|
|
3338
|
-
}
|
|
3339
|
-
};
|
|
3340
|
-
}
|
|
3341
|
-
if (queryResult.expiry_date.range) {
|
|
3342
|
-
if (queryResult.expiry_date.range.result && (!areDatesEqual(minDate, queryResult.expiry_date.range.expected[0]) || !areDatesEqual(maxDate, queryResult.expiry_date.range.expected[1]))) {
|
|
3343
|
-
console.warn("Expiry date is not in the expected range");
|
|
3344
|
-
isCorrect = false;
|
|
3345
|
-
queryResultErrors.expiry_date = {
|
|
3346
|
-
...queryResultErrors.expiry_date,
|
|
3347
|
-
range: {
|
|
3348
|
-
expected: queryResult.expiry_date.range.expected,
|
|
3349
|
-
received: [minDate, maxDate],
|
|
3350
|
-
message: "Expiry date is not in the expected range"
|
|
3351
|
-
}
|
|
3352
|
-
};
|
|
3353
|
-
}
|
|
3354
|
-
}
|
|
3355
|
-
if (!queryResult.expiry_date.lte && !queryResult.expiry_date.lt && !queryResult.expiry_date.eq && !queryResult.expiry_date.range && !areDatesEqual(maxDate, DEFAULT_DATE_VALUE)) {
|
|
3356
|
-
console.warn("Maximum expiry date should be equal to default date value");
|
|
3357
|
-
isCorrect = false;
|
|
3358
|
-
queryResultErrors.expiry_date = {
|
|
3359
|
-
...queryResultErrors.expiry_date,
|
|
3360
|
-
disclose: {
|
|
3361
|
-
expected: `${DEFAULT_DATE_VALUE.toISOString()}`,
|
|
3362
|
-
received: `${maxDate.toISOString()}`,
|
|
3363
|
-
message: "Maximum expiry date should be equal to default date value"
|
|
3364
|
-
}
|
|
3365
|
-
};
|
|
3366
|
-
}
|
|
3367
|
-
if (!queryResult.expiry_date.gte && !queryResult.expiry_date.gt && !queryResult.expiry_date.eq && !queryResult.expiry_date.range && !areDatesEqual(minDate, DEFAULT_DATE_VALUE)) {
|
|
3368
|
-
console.warn("Minimum expiry date should be equal to default date value");
|
|
3369
|
-
isCorrect = false;
|
|
3370
|
-
queryResultErrors.expiry_date = {
|
|
3371
|
-
...queryResultErrors.expiry_date,
|
|
3372
|
-
disclose: {
|
|
3373
|
-
expected: `${DEFAULT_DATE_VALUE.toISOString()}`,
|
|
3374
|
-
received: `${minDate.toISOString()}`,
|
|
3375
|
-
message: "Minimum expiry date should be equal to default date value"
|
|
3376
|
-
}
|
|
3377
|
-
};
|
|
3378
|
-
}
|
|
3379
|
-
} else {
|
|
3380
|
-
console.warn("Expiry date is not set in the query result");
|
|
3381
|
-
isCorrect = false;
|
|
3382
|
-
queryResultErrors.expiry_date = {
|
|
3383
|
-
...queryResultErrors.expiry_date,
|
|
3384
|
-
disclose: {
|
|
3385
|
-
message: "Expiry date is not set in the query result"
|
|
3386
|
-
}
|
|
3387
|
-
};
|
|
3388
|
-
}
|
|
3389
|
-
if (!areDatesEqual(currentDate, today) && !areDatesEqual(currentDate, today.getTime() - 864e5)) {
|
|
3390
|
-
console.warn("Current date in the proof is too old");
|
|
3391
|
-
isCorrect = false;
|
|
3392
|
-
queryResultErrors.expiry_date = {
|
|
3393
|
-
...queryResultErrors.expiry_date,
|
|
3394
|
-
disclose: {
|
|
3395
|
-
expected: `${today.toISOString()}`,
|
|
3396
|
-
received: `${currentDate.toISOString()}`,
|
|
3397
|
-
message: "Current date in the proof is too old"
|
|
3398
|
-
}
|
|
3399
|
-
};
|
|
3400
|
-
}
|
|
3401
|
-
return { isCorrect, queryResultErrors };
|
|
3402
|
-
}
|
|
3403
|
-
checkNationalityExclusionPublicInputs(queryResult, countryList) {
|
|
3404
|
-
const queryResultErrors = {};
|
|
3405
|
-
let isCorrect = true;
|
|
3406
|
-
if (queryResult.nationality && queryResult.nationality.out && queryResult.nationality.out.result) {
|
|
3407
|
-
if (!queryResult.nationality.out.expected?.every((country) => countryList.includes(country))) {
|
|
3408
|
-
console.warn("Nationality exclusion list does not match the one from the query results");
|
|
3409
|
-
isCorrect = false;
|
|
3410
|
-
queryResultErrors.nationality = {
|
|
3411
|
-
...queryResultErrors.nationality,
|
|
3412
|
-
out: {
|
|
3413
|
-
expected: queryResult.nationality.out.expected,
|
|
3414
|
-
received: countryList,
|
|
3415
|
-
message: "Nationality exclusion list does not match the one from the query results"
|
|
3416
|
-
}
|
|
3417
|
-
};
|
|
3418
|
-
}
|
|
3419
|
-
} else if (!queryResult.nationality || !queryResult.nationality.out) {
|
|
3420
|
-
console.warn("Nationality exclusion is not set in the query result");
|
|
3421
|
-
isCorrect = false;
|
|
3422
|
-
queryResultErrors.nationality = {
|
|
3423
|
-
...queryResultErrors.nationality,
|
|
3424
|
-
out: {
|
|
3425
|
-
message: "Nationality exclusion is not set in the query result"
|
|
3426
|
-
}
|
|
3427
|
-
};
|
|
3428
|
-
}
|
|
3429
|
-
for (let i = 1; i < countryList.length; i++) {
|
|
3430
|
-
if (countryList[i] < countryList[i - 1]) {
|
|
3431
|
-
console.warn(
|
|
3432
|
-
"The nationality exclusion list has not been sorted, and thus the proof cannot be trusted"
|
|
3433
|
-
);
|
|
3434
|
-
isCorrect = false;
|
|
3435
|
-
queryResultErrors.nationality = {
|
|
3436
|
-
...queryResultErrors.nationality,
|
|
3437
|
-
out: {
|
|
3438
|
-
message: "The nationality exclusion list has not been sorted, and thus the proof cannot be trusted"
|
|
3439
|
-
}
|
|
3440
|
-
};
|
|
3441
|
-
}
|
|
3442
|
-
}
|
|
3443
|
-
return { isCorrect, queryResultErrors };
|
|
3444
|
-
}
|
|
3445
|
-
checkIssuingCountryExclusionPublicInputs(queryResult, countryList) {
|
|
3446
|
-
const queryResultErrors = {};
|
|
3447
|
-
let isCorrect = true;
|
|
3448
|
-
if (queryResult.issuing_country && queryResult.issuing_country.out && queryResult.issuing_country.out.result) {
|
|
3449
|
-
if (!queryResult.issuing_country.out.expected?.every((country) => countryList.includes(country))) {
|
|
3450
|
-
console.warn("Issuing country exclusion list does not match the one from the query results");
|
|
3451
|
-
isCorrect = false;
|
|
3452
|
-
queryResultErrors.issuing_country = {
|
|
3453
|
-
...queryResultErrors.issuing_country,
|
|
3454
|
-
out: {
|
|
3455
|
-
expected: queryResult.issuing_country.out.expected,
|
|
3456
|
-
received: countryList,
|
|
3457
|
-
message: "Issuing country exclusion list does not match the one from the query results"
|
|
3458
|
-
}
|
|
3459
|
-
};
|
|
3460
|
-
}
|
|
3461
|
-
} else if (!queryResult.issuing_country || !queryResult.issuing_country.out) {
|
|
3462
|
-
console.warn("Issuing country exclusion is not set in the query result");
|
|
3463
|
-
isCorrect = false;
|
|
3464
|
-
queryResultErrors.issuing_country = {
|
|
3465
|
-
...queryResultErrors.issuing_country,
|
|
3466
|
-
out: {
|
|
3467
|
-
message: "Issuing country exclusion is not set in the query result"
|
|
3468
|
-
}
|
|
3469
|
-
};
|
|
3470
|
-
}
|
|
3471
|
-
for (let i = 1; i < countryList.length; i++) {
|
|
3472
|
-
if (countryList[i] < countryList[i - 1]) {
|
|
3473
|
-
console.warn(
|
|
3474
|
-
"The issuing country exclusion list has not been sorted, and thus the proof cannot be trusted"
|
|
3475
|
-
);
|
|
3476
|
-
isCorrect = false;
|
|
3477
|
-
queryResultErrors.issuing_country = {
|
|
3478
|
-
...queryResultErrors.issuing_country,
|
|
3479
|
-
out: {
|
|
3480
|
-
message: "The issuing country exclusion list has not been sorted, and thus the proof cannot be trusted"
|
|
3481
|
-
}
|
|
3482
|
-
};
|
|
3483
|
-
}
|
|
3484
|
-
}
|
|
3485
|
-
return { isCorrect, queryResultErrors };
|
|
3486
|
-
}
|
|
3487
|
-
checkNationalityInclusionPublicInputs(queryResult, countryList) {
|
|
3488
|
-
const queryResultErrors = {};
|
|
3489
|
-
let isCorrect = true;
|
|
3490
|
-
if (queryResult.nationality && queryResult.nationality.in && queryResult.nationality.in.result) {
|
|
3491
|
-
if (!queryResult.nationality.in.expected?.every((country) => countryList.includes(country))) {
|
|
3492
|
-
console.warn("Nationality inclusion list does not match the one from the query results");
|
|
3493
|
-
isCorrect = false;
|
|
3494
|
-
queryResultErrors.nationality = {
|
|
3495
|
-
...queryResultErrors.nationality,
|
|
3496
|
-
in: {
|
|
3497
|
-
expected: queryResult.nationality.in.expected,
|
|
3498
|
-
received: countryList,
|
|
3499
|
-
message: "Nationality inclusion list does not match the one from the query results"
|
|
3500
|
-
}
|
|
3501
|
-
};
|
|
3502
|
-
}
|
|
3503
|
-
} else if (!queryResult.nationality || !queryResult.nationality.in) {
|
|
3504
|
-
console.warn("Nationality inclusion is not set in the query result");
|
|
3505
|
-
isCorrect = false;
|
|
3506
|
-
queryResultErrors.nationality = {
|
|
3507
|
-
...queryResultErrors.nationality,
|
|
3508
|
-
in: {
|
|
3509
|
-
message: "Nationality inclusion is not set in the query result"
|
|
3510
|
-
}
|
|
3511
|
-
};
|
|
3512
|
-
}
|
|
3513
|
-
return { isCorrect, queryResultErrors };
|
|
3514
|
-
}
|
|
3515
|
-
checkIssuingCountryInclusionPublicInputs(queryResult, countryList) {
|
|
3516
|
-
const queryResultErrors = {};
|
|
3517
|
-
let isCorrect = true;
|
|
3518
|
-
if (queryResult.issuing_country && queryResult.issuing_country.in && queryResult.issuing_country.in.result) {
|
|
3519
|
-
if (!queryResult.issuing_country.in.expected?.every((country) => countryList.includes(country))) {
|
|
3520
|
-
console.warn("Issuing country inclusion list does not match the one from the query results");
|
|
3521
|
-
isCorrect = false;
|
|
3522
|
-
queryResultErrors.issuing_country = {
|
|
3523
|
-
...queryResultErrors.issuing_country,
|
|
3524
|
-
in: {
|
|
3525
|
-
expected: queryResult.issuing_country.in.expected,
|
|
3526
|
-
received: countryList,
|
|
3527
|
-
message: "Issuing country inclusion list does not match the one from the query results"
|
|
3528
|
-
}
|
|
3529
|
-
};
|
|
3530
|
-
}
|
|
3531
|
-
} else if (!queryResult.issuing_country || !queryResult.issuing_country.in) {
|
|
3532
|
-
console.warn("Issuing country inclusion is not set in the query result");
|
|
3533
|
-
isCorrect = false;
|
|
3534
|
-
queryResultErrors.issuing_country = {
|
|
3535
|
-
...queryResultErrors.issuing_country,
|
|
3536
|
-
in: {
|
|
3537
|
-
message: "Issuing country inclusion is not set in the query result"
|
|
3538
|
-
}
|
|
3539
|
-
};
|
|
3540
|
-
}
|
|
3541
|
-
return { isCorrect, queryResultErrors };
|
|
3542
|
-
}
|
|
3543
|
-
checkScopeFromDisclosureProof(proofData, queryResultErrors, key, scope) {
|
|
3544
|
-
let isCorrect = true;
|
|
3545
|
-
if (this.domain && getServiceScopeHash(this.domain) !== BigInt(proofData.publicInputs[1])) {
|
|
3546
|
-
console.warn("The proof comes from a different domain than the one expected");
|
|
3547
|
-
isCorrect = false;
|
|
3548
|
-
if (!queryResultErrors[key]) {
|
|
3549
|
-
queryResultErrors[key] = {};
|
|
3550
|
-
}
|
|
3551
|
-
queryResultErrors[key].scope = {
|
|
3552
|
-
expected: `Scope: ${getServiceScopeHash(this.domain).toString()}`,
|
|
3553
|
-
received: `Scope: ${BigInt(proofData.publicInputs[1]).toString()}`,
|
|
3554
|
-
message: "The proof comes from a different domain than the one expected"
|
|
3555
|
-
};
|
|
3556
|
-
}
|
|
3557
|
-
if (scope && getScopeHash(scope) !== BigInt(proofData.publicInputs[2])) {
|
|
3558
|
-
console.warn("The proof uses a different scope than the one expected");
|
|
3559
|
-
isCorrect = false;
|
|
3560
|
-
if (!queryResultErrors[key]) {
|
|
3561
|
-
queryResultErrors[key] = {};
|
|
3562
|
-
}
|
|
3563
|
-
queryResultErrors[key].scope = {
|
|
3564
|
-
expected: `Scope: ${getScopeHash(scope).toString()}`,
|
|
3565
|
-
received: `Scope: ${BigInt(proofData.publicInputs[2]).toString()}`,
|
|
3566
|
-
message: "The proof uses a different scope than the one expected"
|
|
3567
|
-
};
|
|
3568
|
-
}
|
|
3569
|
-
return { isCorrect, queryResultErrors };
|
|
3570
|
-
}
|
|
3571
|
-
async checkCertificateRegistryRoot(root, queryResultErrors, outer) {
|
|
3572
|
-
let isCorrect = true;
|
|
3573
|
-
try {
|
|
3574
|
-
const registryClient = new RegistryClient({ chainId: 11155111 });
|
|
3575
|
-
const isValid = await registryClient.isCertificateRootValid(root);
|
|
3576
|
-
if (!isValid) {
|
|
3577
|
-
console.warn("The ID was signed by an unrecognized root certificate");
|
|
3578
|
-
isCorrect = false;
|
|
3579
|
-
if (!queryResultErrors[outer ? "outer" : "sig_check_dsc"]) {
|
|
3580
|
-
queryResultErrors[outer ? "outer" : "sig_check_dsc"] = {};
|
|
3581
|
-
}
|
|
3582
|
-
queryResultErrors[outer ? "outer" : "sig_check_dsc"].certificate = {
|
|
3583
|
-
expected: `A valid root from ZKPassport Registry`,
|
|
3584
|
-
received: `Got invalid certificate registry root: ${root}`,
|
|
3585
|
-
message: "The ID was signed by an unrecognized root certificate"
|
|
3586
|
-
};
|
|
3587
|
-
}
|
|
3588
|
-
} catch (error) {
|
|
3589
|
-
console.warn(error);
|
|
3590
|
-
console.warn("The ID was signed by an unrecognized root certificate");
|
|
3591
|
-
isCorrect = false;
|
|
3592
|
-
if (!queryResultErrors[outer ? "outer" : "sig_check_dsc"]) {
|
|
3593
|
-
queryResultErrors[outer ? "outer" : "sig_check_dsc"] = {};
|
|
3594
|
-
}
|
|
3595
|
-
queryResultErrors[outer ? "outer" : "sig_check_dsc"].certificate = {
|
|
3596
|
-
expected: `A valid root from ZKPassport Registry`,
|
|
3597
|
-
received: `Got invalid certificate registry root: ${root}`,
|
|
3598
|
-
message: "The ID was signed by an unrecognized root certificate"
|
|
3599
|
-
};
|
|
3600
|
-
}
|
|
3601
|
-
return { isCorrect, queryResultErrors };
|
|
3602
|
-
}
|
|
3603
|
-
async checkCircuitRegistryRoot(root, queryResultErrors) {
|
|
3604
|
-
let isCorrect = true;
|
|
3605
|
-
try {
|
|
3606
|
-
const registryClient = new RegistryClient({ chainId: 11155111 });
|
|
3607
|
-
const isValid = await registryClient.isCircuitRootValid(root);
|
|
3608
|
-
if (!isValid) {
|
|
3609
|
-
console.warn("The proof uses unrecognized circuits");
|
|
3610
|
-
isCorrect = false;
|
|
3611
|
-
queryResultErrors.outer.circuit = {
|
|
3612
|
-
expected: `A valid circuit from ZKPassport Registry`,
|
|
3613
|
-
received: `Got invalid circuit registry root: ${root}`,
|
|
3614
|
-
message: "The proof uses an unrecognized circuit"
|
|
3615
|
-
};
|
|
3616
|
-
}
|
|
3617
|
-
} catch (error) {
|
|
3618
|
-
console.warn(error);
|
|
3619
|
-
console.warn("The proof uses unrecognized circuits");
|
|
3620
|
-
isCorrect = false;
|
|
3621
|
-
queryResultErrors.outer.circuit = {
|
|
3622
|
-
expected: `A valid circuit from ZKPassport Registry`,
|
|
3623
|
-
received: `Got invalid circuit registry root: ${root}`,
|
|
3624
|
-
message: "The proof uses an unrecognized circuit"
|
|
3625
|
-
};
|
|
3626
|
-
}
|
|
3627
|
-
return { isCorrect, queryResultErrors };
|
|
3628
|
-
}
|
|
3629
|
-
checkBindPublicInputs(queryResult, boundData) {
|
|
3630
|
-
const queryResultErrors = {};
|
|
3631
|
-
let isCorrect = true;
|
|
3632
|
-
if (queryResult.bind) {
|
|
3633
|
-
if (queryResult.bind.user_address?.toLowerCase().replace("0x", "") !== boundData.user_address?.toLowerCase().replace("0x", "")) {
|
|
3634
|
-
console.warn("Bound user address does not match the one from the query results");
|
|
3635
|
-
isCorrect = false;
|
|
3636
|
-
queryResultErrors.bind = {
|
|
3637
|
-
...queryResultErrors.bind,
|
|
3638
|
-
eq: {
|
|
3639
|
-
expected: queryResult.bind.user_address,
|
|
3640
|
-
received: boundData.user_address,
|
|
3641
|
-
message: "Bound user address does not match the one from the query results"
|
|
3642
|
-
}
|
|
3643
|
-
};
|
|
3644
|
-
}
|
|
3645
|
-
if (queryResult.bind.chain !== boundData.chain) {
|
|
3646
|
-
console.warn("Bound chain id does not match the one from the query results");
|
|
3647
|
-
isCorrect = false;
|
|
3648
|
-
queryResultErrors.bind = {
|
|
3649
|
-
...queryResultErrors.bind,
|
|
3650
|
-
eq: {
|
|
3651
|
-
expected: queryResult.bind.chain,
|
|
3652
|
-
received: boundData.chain,
|
|
3653
|
-
message: "Bound chain id does not match the one from the query results"
|
|
3654
|
-
}
|
|
3655
|
-
};
|
|
3656
|
-
}
|
|
3657
|
-
if (queryResult.bind.custom_data?.trim().toLowerCase() !== boundData.custom_data?.trim().toLowerCase()) {
|
|
3658
|
-
console.warn("Bound custom data does not match the one from the query results");
|
|
3659
|
-
isCorrect = false;
|
|
3660
|
-
queryResultErrors.bind = {
|
|
3661
|
-
...queryResultErrors.bind,
|
|
3662
|
-
eq: {
|
|
3663
|
-
expected: queryResult.bind.custom_data,
|
|
3664
|
-
received: boundData.custom_data,
|
|
3665
|
-
message: "Bound custom data does not match the one from the query results"
|
|
3666
|
-
}
|
|
3667
|
-
};
|
|
3668
|
-
}
|
|
3669
|
-
}
|
|
3670
|
-
return { isCorrect, queryResultErrors };
|
|
3671
|
-
}
|
|
3672
|
-
async checkSanctionsExclusionPublicInputs(queryResult, root, sanctionsBuilder) {
|
|
3673
|
-
const queryResultErrors = {};
|
|
3674
|
-
let isCorrect = true;
|
|
3675
|
-
if (queryResult.sanctions && queryResult.sanctions.passed) {
|
|
3676
|
-
const EXPECTED_ROOT = await sanctionsBuilder.getRoot();
|
|
3677
|
-
if (root !== EXPECTED_ROOT) {
|
|
3678
|
-
console.warn("Invalid sanctions registry root");
|
|
3679
|
-
isCorrect = false;
|
|
3680
|
-
queryResultErrors.sanctions = {
|
|
3681
|
-
...queryResultErrors.sanctions,
|
|
3682
|
-
eq: {
|
|
3683
|
-
expected: EXPECTED_ROOT,
|
|
3684
|
-
received: root,
|
|
3685
|
-
message: "Invalid sanctions registry root"
|
|
3686
|
-
}
|
|
3687
|
-
};
|
|
3688
|
-
}
|
|
3689
|
-
}
|
|
3690
|
-
return { isCorrect, queryResultErrors };
|
|
3691
|
-
}
|
|
3692
|
-
async checkPublicInputs(proofs, queryResult, validity, scope) {
|
|
3693
|
-
let commitmentIn;
|
|
3694
|
-
let commitmentOut;
|
|
3695
|
-
let isCorrect = true;
|
|
3696
|
-
let uniqueIdentifier;
|
|
3697
|
-
const currentTime = /* @__PURE__ */ new Date();
|
|
3698
|
-
const today = new Date(
|
|
3699
|
-
currentTime.getFullYear(),
|
|
3700
|
-
currentTime.getMonth(),
|
|
3701
|
-
currentTime.getDate(),
|
|
3702
|
-
0,
|
|
3703
|
-
0,
|
|
3704
|
-
0,
|
|
3705
|
-
0
|
|
3706
|
-
);
|
|
3707
|
-
let queryResultErrors = {};
|
|
3708
|
-
const sortedProofs = proofs.sort((a, b) => {
|
|
3709
|
-
const proofOrder = [
|
|
3710
|
-
"sig_check_dsc",
|
|
3711
|
-
"sig_check_id_data",
|
|
3712
|
-
"data_check_integrity",
|
|
3713
|
-
"disclose_bytes",
|
|
3714
|
-
"compare_age",
|
|
3715
|
-
"compare_birthdate",
|
|
3716
|
-
"compare_expiry",
|
|
3717
|
-
"exclusion_check_nationality",
|
|
3718
|
-
"inclusion_check_nationality",
|
|
3719
|
-
"exclusion_check_issuing_country",
|
|
3720
|
-
"inclusion_check_issuing_country",
|
|
3721
|
-
"bind",
|
|
3722
|
-
"exclusion_check_sanctions"
|
|
3723
|
-
];
|
|
3724
|
-
const getIndex = (proof) => {
|
|
3725
|
-
const name = proof.name || "";
|
|
3726
|
-
return proofOrder.findIndex((p) => name.startsWith(p));
|
|
3727
|
-
};
|
|
3728
|
-
return getIndex(a) - getIndex(b);
|
|
3729
|
-
});
|
|
3730
|
-
for (const proof of sortedProofs) {
|
|
3731
|
-
const proofData = getProofData(proof.proof, getNumberOfPublicInputs(proof.name));
|
|
3732
|
-
if (proof.name?.startsWith("outer")) {
|
|
3733
|
-
const isForEVM = proof.name?.startsWith("outer_evm");
|
|
3734
|
-
const certificateRegistryRoot = getCertificateRegistryRootFromOuterProof(proofData);
|
|
3735
|
-
const {
|
|
3736
|
-
isCorrect: isCorrectCertificateRegistryRoot,
|
|
3737
|
-
queryResultErrors: queryResultErrorsCertificateRegistryRoot
|
|
3738
|
-
} = await this.checkCertificateRegistryRoot(
|
|
3739
|
-
certificateRegistryRoot.toString(16),
|
|
3740
|
-
queryResultErrors,
|
|
3741
|
-
true
|
|
3742
|
-
);
|
|
3743
|
-
isCorrect = isCorrect && isCorrectCertificateRegistryRoot;
|
|
3744
|
-
queryResultErrors = {
|
|
3745
|
-
...queryResultErrors,
|
|
3746
|
-
...queryResultErrorsCertificateRegistryRoot
|
|
3747
|
-
};
|
|
3748
|
-
const circuitRegistryRoot = getCircuitRegistryRootFromOuterProof(proofData);
|
|
3749
|
-
const {
|
|
3750
|
-
isCorrect: isCorrectCircuitRegistryRoot,
|
|
3751
|
-
queryResultErrors: queryResultErrorsCircuitRegistryRoot
|
|
3752
|
-
} = await this.checkCircuitRegistryRoot(circuitRegistryRoot.toString(16), queryResultErrors);
|
|
3753
|
-
isCorrect = isCorrect && isCorrectCircuitRegistryRoot;
|
|
3754
|
-
queryResultErrors = {
|
|
3755
|
-
...queryResultErrors,
|
|
3756
|
-
...queryResultErrorsCircuitRegistryRoot
|
|
3757
|
-
};
|
|
3758
|
-
const currentDate = getCurrentDateFromOuterProof(proofData);
|
|
3759
|
-
const todayToCurrentDate = today.getTime() - currentDate.getTime();
|
|
3760
|
-
const expectedDifference = validity ? validity * 1e3 : DEFAULT_VALIDITY * 1e3;
|
|
3761
|
-
const actualDifference = today.getTime() - (today.getTime() - expectedDifference);
|
|
3762
|
-
if (todayToCurrentDate >= actualDifference) {
|
|
3763
|
-
console.warn(
|
|
3764
|
-
`The date used to check the validity of the ID is older than the validity period`
|
|
3765
|
-
);
|
|
3766
|
-
isCorrect = false;
|
|
3767
|
-
queryResultErrors.outer = {
|
|
3768
|
-
...queryResultErrors.outer,
|
|
3769
|
-
date: {
|
|
3770
|
-
expected: `Difference: ${validity} seconds`,
|
|
3771
|
-
received: `Difference: ${Math.round(todayToCurrentDate / 1e3)} seconds`,
|
|
3772
|
-
message: "The date used to check the validity of the ID is older than the validity period"
|
|
3773
|
-
}
|
|
3774
|
-
};
|
|
3775
|
-
}
|
|
3776
|
-
const paramCommitments = getParamCommitmentsFromOuterProof(proofData);
|
|
3777
|
-
const committedInputs = proof.committedInputs;
|
|
3778
|
-
const keysInCommittedInputs = Object.keys(committedInputs || {});
|
|
3779
|
-
if (keysInCommittedInputs.length !== paramCommitments.length) {
|
|
3780
|
-
console.warn("The proof does not verify all the requested conditions and information");
|
|
3781
|
-
isCorrect = false;
|
|
3782
|
-
queryResultErrors.outer = {
|
|
3783
|
-
...queryResultErrors.outer,
|
|
3784
|
-
commitment: {
|
|
3785
|
-
expected: `Number of parameter commitments: ${paramCommitments.length}`,
|
|
3786
|
-
received: `Number of disclosure proofs provided: ${keysInCommittedInputs.length}`,
|
|
3787
|
-
message: "The proof does not verify all the requested conditions and information"
|
|
3788
|
-
}
|
|
3789
|
-
};
|
|
3790
|
-
}
|
|
3791
|
-
if (this.domain && getServiceScopeHash(this.domain) !== getScopeFromOuterProof(proofData)) {
|
|
3792
|
-
console.warn("The proof comes from a different domain than the one expected");
|
|
3793
|
-
isCorrect = false;
|
|
3794
|
-
queryResultErrors.outer = {
|
|
3795
|
-
...queryResultErrors.outer,
|
|
3796
|
-
scope: {
|
|
3797
|
-
expected: `Scope: ${getServiceScopeHash(this.domain).toString()}`,
|
|
3798
|
-
received: `Scope: ${getScopeFromOuterProof(proofData).toString()}`,
|
|
3799
|
-
message: "The proof comes from a different domain than the one expected"
|
|
3800
|
-
}
|
|
3801
|
-
};
|
|
3802
|
-
}
|
|
3803
|
-
if (scope && getScopeHash(scope) !== getSubscopeFromOuterProof(proofData)) {
|
|
3804
|
-
console.warn("The proof uses a different scope than the one expected");
|
|
3805
|
-
isCorrect = false;
|
|
3806
|
-
queryResultErrors.outer = {
|
|
3807
|
-
...queryResultErrors.outer,
|
|
3808
|
-
scope: {
|
|
3809
|
-
expected: `Scope: ${getScopeHash(scope).toString()}`,
|
|
3810
|
-
received: `Scope: ${getSubscopeFromOuterProof(proofData).toString()}`,
|
|
3811
|
-
message: "The proof uses a different scope than the one expected"
|
|
3812
|
-
}
|
|
3813
|
-
};
|
|
3814
|
-
}
|
|
3815
|
-
if (!!committedInputs?.compare_age) {
|
|
3816
|
-
const ageCommittedInputs = committedInputs?.compare_age;
|
|
3817
|
-
const ageParameterCommitment = isForEVM ? await getAgeEVMParameterCommitment(
|
|
3818
|
-
ageCommittedInputs.currentDateTimestamp,
|
|
3819
|
-
ageCommittedInputs.minAge,
|
|
3820
|
-
ageCommittedInputs.maxAge
|
|
3821
|
-
) : await getAgeParameterCommitment(
|
|
3822
|
-
ageCommittedInputs.currentDateTimestamp,
|
|
3823
|
-
ageCommittedInputs.minAge,
|
|
3824
|
-
ageCommittedInputs.maxAge
|
|
3825
|
-
);
|
|
3826
|
-
if (!paramCommitments.includes(ageParameterCommitment)) {
|
|
3827
|
-
console.warn("This proof does not verify the age");
|
|
3828
|
-
isCorrect = false;
|
|
3829
|
-
queryResultErrors.age = {
|
|
3830
|
-
...queryResultErrors.age,
|
|
3831
|
-
commitment: {
|
|
3832
|
-
expected: `Age parameter commitment: ${ageParameterCommitment.toString()}`,
|
|
3833
|
-
received: `Parameter commitments included: ${paramCommitments.join(", ")}`,
|
|
3834
|
-
message: "This proof does not verify the age"
|
|
3835
|
-
}
|
|
3836
|
-
};
|
|
3837
|
-
}
|
|
3838
|
-
const { isCorrect: isCorrectAge, queryResultErrors: queryResultErrorsAge } = this.checkAgePublicInputs(proof, queryResult);
|
|
3839
|
-
isCorrect = isCorrect && isCorrectAge;
|
|
3840
|
-
queryResultErrors = {
|
|
3841
|
-
...queryResultErrors,
|
|
3842
|
-
...queryResultErrorsAge
|
|
3843
|
-
};
|
|
3844
|
-
} else if (!!committedInputs?.compare_birthdate) {
|
|
3845
|
-
const birthdateCommittedInputs = committedInputs?.compare_birthdate;
|
|
3846
|
-
const birthdateParameterCommitment = isForEVM ? await getDateEVMParameterCommitment(
|
|
3847
|
-
ProofType.BIRTHDATE,
|
|
3848
|
-
birthdateCommittedInputs.currentDateTimestamp,
|
|
3849
|
-
birthdateCommittedInputs.minDateTimestamp,
|
|
3850
|
-
birthdateCommittedInputs.maxDateTimestamp,
|
|
3851
|
-
0
|
|
3852
|
-
) : await getDateParameterCommitment(
|
|
3853
|
-
ProofType.BIRTHDATE,
|
|
3854
|
-
birthdateCommittedInputs.currentDateTimestamp,
|
|
3855
|
-
birthdateCommittedInputs.minDateTimestamp,
|
|
3856
|
-
birthdateCommittedInputs.maxDateTimestamp,
|
|
3857
|
-
0
|
|
3858
|
-
);
|
|
3859
|
-
if (!paramCommitments.includes(birthdateParameterCommitment)) {
|
|
3860
|
-
console.warn("This proof does not verify the birthdate");
|
|
3861
|
-
isCorrect = false;
|
|
3862
|
-
queryResultErrors.birthdate = {
|
|
3863
|
-
...queryResultErrors.birthdate,
|
|
3864
|
-
commitment: {
|
|
3865
|
-
expected: `Birthdate parameter commitment: ${birthdateParameterCommitment.toString()}`,
|
|
3866
|
-
received: `Parameter commitments included: ${paramCommitments.join(", ")}`,
|
|
3867
|
-
message: "This proof does not verify the birthdate"
|
|
3868
|
-
}
|
|
3869
|
-
};
|
|
3870
|
-
}
|
|
3871
|
-
const { isCorrect: isCorrectBirthdate, queryResultErrors: queryResultErrorsBirthdate } = this.checkBirthdatePublicInputs(proof, queryResult);
|
|
3872
|
-
isCorrect = isCorrect && isCorrectBirthdate;
|
|
3873
|
-
queryResultErrors = {
|
|
3874
|
-
...queryResultErrors,
|
|
3875
|
-
...queryResultErrorsBirthdate
|
|
3876
|
-
};
|
|
3877
|
-
} else if (!!committedInputs?.compare_expiry) {
|
|
3878
|
-
const expiryCommittedInputs = committedInputs?.compare_expiry;
|
|
3879
|
-
const expiryParameterCommitment = isForEVM ? await getDateEVMParameterCommitment(
|
|
3880
|
-
ProofType.EXPIRY_DATE,
|
|
3881
|
-
expiryCommittedInputs.currentDateTimestamp,
|
|
3882
|
-
expiryCommittedInputs.minDateTimestamp,
|
|
3883
|
-
expiryCommittedInputs.maxDateTimestamp
|
|
3884
|
-
) : await getDateParameterCommitment(
|
|
3885
|
-
ProofType.EXPIRY_DATE,
|
|
3886
|
-
expiryCommittedInputs.currentDateTimestamp,
|
|
3887
|
-
expiryCommittedInputs.minDateTimestamp,
|
|
3888
|
-
expiryCommittedInputs.maxDateTimestamp
|
|
3889
|
-
);
|
|
3890
|
-
if (!paramCommitments.includes(expiryParameterCommitment)) {
|
|
3891
|
-
console.warn("This proof does not verify the expiry date");
|
|
3892
|
-
isCorrect = false;
|
|
3893
|
-
queryResultErrors.expiry_date = {
|
|
3894
|
-
...queryResultErrors.expiry_date,
|
|
3895
|
-
commitment: {
|
|
3896
|
-
expected: `Expiry date parameter commitment: ${expiryParameterCommitment.toString()}`,
|
|
3897
|
-
received: `Parameter commitments included: ${paramCommitments.join(", ")}`,
|
|
3898
|
-
message: "This proof does not verify the expiry date"
|
|
3899
|
-
}
|
|
3900
|
-
};
|
|
3901
|
-
}
|
|
3902
|
-
const { isCorrect: isCorrectExpiryDate, queryResultErrors: queryResultErrorsExpiryDate } = this.checkExpiryDatePublicInputs(proof, queryResult);
|
|
3903
|
-
isCorrect = isCorrect && isCorrectExpiryDate;
|
|
3904
|
-
queryResultErrors = {
|
|
3905
|
-
...queryResultErrors,
|
|
3906
|
-
...queryResultErrorsExpiryDate
|
|
3907
|
-
};
|
|
3908
|
-
} else if (!!committedInputs?.disclose_bytes) {
|
|
3909
|
-
const discloseCommittedInputs = committedInputs?.disclose_bytes;
|
|
3910
|
-
const discloseParameterCommitment = isForEVM ? await getDiscloseEVMParameterCommitment(
|
|
3911
|
-
discloseCommittedInputs.discloseMask,
|
|
3912
|
-
discloseCommittedInputs.disclosedBytes
|
|
3913
|
-
) : await getDiscloseParameterCommitment(
|
|
3914
|
-
discloseCommittedInputs.discloseMask,
|
|
3915
|
-
discloseCommittedInputs.disclosedBytes
|
|
3916
|
-
);
|
|
3917
|
-
if (!paramCommitments.includes(discloseParameterCommitment)) {
|
|
3918
|
-
console.warn("This proof does not verify any of the data disclosed");
|
|
3919
|
-
isCorrect = false;
|
|
3920
|
-
queryResultErrors.disclose = {
|
|
3921
|
-
...queryResultErrors.disclose,
|
|
3922
|
-
commitment: {
|
|
3923
|
-
expected: `Disclosure parameter commitment: ${discloseParameterCommitment.toString()}`,
|
|
3924
|
-
received: `Parameter commitments included: ${paramCommitments.join(", ")}`,
|
|
3925
|
-
message: "This proof does not verify any of the data disclosed"
|
|
3926
|
-
}
|
|
3927
|
-
};
|
|
3928
|
-
}
|
|
3929
|
-
const { isCorrect: isCorrectDisclose, queryResultErrors: queryResultErrorsDisclose } = this.checkDiscloseBytesPublicInputs(proof, queryResult);
|
|
3930
|
-
isCorrect = isCorrect && isCorrectDisclose;
|
|
3931
|
-
queryResultErrors = {
|
|
3932
|
-
...queryResultErrors,
|
|
3933
|
-
...queryResultErrorsDisclose
|
|
3934
|
-
};
|
|
3935
|
-
} else if (!!committedInputs?.inclusion_check_nationality) {
|
|
3936
|
-
const inclusionCheckNationalityCommittedInputs = committedInputs?.inclusion_check_nationality;
|
|
3937
|
-
const inclusionCheckNationalityParameterCommitment = isForEVM ? await getCountryEVMParameterCommitment(
|
|
3938
|
-
ProofType.NATIONALITY_INCLUSION,
|
|
3939
|
-
inclusionCheckNationalityCommittedInputs.countries
|
|
3940
|
-
) : await getCountryParameterCommitment(
|
|
3941
|
-
ProofType.NATIONALITY_INCLUSION,
|
|
3942
|
-
inclusionCheckNationalityCommittedInputs.countries
|
|
3943
|
-
);
|
|
3944
|
-
if (!paramCommitments.includes(inclusionCheckNationalityParameterCommitment)) {
|
|
3945
|
-
console.warn("This proof does not verify the inclusion of the nationality");
|
|
3946
|
-
isCorrect = false;
|
|
3947
|
-
queryResultErrors.nationality = {
|
|
3948
|
-
...queryResultErrors.nationality,
|
|
3949
|
-
commitment: {
|
|
3950
|
-
expected: `Nationality parameter commitment: ${inclusionCheckNationalityParameterCommitment.toString()}`,
|
|
3951
|
-
received: `Parameter commitments included: ${paramCommitments.join(", ")}`,
|
|
3952
|
-
message: "This proof does not verify the inclusion of the nationality"
|
|
3953
|
-
}
|
|
3954
|
-
};
|
|
3955
|
-
}
|
|
3956
|
-
const countryList = inclusionCheckNationalityCommittedInputs.countries;
|
|
3957
|
-
const {
|
|
3958
|
-
isCorrect: isCorrectNationalityInclusion,
|
|
3959
|
-
queryResultErrors: queryResultErrorsNationalityInclusion
|
|
3960
|
-
} = this.checkNationalityInclusionPublicInputs(queryResult, countryList);
|
|
3961
|
-
isCorrect = isCorrect && isCorrectNationalityInclusion;
|
|
3962
|
-
queryResultErrors = {
|
|
3963
|
-
...queryResultErrors,
|
|
3964
|
-
...queryResultErrorsNationalityInclusion
|
|
3965
|
-
};
|
|
3966
|
-
} else if (!!committedInputs?.inclusion_check_issuing_country) {
|
|
3967
|
-
const inclusionCheckIssuingCountryCommittedInputs = committedInputs?.inclusion_check_issuing_country;
|
|
3968
|
-
const inclusionCheckIssuingCountryParameterCommitment = isForEVM ? await getCountryEVMParameterCommitment(
|
|
3969
|
-
ProofType.ISSUING_COUNTRY_INCLUSION,
|
|
3970
|
-
inclusionCheckIssuingCountryCommittedInputs.countries
|
|
3971
|
-
) : await getCountryParameterCommitment(
|
|
3972
|
-
ProofType.ISSUING_COUNTRY_INCLUSION,
|
|
3973
|
-
inclusionCheckIssuingCountryCommittedInputs.countries
|
|
3974
|
-
);
|
|
3975
|
-
if (!paramCommitments.includes(inclusionCheckIssuingCountryParameterCommitment)) {
|
|
3976
|
-
console.warn("This proof does not verify the inclusion of the issuing country");
|
|
3977
|
-
isCorrect = false;
|
|
3978
|
-
queryResultErrors.issuing_country = {
|
|
3979
|
-
...queryResultErrors.issuing_country,
|
|
3980
|
-
commitment: {
|
|
3981
|
-
expected: `Issuing country parameter commitment: ${inclusionCheckIssuingCountryParameterCommitment.toString()}`,
|
|
3982
|
-
received: `Parameter commitments included: ${paramCommitments.join(", ")}`,
|
|
3983
|
-
message: "This proof does not verify the inclusion of the issuing country"
|
|
3984
|
-
}
|
|
3985
|
-
};
|
|
3986
|
-
}
|
|
3987
|
-
const countryList = inclusionCheckIssuingCountryCommittedInputs.countries;
|
|
3988
|
-
const {
|
|
3989
|
-
isCorrect: isCorrectIssuingCountryInclusion,
|
|
3990
|
-
queryResultErrors: queryResultErrorsIssuingCountryInclusion
|
|
3991
|
-
} = this.checkIssuingCountryInclusionPublicInputs(queryResult, countryList);
|
|
3992
|
-
isCorrect = isCorrect && isCorrectIssuingCountryInclusion;
|
|
3993
|
-
queryResultErrors = {
|
|
3994
|
-
...queryResultErrors,
|
|
3995
|
-
...queryResultErrorsIssuingCountryInclusion
|
|
3996
|
-
};
|
|
3997
|
-
} else if (!!committedInputs?.exclusion_check_nationality) {
|
|
3998
|
-
const exclusionCheckNationalityCommittedInputs = committedInputs?.exclusion_check_nationality;
|
|
3999
|
-
const exclusionCheckNationalityParameterCommitment = isForEVM ? await getCountryEVMParameterCommitment(
|
|
4000
|
-
ProofType.NATIONALITY_EXCLUSION,
|
|
4001
|
-
exclusionCheckNationalityCommittedInputs.countries
|
|
4002
|
-
) : await getCountryParameterCommitment(
|
|
4003
|
-
ProofType.NATIONALITY_EXCLUSION,
|
|
4004
|
-
exclusionCheckNationalityCommittedInputs.countries
|
|
4005
|
-
);
|
|
4006
|
-
if (!paramCommitments.includes(exclusionCheckNationalityParameterCommitment)) {
|
|
4007
|
-
console.warn("This proof does not verify the exclusion of the nationality");
|
|
4008
|
-
isCorrect = false;
|
|
4009
|
-
queryResultErrors.nationality = {
|
|
4010
|
-
...queryResultErrors.nationality,
|
|
4011
|
-
commitment: {
|
|
4012
|
-
expected: `Nationality parameter commitment: ${exclusionCheckNationalityParameterCommitment.toString()}`,
|
|
4013
|
-
received: `Parameter commitments included: ${paramCommitments.join(", ")}`,
|
|
4014
|
-
message: "This proof does not verify the exclusion of the nationality"
|
|
4015
|
-
}
|
|
4016
|
-
};
|
|
4017
|
-
}
|
|
4018
|
-
const countryList = exclusionCheckNationalityCommittedInputs.countries;
|
|
4019
|
-
const {
|
|
4020
|
-
isCorrect: isCorrectNationalityExclusion,
|
|
4021
|
-
queryResultErrors: queryResultErrorsNationalityExclusion
|
|
4022
|
-
} = this.checkNationalityExclusionPublicInputs(queryResult, countryList);
|
|
4023
|
-
isCorrect = isCorrect && isCorrectNationalityExclusion;
|
|
4024
|
-
queryResultErrors = {
|
|
4025
|
-
...queryResultErrors,
|
|
4026
|
-
...queryResultErrorsNationalityExclusion
|
|
4027
|
-
};
|
|
4028
|
-
} else if (!!committedInputs?.exclusion_check_issuing_country) {
|
|
4029
|
-
const exclusionCheckIssuingCountryCommittedInputs = committedInputs?.exclusion_check_issuing_country;
|
|
4030
|
-
const exclusionCheckIssuingCountryParameterCommitment = isForEVM ? await getCountryEVMParameterCommitment(
|
|
4031
|
-
ProofType.ISSUING_COUNTRY_EXCLUSION,
|
|
4032
|
-
exclusionCheckIssuingCountryCommittedInputs.countries
|
|
4033
|
-
) : await getCountryParameterCommitment(
|
|
4034
|
-
ProofType.ISSUING_COUNTRY_EXCLUSION,
|
|
4035
|
-
exclusionCheckIssuingCountryCommittedInputs.countries
|
|
4036
|
-
);
|
|
4037
|
-
if (!paramCommitments.includes(exclusionCheckIssuingCountryParameterCommitment)) {
|
|
4038
|
-
console.warn("This proof does not verify the exclusion of the issuing country");
|
|
4039
|
-
isCorrect = false;
|
|
4040
|
-
queryResultErrors.issuing_country = {
|
|
4041
|
-
...queryResultErrors.issuing_country,
|
|
4042
|
-
commitment: {
|
|
4043
|
-
expected: `Issuing country parameter commitment: ${exclusionCheckIssuingCountryParameterCommitment.toString()}`,
|
|
4044
|
-
received: `Parameter commitments included: ${paramCommitments.join(", ")}`,
|
|
4045
|
-
message: "This proof does not verify the exclusion of the issuing country"
|
|
4046
|
-
}
|
|
4047
|
-
};
|
|
4048
|
-
}
|
|
4049
|
-
const countryList = exclusionCheckIssuingCountryCommittedInputs.countries;
|
|
4050
|
-
const {
|
|
4051
|
-
isCorrect: isCorrectIssuingCountryExclusion,
|
|
4052
|
-
queryResultErrors: queryResultErrorsIssuingCountryExclusion
|
|
4053
|
-
} = this.checkIssuingCountryExclusionPublicInputs(queryResult, countryList);
|
|
4054
|
-
isCorrect = isCorrect && isCorrectIssuingCountryExclusion;
|
|
4055
|
-
queryResultErrors = {
|
|
4056
|
-
...queryResultErrors,
|
|
4057
|
-
...queryResultErrorsIssuingCountryExclusion
|
|
4058
|
-
};
|
|
4059
|
-
} else if (!!committedInputs?.bind) {
|
|
4060
|
-
const bindCommittedInputs = committedInputs?.bind;
|
|
4061
|
-
const bindParameterCommitment = isForEVM ? await getBindEVMParameterCommitment(formatBoundData(bindCommittedInputs.data)) : await getBindParameterCommitment(formatBoundData(bindCommittedInputs.data));
|
|
4062
|
-
if (!paramCommitments.includes(bindParameterCommitment)) {
|
|
4063
|
-
console.warn("This proof does not verify the bound data");
|
|
4064
|
-
isCorrect = false;
|
|
4065
|
-
queryResultErrors.bind = {
|
|
4066
|
-
...queryResultErrors.bind,
|
|
4067
|
-
commitment: {
|
|
4068
|
-
expected: `Bind parameter commitment: ${bindParameterCommitment.toString()}`,
|
|
4069
|
-
received: `Parameter commitments included: ${paramCommitments.join(", ")}`,
|
|
4070
|
-
message: "This proof does not verify the bound data"
|
|
4071
|
-
}
|
|
4072
|
-
};
|
|
4073
|
-
}
|
|
4074
|
-
const { isCorrect: isCorrectBind, queryResultErrors: queryResultErrorsBind } = this.checkBindPublicInputs(queryResult, bindCommittedInputs.data);
|
|
4075
|
-
isCorrect = isCorrect && isCorrectBind;
|
|
4076
|
-
queryResultErrors = {
|
|
4077
|
-
...queryResultErrors,
|
|
4078
|
-
...queryResultErrorsBind
|
|
4079
|
-
};
|
|
4080
|
-
} else if (!!committedInputs?.exclusion_check_sanctions) {
|
|
4081
|
-
const sanctionsBuilder = await SanctionsBuilder.create();
|
|
4082
|
-
const exclusionCheckSanctionsCommittedInputs = committedInputs?.exclusion_check_sanctions;
|
|
4083
|
-
const exclusionCheckSanctionsParameterCommitment = isForEVM ? await sanctionsBuilder.getSanctionsEvmParameterCommitment() : await sanctionsBuilder.getSanctionsParameterCommitment();
|
|
4084
|
-
if (!paramCommitments.includes(exclusionCheckSanctionsParameterCommitment)) {
|
|
4085
|
-
console.warn("This proof does not verify the exclusion from the sanction lists");
|
|
4086
|
-
isCorrect = false;
|
|
4087
|
-
queryResultErrors.sanctions = {
|
|
4088
|
-
...queryResultErrors.sanctions,
|
|
4089
|
-
commitment: {
|
|
4090
|
-
expected: `Sanctions parameter commitment: ${exclusionCheckSanctionsParameterCommitment.toString()}`,
|
|
4091
|
-
received: `Parameter commitments included: ${paramCommitments.join(", ")}`,
|
|
4092
|
-
message: "This proof does not verify the exclusion from the sanction lists"
|
|
4093
|
-
}
|
|
4094
|
-
};
|
|
4095
|
-
}
|
|
4096
|
-
const {
|
|
4097
|
-
isCorrect: isCorrectSanctionsExclusion,
|
|
4098
|
-
queryResultErrors: queryResultErrorsSanctionsExclusion
|
|
4099
|
-
} = await this.checkSanctionsExclusionPublicInputs(
|
|
4100
|
-
queryResult,
|
|
4101
|
-
exclusionCheckSanctionsCommittedInputs.rootHash,
|
|
4102
|
-
sanctionsBuilder
|
|
4103
|
-
);
|
|
4104
|
-
isCorrect = isCorrect && isCorrectSanctionsExclusion;
|
|
4105
|
-
queryResultErrors = {
|
|
4106
|
-
...queryResultErrors,
|
|
4107
|
-
...queryResultErrorsSanctionsExclusion
|
|
4108
|
-
};
|
|
4109
|
-
}
|
|
4110
|
-
uniqueIdentifier = getNullifierFromOuterProof(proofData).toString(10);
|
|
4111
|
-
} else if (proof.name?.startsWith("sig_check_dsc")) {
|
|
4112
|
-
commitmentOut = getCommitmentFromDSCProof(proofData);
|
|
4113
|
-
const merkleRoot = getMerkleRootFromDSCProof(proofData);
|
|
4114
|
-
const {
|
|
4115
|
-
isCorrect: isCorrectCertificateRegistryRoot,
|
|
4116
|
-
queryResultErrors: queryResultErrorsCertificateRegistryRoot
|
|
4117
|
-
} = await this.checkCertificateRegistryRoot(
|
|
4118
|
-
merkleRoot.toString(16),
|
|
4119
|
-
queryResultErrors,
|
|
4120
|
-
false
|
|
4121
|
-
);
|
|
4122
|
-
isCorrect = isCorrect && isCorrectCertificateRegistryRoot;
|
|
4123
|
-
queryResultErrors = {
|
|
4124
|
-
...queryResultErrors,
|
|
4125
|
-
...queryResultErrorsCertificateRegistryRoot
|
|
4126
|
-
};
|
|
4127
|
-
} else if (proof.name?.startsWith("sig_check_id_data")) {
|
|
4128
|
-
commitmentIn = getCommitmentInFromIDDataProof(proofData);
|
|
4129
|
-
if (commitmentIn !== commitmentOut) {
|
|
4130
|
-
console.warn(
|
|
4131
|
-
"Failed to check the link between the certificate signature and ID signature"
|
|
4132
|
-
);
|
|
4133
|
-
isCorrect = false;
|
|
4134
|
-
queryResultErrors.sig_check_id_data = {
|
|
4135
|
-
...queryResultErrors.sig_check_id_data,
|
|
4136
|
-
commitment: {
|
|
4137
|
-
expected: `Commitment: ${commitmentOut?.toString() || "undefined"}`,
|
|
4138
|
-
received: `Commitment: ${commitmentIn?.toString() || "undefined"}`,
|
|
4139
|
-
message: "Failed to check the link between the certificate signature and ID signature"
|
|
4140
|
-
}
|
|
4141
|
-
};
|
|
4142
|
-
}
|
|
4143
|
-
commitmentOut = getCommitmentOutFromIDDataProof(proofData);
|
|
4144
|
-
} else if (proof.name?.startsWith("data_check_integrity")) {
|
|
4145
|
-
commitmentIn = getCommitmentInFromIntegrityProof(proofData);
|
|
4146
|
-
if (commitmentIn !== commitmentOut) {
|
|
4147
|
-
console.warn("Failed to check the link between the ID signature and the data signed");
|
|
4148
|
-
isCorrect = false;
|
|
4149
|
-
queryResultErrors.data_check_integrity = {
|
|
4150
|
-
...queryResultErrors.data_check_integrity,
|
|
4151
|
-
commitment: {
|
|
4152
|
-
expected: `Commitment: ${commitmentOut?.toString() || "undefined"}`,
|
|
4153
|
-
received: `Commitment: ${commitmentIn?.toString() || "undefined"}`,
|
|
4154
|
-
message: "Failed to check the link between the ID signature and the data signed"
|
|
4155
|
-
}
|
|
4156
|
-
};
|
|
4157
|
-
}
|
|
4158
|
-
commitmentOut = getCommitmentOutFromIntegrityProof(proofData);
|
|
4159
|
-
const currentDate = getCurrentDateFromIntegrityProof(proofData);
|
|
4160
|
-
const todayToCurrentDate = today.getTime() - currentDate.getTime();
|
|
4161
|
-
const expectedDifference = validity ? validity * 1e3 : DEFAULT_VALIDITY * 1e3;
|
|
4162
|
-
const actualDifference = today.getTime() - (today.getTime() - expectedDifference);
|
|
4163
|
-
if (todayToCurrentDate >= actualDifference) {
|
|
4164
|
-
console.warn(
|
|
4165
|
-
`The date used to check the validity of the ID is older than the validity period`
|
|
4166
|
-
);
|
|
4167
|
-
isCorrect = false;
|
|
4168
|
-
queryResultErrors.data_check_integrity = {
|
|
4169
|
-
...queryResultErrors.data_check_integrity,
|
|
4170
|
-
date: {
|
|
4171
|
-
expected: `Difference: ${validity} seconds`,
|
|
4172
|
-
received: `Difference: ${Math.round(todayToCurrentDate / 1e3)} seconds`,
|
|
4173
|
-
message: "The date used to check the validity of the ID is older than the validity period"
|
|
4174
|
-
}
|
|
4175
|
-
};
|
|
4176
|
-
}
|
|
4177
|
-
} else if (proof.name === "disclose_bytes") {
|
|
4178
|
-
commitmentIn = getCommitmentInFromDisclosureProof(proofData);
|
|
4179
|
-
if (commitmentIn !== commitmentOut) {
|
|
4180
|
-
console.warn(
|
|
4181
|
-
"Failed to check the link between the validity of the ID and the data to disclose"
|
|
4182
|
-
);
|
|
4183
|
-
isCorrect = false;
|
|
4184
|
-
queryResultErrors.disclose = {
|
|
4185
|
-
...queryResultErrors.disclose,
|
|
4186
|
-
commitment: {
|
|
4187
|
-
expected: `Commitment: ${commitmentOut?.toString() || "undefined"}`,
|
|
4188
|
-
received: `Commitment: ${commitmentIn?.toString() || "undefined"}`,
|
|
4189
|
-
message: "Failed to check the link between the validity of the ID and the data to disclose"
|
|
4190
|
-
}
|
|
4191
|
-
};
|
|
4192
|
-
}
|
|
4193
|
-
const paramCommitment = getParameterCommitmentFromDisclosureProof(proofData);
|
|
4194
|
-
const calculatedParamCommitment = await getDiscloseParameterCommitment(
|
|
4195
|
-
(proof.committedInputs?.disclose_bytes).discloseMask,
|
|
4196
|
-
(proof.committedInputs?.disclose_bytes).disclosedBytes
|
|
4197
|
-
);
|
|
4198
|
-
if (paramCommitment !== calculatedParamCommitment) {
|
|
4199
|
-
console.warn("The disclosed data does not match the data committed by the proof");
|
|
4200
|
-
isCorrect = false;
|
|
4201
|
-
queryResultErrors.disclose = {
|
|
4202
|
-
...queryResultErrors.disclose,
|
|
4203
|
-
commitment: {
|
|
4204
|
-
expected: `Commitment: ${calculatedParamCommitment}`,
|
|
4205
|
-
received: `Commitment: ${paramCommitment}`,
|
|
4206
|
-
message: "The disclosed data does not match the data committed by the proof"
|
|
4207
|
-
}
|
|
4208
|
-
};
|
|
4209
|
-
}
|
|
4210
|
-
const { isCorrect: isCorrectScope, queryResultErrors: queryResultErrorsScope } = this.checkScopeFromDisclosureProof(proofData, queryResultErrors, "disclose", scope);
|
|
4211
|
-
isCorrect = isCorrect && isCorrectScope;
|
|
4212
|
-
queryResultErrors = {
|
|
4213
|
-
...queryResultErrors,
|
|
4214
|
-
...queryResultErrorsScope
|
|
4215
|
-
};
|
|
4216
|
-
const { isCorrect: isCorrectDisclose, queryResultErrors: queryResultErrorsDisclose } = this.checkDiscloseBytesPublicInputs(proof, queryResult);
|
|
4217
|
-
isCorrect = isCorrect && isCorrectDisclose && isCorrectScope;
|
|
4218
|
-
queryResultErrors = {
|
|
4219
|
-
...queryResultErrors,
|
|
4220
|
-
...queryResultErrorsDisclose,
|
|
4221
|
-
...queryResultErrorsScope
|
|
4222
|
-
};
|
|
4223
|
-
uniqueIdentifier = getNullifierFromDisclosureProof(proofData).toString(10);
|
|
4224
|
-
} else if (proof.name === "compare_age") {
|
|
4225
|
-
commitmentIn = getCommitmentInFromDisclosureProof(proofData);
|
|
4226
|
-
if (commitmentIn !== commitmentOut) {
|
|
4227
|
-
console.warn(
|
|
4228
|
-
"Failed to check the link between the validity of the ID and the age derived from it"
|
|
4229
|
-
);
|
|
4230
|
-
isCorrect = false;
|
|
4231
|
-
queryResultErrors.age = {
|
|
4232
|
-
...queryResultErrors.age,
|
|
4233
|
-
commitment: {
|
|
4234
|
-
expected: `Commitment: ${commitmentOut}`,
|
|
4235
|
-
received: `Commitment: ${commitmentIn}`,
|
|
4236
|
-
message: "Failed to check the link between the validity of the ID and the age derived from it"
|
|
4237
|
-
}
|
|
4238
|
-
};
|
|
4239
|
-
}
|
|
4240
|
-
const paramCommitment = getParameterCommitmentFromDisclosureProof(proofData);
|
|
4241
|
-
const committedInputs = proof.committedInputs?.compare_age;
|
|
4242
|
-
const calculatedParamCommitment = await getAgeParameterCommitment(
|
|
4243
|
-
committedInputs.currentDateTimestamp,
|
|
4244
|
-
committedInputs.minAge,
|
|
4245
|
-
committedInputs.maxAge
|
|
4246
|
-
);
|
|
4247
|
-
if (paramCommitment !== calculatedParamCommitment) {
|
|
4248
|
-
console.warn(
|
|
4249
|
-
"The conditions for the age check do not match the conditions checked by the proof"
|
|
4250
|
-
);
|
|
4251
|
-
isCorrect = false;
|
|
4252
|
-
queryResultErrors.age = {
|
|
4253
|
-
...queryResultErrors.age,
|
|
4254
|
-
commitment: {
|
|
4255
|
-
expected: `Commitment: ${calculatedParamCommitment}`,
|
|
4256
|
-
received: `Commitment: ${paramCommitment}`,
|
|
4257
|
-
message: "The conditions for the age check do not match the conditions checked by the proof"
|
|
4258
|
-
}
|
|
4259
|
-
};
|
|
4260
|
-
}
|
|
4261
|
-
const { isCorrect: isCorrectScope, queryResultErrors: queryResultErrorsScope } = this.checkScopeFromDisclosureProof(proofData, queryResultErrors, "age", scope);
|
|
4262
|
-
const { isCorrect: isCorrectAge, queryResultErrors: queryResultErrorsAge } = this.checkAgePublicInputs(proof, queryResult);
|
|
4263
|
-
isCorrect = isCorrect && isCorrectAge && isCorrectScope;
|
|
4264
|
-
queryResultErrors = {
|
|
4265
|
-
...queryResultErrors,
|
|
4266
|
-
...queryResultErrorsAge,
|
|
4267
|
-
...queryResultErrorsScope
|
|
4268
|
-
};
|
|
4269
|
-
uniqueIdentifier = getNullifierFromDisclosureProof(proofData).toString(10);
|
|
4270
|
-
} else if (proof.name === "compare_birthdate") {
|
|
4271
|
-
commitmentIn = getCommitmentInFromDisclosureProof(proofData);
|
|
4272
|
-
if (commitmentIn !== commitmentOut) {
|
|
4273
|
-
console.warn(
|
|
4274
|
-
"Failed to check the link between the validity of the ID and the birthdate derived from it"
|
|
4275
|
-
);
|
|
4276
|
-
isCorrect = false;
|
|
4277
|
-
queryResultErrors.birthdate = {
|
|
4278
|
-
...queryResultErrors.birthdate,
|
|
4279
|
-
commitment: {
|
|
4280
|
-
expected: `Commitment: ${commitmentOut}`,
|
|
4281
|
-
received: `Commitment: ${commitmentIn}`,
|
|
4282
|
-
message: "Failed to check the link between the validity of the ID and the birthdate derived from it"
|
|
4283
|
-
}
|
|
4284
|
-
};
|
|
4285
|
-
}
|
|
4286
|
-
const paramCommitment = getParameterCommitmentFromDisclosureProof(proofData);
|
|
4287
|
-
const committedInputs = proof.committedInputs?.compare_birthdate;
|
|
4288
|
-
const calculatedParamCommitment = await getDateParameterCommitment(
|
|
4289
|
-
ProofType.BIRTHDATE,
|
|
4290
|
-
committedInputs.currentDateTimestamp,
|
|
4291
|
-
committedInputs.minDateTimestamp,
|
|
4292
|
-
committedInputs.maxDateTimestamp,
|
|
4293
|
-
0
|
|
4294
|
-
);
|
|
4295
|
-
if (paramCommitment !== calculatedParamCommitment) {
|
|
4296
|
-
console.warn(
|
|
4297
|
-
"The conditions for the birthdate check do not match the conditions checked by the proof"
|
|
4298
|
-
);
|
|
4299
|
-
isCorrect = false;
|
|
4300
|
-
queryResultErrors.birthdate = {
|
|
4301
|
-
...queryResultErrors.birthdate,
|
|
4302
|
-
commitment: {
|
|
4303
|
-
expected: `Commitment: ${calculatedParamCommitment}`,
|
|
4304
|
-
received: `Commitment: ${paramCommitment}`,
|
|
4305
|
-
message: "The conditions for the birthdate check do not match the conditions checked by the proof"
|
|
4306
|
-
}
|
|
4307
|
-
};
|
|
4308
|
-
}
|
|
4309
|
-
const { isCorrect: isCorrectScope, queryResultErrors: queryResultErrorsScope } = this.checkScopeFromDisclosureProof(proofData, queryResultErrors, "birthdate", scope);
|
|
4310
|
-
const { isCorrect: isCorrectBirthdate, queryResultErrors: queryResultErrorsBirthdate } = this.checkBirthdatePublicInputs(proof, queryResult);
|
|
4311
|
-
isCorrect = isCorrect && isCorrectBirthdate && isCorrectScope;
|
|
4312
|
-
queryResultErrors = {
|
|
4313
|
-
...queryResultErrors,
|
|
4314
|
-
...queryResultErrorsBirthdate,
|
|
4315
|
-
...queryResultErrorsScope
|
|
4316
|
-
};
|
|
4317
|
-
uniqueIdentifier = getNullifierFromDisclosureProof(proofData).toString(10);
|
|
4318
|
-
} else if (proof.name === "compare_expiry") {
|
|
4319
|
-
commitmentIn = getCommitmentInFromDisclosureProof(proofData);
|
|
4320
|
-
if (commitmentIn !== commitmentOut) {
|
|
4321
|
-
console.warn(
|
|
4322
|
-
"Failed to check the link between the validity of the ID and its expiry date"
|
|
4323
|
-
);
|
|
4324
|
-
isCorrect = false;
|
|
4325
|
-
queryResultErrors.expiry_date = {
|
|
4326
|
-
...queryResultErrors.expiry_date,
|
|
4327
|
-
commitment: {
|
|
4328
|
-
expected: `Commitment: ${commitmentOut}`,
|
|
4329
|
-
received: `Commitment: ${commitmentIn}`,
|
|
4330
|
-
message: "Failed to check the link between the validity of the ID and its expiry date"
|
|
4331
|
-
}
|
|
4332
|
-
};
|
|
4333
|
-
}
|
|
4334
|
-
const paramCommitment = getParameterCommitmentFromDisclosureProof(proofData);
|
|
4335
|
-
const committedInputs = proof.committedInputs?.compare_expiry;
|
|
4336
|
-
const calculatedParamCommitment = await getDateParameterCommitment(
|
|
4337
|
-
ProofType.EXPIRY_DATE,
|
|
4338
|
-
committedInputs.currentDateTimestamp,
|
|
4339
|
-
committedInputs.minDateTimestamp,
|
|
4340
|
-
committedInputs.maxDateTimestamp
|
|
4341
|
-
);
|
|
4342
|
-
if (paramCommitment !== calculatedParamCommitment) {
|
|
4343
|
-
console.warn(
|
|
4344
|
-
"The conditions for the expiry date check do not match the conditions checked by the proof"
|
|
4345
|
-
);
|
|
4346
|
-
isCorrect = false;
|
|
4347
|
-
queryResultErrors.expiry_date = {
|
|
4348
|
-
...queryResultErrors.expiry_date,
|
|
4349
|
-
commitment: {
|
|
4350
|
-
expected: `Commitment: ${calculatedParamCommitment}`,
|
|
4351
|
-
received: `Commitment: ${paramCommitment}`,
|
|
4352
|
-
message: "The conditions for the expiry date check do not match the conditions checked by the proof"
|
|
4353
|
-
}
|
|
4354
|
-
};
|
|
4355
|
-
}
|
|
4356
|
-
const { isCorrect: isCorrectScope, queryResultErrors: queryResultErrorsScope } = this.checkScopeFromDisclosureProof(proofData, queryResultErrors, "expiry_date", scope);
|
|
4357
|
-
const { isCorrect: isCorrectExpiryDate, queryResultErrors: queryResultErrorsExpiryDate } = this.checkExpiryDatePublicInputs(proof, queryResult);
|
|
4358
|
-
isCorrect = isCorrect && isCorrectExpiryDate && isCorrectScope;
|
|
4359
|
-
queryResultErrors = {
|
|
4360
|
-
...queryResultErrors,
|
|
4361
|
-
...queryResultErrorsExpiryDate,
|
|
4362
|
-
...queryResultErrorsScope
|
|
4363
|
-
};
|
|
4364
|
-
uniqueIdentifier = getNullifierFromDisclosureProof(proofData).toString(10);
|
|
4365
|
-
} else if (proof.name === "exclusion_check_nationality") {
|
|
4366
|
-
commitmentIn = getCommitmentInFromDisclosureProof(proofData);
|
|
4367
|
-
if (commitmentIn !== commitmentOut) {
|
|
4368
|
-
console.warn(
|
|
4369
|
-
"Failed to check the link between the validity of the ID and the nationality exclusion check"
|
|
4370
|
-
);
|
|
4371
|
-
isCorrect = false;
|
|
4372
|
-
queryResultErrors.nationality = {
|
|
4373
|
-
...queryResultErrors.nationality,
|
|
4374
|
-
commitment: {
|
|
4375
|
-
expected: `Commitment: ${commitmentOut}`,
|
|
4376
|
-
received: `Commitment: ${commitmentIn}`,
|
|
4377
|
-
message: "Failed to check the link between the validity of the ID and the nationality exclusion check"
|
|
4378
|
-
}
|
|
4379
|
-
};
|
|
4380
|
-
}
|
|
4381
|
-
const countryList = (proof.committedInputs?.exclusion_check_nationality).countries;
|
|
4382
|
-
const paramCommittment = getParameterCommitmentFromDisclosureProof(proofData);
|
|
4383
|
-
const calculatedParamCommitment = await getCountryParameterCommitment(
|
|
4384
|
-
ProofType.NATIONALITY_EXCLUSION,
|
|
4385
|
-
countryList,
|
|
4386
|
-
true
|
|
4387
|
-
);
|
|
4388
|
-
if (paramCommittment !== calculatedParamCommitment) {
|
|
4389
|
-
console.warn(
|
|
4390
|
-
"The committed country list for the exclusion check does not match the one from the proof"
|
|
4391
|
-
);
|
|
4392
|
-
isCorrect = false;
|
|
4393
|
-
queryResultErrors.nationality = {
|
|
4394
|
-
...queryResultErrors.nationality,
|
|
4395
|
-
commitment: {
|
|
4396
|
-
expected: `Commitment: ${calculatedParamCommitment}`,
|
|
4397
|
-
received: `Commitment: ${paramCommittment}`,
|
|
4398
|
-
message: "The committed country list for the exclusion check does not match the one from the proof"
|
|
4399
|
-
}
|
|
4400
|
-
};
|
|
4401
|
-
}
|
|
4402
|
-
const { isCorrect: isCorrectScope, queryResultErrors: queryResultErrorsScope } = this.checkScopeFromDisclosureProof(proofData, queryResultErrors, "nationality", scope);
|
|
4403
|
-
const {
|
|
4404
|
-
isCorrect: isCorrectNationalityExclusion,
|
|
4405
|
-
queryResultErrors: queryResultErrorsNationalityExclusion
|
|
4406
|
-
} = this.checkNationalityExclusionPublicInputs(queryResult, countryList);
|
|
4407
|
-
isCorrect = isCorrect && isCorrectNationalityExclusion && isCorrectScope;
|
|
4408
|
-
queryResultErrors = {
|
|
4409
|
-
...queryResultErrors,
|
|
4410
|
-
...queryResultErrorsNationalityExclusion,
|
|
4411
|
-
...queryResultErrorsScope
|
|
4412
|
-
};
|
|
4413
|
-
uniqueIdentifier = getNullifierFromDisclosureProof(proofData).toString(10);
|
|
4414
|
-
} else if (proof.name === "exclusion_check_issuing_country") {
|
|
4415
|
-
commitmentIn = getCommitmentInFromDisclosureProof(proofData);
|
|
4416
|
-
if (commitmentIn !== commitmentOut) {
|
|
4417
|
-
console.warn(
|
|
4418
|
-
"Failed to check the link between the validity of the ID and the issuing country exclusion check"
|
|
4419
|
-
);
|
|
4420
|
-
isCorrect = false;
|
|
4421
|
-
queryResultErrors.nationality = {
|
|
4422
|
-
...queryResultErrors.nationality,
|
|
4423
|
-
commitment: {
|
|
4424
|
-
expected: `Commitment: ${commitmentOut}`,
|
|
4425
|
-
received: `Commitment: ${commitmentIn}`,
|
|
4426
|
-
message: "Failed to check the link between the validity of the ID and the issuing country exclusion check"
|
|
4427
|
-
}
|
|
4428
|
-
};
|
|
4429
|
-
}
|
|
4430
|
-
const countryList = (proof.committedInputs?.exclusion_check_issuing_country).countries;
|
|
4431
|
-
const paramCommittment = getParameterCommitmentFromDisclosureProof(proofData);
|
|
4432
|
-
const calculatedParamCommitment = await getCountryParameterCommitment(
|
|
4433
|
-
ProofType.ISSUING_COUNTRY_EXCLUSION,
|
|
4434
|
-
countryList,
|
|
4435
|
-
true
|
|
4436
|
-
);
|
|
4437
|
-
if (paramCommittment !== calculatedParamCommitment) {
|
|
4438
|
-
console.warn(
|
|
4439
|
-
"The committed country list for the issuing country exclusion check does not match the one from the proof"
|
|
4440
|
-
);
|
|
4441
|
-
isCorrect = false;
|
|
4442
|
-
queryResultErrors.issuing_country = {
|
|
4443
|
-
...queryResultErrors.issuing_country,
|
|
4444
|
-
commitment: {
|
|
4445
|
-
expected: `Commitment: ${calculatedParamCommitment}`,
|
|
4446
|
-
received: `Commitment: ${paramCommittment}`,
|
|
4447
|
-
message: "The committed country list for the issuing country exclusion check does not match the one from the proof"
|
|
4448
|
-
}
|
|
4449
|
-
};
|
|
4450
|
-
}
|
|
4451
|
-
const { isCorrect: isCorrectScope, queryResultErrors: queryResultErrorsScope } = this.checkScopeFromDisclosureProof(proofData, queryResultErrors, "nationality", scope);
|
|
4452
|
-
const {
|
|
4453
|
-
isCorrect: isCorrectIssuingCountryExclusion,
|
|
4454
|
-
queryResultErrors: queryResultErrorsIssuingCountryExclusion
|
|
4455
|
-
} = this.checkIssuingCountryExclusionPublicInputs(queryResult, countryList);
|
|
4456
|
-
isCorrect = isCorrect && isCorrectIssuingCountryExclusion && isCorrectScope;
|
|
4457
|
-
queryResultErrors = {
|
|
4458
|
-
...queryResultErrors,
|
|
4459
|
-
...queryResultErrorsIssuingCountryExclusion,
|
|
4460
|
-
...queryResultErrorsScope
|
|
4461
|
-
};
|
|
4462
|
-
uniqueIdentifier = getNullifierFromDisclosureProof(proofData).toString(10);
|
|
4463
|
-
} else if (proof.name === "inclusion_check_nationality") {
|
|
4464
|
-
commitmentIn = getCommitmentInFromDisclosureProof(proofData);
|
|
4465
|
-
if (commitmentIn !== commitmentOut) {
|
|
4466
|
-
console.warn(
|
|
4467
|
-
"Failed to check the link between the validity of the ID and the nationality inclusion check"
|
|
4468
|
-
);
|
|
4469
|
-
isCorrect = false;
|
|
4470
|
-
queryResultErrors.nationality = {
|
|
4471
|
-
...queryResultErrors.nationality,
|
|
4472
|
-
commitment: {
|
|
4473
|
-
expected: `Commitment: ${commitmentOut}`,
|
|
4474
|
-
received: `Commitment: ${commitmentIn}`,
|
|
4475
|
-
message: "Failed to check the link between the validity of the ID and the nationality inclusion check"
|
|
4476
|
-
}
|
|
4477
|
-
};
|
|
4478
|
-
}
|
|
4479
|
-
const countryList = (proof.committedInputs?.inclusion_check_nationality).countries;
|
|
4480
|
-
const paramCommittment = getParameterCommitmentFromDisclosureProof(proofData);
|
|
4481
|
-
const calculatedParamCommitment = await getCountryParameterCommitment(
|
|
4482
|
-
ProofType.NATIONALITY_INCLUSION,
|
|
4483
|
-
countryList,
|
|
4484
|
-
false
|
|
4485
|
-
);
|
|
4486
|
-
if (paramCommittment !== calculatedParamCommitment) {
|
|
4487
|
-
console.warn(
|
|
4488
|
-
"The committed country list for the nationality inclusion check does not match the one from the proof"
|
|
4489
|
-
);
|
|
4490
|
-
isCorrect = false;
|
|
4491
|
-
queryResultErrors.nationality = {
|
|
4492
|
-
...queryResultErrors.nationality,
|
|
4493
|
-
commitment: {
|
|
4494
|
-
expected: `Commitment: ${calculatedParamCommitment}`,
|
|
4495
|
-
received: `Commitment: ${paramCommittment}`,
|
|
4496
|
-
message: "The committed country list for the nationality inclusion check does not match the one from the proof"
|
|
4497
|
-
}
|
|
4498
|
-
};
|
|
4499
|
-
}
|
|
4500
|
-
const { isCorrect: isCorrectScope, queryResultErrors: queryResultErrorsScope } = this.checkScopeFromDisclosureProof(proofData, queryResultErrors, "nationality", scope);
|
|
4501
|
-
const {
|
|
4502
|
-
isCorrect: isCorrectNationalityInclusion,
|
|
4503
|
-
queryResultErrors: queryResultErrorsNationalityInclusion
|
|
4504
|
-
} = this.checkNationalityInclusionPublicInputs(queryResult, countryList);
|
|
4505
|
-
isCorrect = isCorrect && isCorrectNationalityInclusion && isCorrectScope;
|
|
4506
|
-
queryResultErrors = {
|
|
4507
|
-
...queryResultErrors,
|
|
4508
|
-
...queryResultErrorsNationalityInclusion,
|
|
4509
|
-
...queryResultErrorsScope
|
|
4510
|
-
};
|
|
4511
|
-
uniqueIdentifier = getNullifierFromDisclosureProof(proofData).toString(10);
|
|
4512
|
-
} else if (proof.name === "inclusion_check_issuing_country") {
|
|
4513
|
-
commitmentIn = getCommitmentInFromDisclosureProof(proofData);
|
|
4514
|
-
if (commitmentIn !== commitmentOut) {
|
|
4515
|
-
console.warn(
|
|
4516
|
-
"Failed to check the link between the validity of the ID and the issuing country inclusion check"
|
|
4517
|
-
);
|
|
4518
|
-
isCorrect = false;
|
|
4519
|
-
queryResultErrors.nationality = {
|
|
4520
|
-
...queryResultErrors.nationality,
|
|
4521
|
-
commitment: {
|
|
4522
|
-
expected: `Commitment: ${commitmentOut}`,
|
|
4523
|
-
received: `Commitment: ${commitmentIn}`,
|
|
4524
|
-
message: "Failed to check the link between the validity of the ID and the issuing country inclusion check"
|
|
4525
|
-
}
|
|
4526
|
-
};
|
|
4527
|
-
}
|
|
4528
|
-
const countryList = (proof.committedInputs?.inclusion_check_issuing_country).countries;
|
|
4529
|
-
const paramCommittment = getParameterCommitmentFromDisclosureProof(proofData);
|
|
4530
|
-
const calculatedParamCommitment = await getCountryParameterCommitment(
|
|
4531
|
-
ProofType.ISSUING_COUNTRY_INCLUSION,
|
|
4532
|
-
countryList,
|
|
4533
|
-
false
|
|
4534
|
-
);
|
|
4535
|
-
if (paramCommittment !== calculatedParamCommitment) {
|
|
4536
|
-
console.warn(
|
|
4537
|
-
"The committed country list for the issuing country inclusion check does not match the one from the proof"
|
|
4538
|
-
);
|
|
4539
|
-
isCorrect = false;
|
|
4540
|
-
queryResultErrors.issuing_country = {
|
|
4541
|
-
...queryResultErrors.issuing_country,
|
|
4542
|
-
commitment: {
|
|
4543
|
-
expected: `Commitment: ${calculatedParamCommitment}`,
|
|
4544
|
-
received: `Commitment: ${paramCommittment}`,
|
|
4545
|
-
message: "The committed country list for the issuing country inclusion check does not match the one from the proof"
|
|
4546
|
-
}
|
|
4547
|
-
};
|
|
4548
|
-
}
|
|
4549
|
-
const { isCorrect: isCorrectScope, queryResultErrors: queryResultErrorsScope } = this.checkScopeFromDisclosureProof(proofData, queryResultErrors, "nationality", scope);
|
|
4550
|
-
const {
|
|
4551
|
-
isCorrect: isCorrectIssuingCountryInclusion,
|
|
4552
|
-
queryResultErrors: queryResultErrorsIssuingCountryInclusion
|
|
4553
|
-
} = this.checkIssuingCountryInclusionPublicInputs(queryResult, countryList);
|
|
4554
|
-
isCorrect = isCorrect && isCorrectIssuingCountryInclusion && isCorrectScope;
|
|
4555
|
-
queryResultErrors = {
|
|
4556
|
-
...queryResultErrors,
|
|
4557
|
-
...queryResultErrorsIssuingCountryInclusion,
|
|
4558
|
-
...queryResultErrorsScope
|
|
4559
|
-
};
|
|
4560
|
-
uniqueIdentifier = getNullifierFromDisclosureProof(proofData).toString(10);
|
|
4561
|
-
} else if (proof.name === "bind") {
|
|
4562
|
-
const bindCommittedInputs = proof.committedInputs?.bind;
|
|
4563
|
-
const paramCommittment = getParameterCommitmentFromDisclosureProof(proofData);
|
|
4564
|
-
const calculatedParamCommitment = await getBindParameterCommitment(
|
|
4565
|
-
formatBoundData(bindCommittedInputs.data)
|
|
4566
|
-
);
|
|
4567
|
-
if (paramCommittment !== calculatedParamCommitment) {
|
|
4568
|
-
console.warn("The bound data does not match the one from the proof");
|
|
4569
|
-
isCorrect = false;
|
|
4570
|
-
queryResultErrors.bind = {
|
|
4571
|
-
...queryResultErrors.bind,
|
|
4572
|
-
commitment: {
|
|
4573
|
-
expected: `Commitment: ${calculatedParamCommitment}`,
|
|
4574
|
-
received: `Commitment: ${paramCommittment}`,
|
|
4575
|
-
message: "The bound data does not match the one from the proof"
|
|
4576
|
-
}
|
|
4577
|
-
};
|
|
4578
|
-
}
|
|
4579
|
-
const { isCorrect: isCorrectBind, queryResultErrors: queryResultErrorsBind } = this.checkBindPublicInputs(queryResult, bindCommittedInputs.data);
|
|
4580
|
-
isCorrect = isCorrect && isCorrectBind;
|
|
4581
|
-
queryResultErrors = {
|
|
4582
|
-
...queryResultErrors,
|
|
4583
|
-
...queryResultErrorsBind
|
|
4584
|
-
};
|
|
4585
|
-
uniqueIdentifier = getNullifierFromDisclosureProof(proofData).toString(10);
|
|
4586
|
-
} else if (proof.name === "exclusion_check_sanctions") {
|
|
4587
|
-
const sanctionsBuilder = await SanctionsBuilder.create();
|
|
4588
|
-
const exclusionCheckSanctionsCommittedInputs = proof.committedInputs?.exclusion_check_sanctions;
|
|
4589
|
-
const calculatedParamCommitment = await sanctionsBuilder.getSanctionsParameterCommitment();
|
|
4590
|
-
const paramCommittment = getParameterCommitmentFromDisclosureProof(proofData);
|
|
4591
|
-
if (paramCommittment !== calculatedParamCommitment) {
|
|
4592
|
-
console.warn(
|
|
4593
|
-
"The sanction lists check against do not match the sanction lists from the proof"
|
|
4594
|
-
);
|
|
4595
|
-
isCorrect = false;
|
|
4596
|
-
queryResultErrors.sanctions = {
|
|
4597
|
-
...queryResultErrors.sanctions,
|
|
4598
|
-
commitment: {
|
|
4599
|
-
expected: `Commitment: ${calculatedParamCommitment.toString()}`,
|
|
4600
|
-
received: `Commitment: ${paramCommittment.toString()}`,
|
|
4601
|
-
message: "The sanction lists check against do not match the sanction lists from the proof"
|
|
4602
|
-
}
|
|
4603
|
-
};
|
|
4604
|
-
}
|
|
4605
|
-
const {
|
|
4606
|
-
isCorrect: isCorrectSanctionsExclusion,
|
|
4607
|
-
queryResultErrors: queryResultErrorsSanctionsExclusion
|
|
4608
|
-
} = await this.checkSanctionsExclusionPublicInputs(
|
|
4609
|
-
queryResult,
|
|
4610
|
-
exclusionCheckSanctionsCommittedInputs.rootHash,
|
|
4611
|
-
sanctionsBuilder
|
|
4612
|
-
);
|
|
4613
|
-
isCorrect = isCorrect && isCorrectSanctionsExclusion;
|
|
4614
|
-
queryResultErrors = {
|
|
4615
|
-
...queryResultErrors,
|
|
4616
|
-
...queryResultErrorsSanctionsExclusion
|
|
4617
|
-
};
|
|
4618
|
-
uniqueIdentifier = getNullifierFromDisclosureProof(proofData).toString(10);
|
|
4619
|
-
}
|
|
4620
|
-
}
|
|
4621
|
-
return { isCorrect, uniqueIdentifier, queryResultErrors };
|
|
4622
|
-
}
|
|
4623
423
|
/**
|
|
4624
424
|
* @notice Verify the proofs received from the mobile app.
|
|
4625
425
|
* @param proofs The proofs to verify.
|
|
@@ -4643,6 +443,7 @@ var ZKPassport = class {
|
|
|
4643
443
|
if (!proofs || proofs.length === 0) {
|
|
4644
444
|
return {
|
|
4645
445
|
uniqueIdentifier: void 0,
|
|
446
|
+
uniqueIdentifierType: void 0,
|
|
4646
447
|
verified: false
|
|
4647
448
|
};
|
|
4648
449
|
}
|
|
@@ -4656,16 +457,25 @@ var ZKPassport = class {
|
|
|
4656
457
|
});
|
|
4657
458
|
let verified = true;
|
|
4658
459
|
let uniqueIdentifier;
|
|
460
|
+
let uniqueIdentifierType;
|
|
4659
461
|
let queryResultErrors;
|
|
4660
462
|
const {
|
|
4661
463
|
isCorrect,
|
|
4662
464
|
uniqueIdentifier: uniqueIdentifierFromPublicInputs,
|
|
465
|
+
uniqueIdentifierType: uniqueIdentifierTypeFromPublicInputs,
|
|
4663
466
|
queryResultErrors: queryResultErrorsFromPublicInputs
|
|
4664
|
-
} = await
|
|
467
|
+
} = await PublicInputChecker.checkPublicInputs(
|
|
468
|
+
this.domain,
|
|
469
|
+
proofs,
|
|
470
|
+
formattedResult,
|
|
471
|
+
validity,
|
|
472
|
+
scope
|
|
473
|
+
);
|
|
4665
474
|
uniqueIdentifier = uniqueIdentifierFromPublicInputs;
|
|
475
|
+
uniqueIdentifierType = uniqueIdentifierTypeFromPublicInputs;
|
|
4666
476
|
verified = isCorrect;
|
|
4667
477
|
queryResultErrors = isCorrect ? void 0 : queryResultErrorsFromPublicInputs;
|
|
4668
|
-
if (uniqueIdentifier && (
|
|
478
|
+
if (uniqueIdentifier && uniqueIdentifierType && (uniqueIdentifierType === NullifierType.SALTED_MOCK || uniqueIdentifierType === NullifierType.NON_SALTED_MOCK) && !devMode) {
|
|
4669
479
|
verified = false;
|
|
4670
480
|
console.warn(
|
|
4671
481
|
"You are trying to verify a mock proof. This is only allowed in dev mode. To enable dev mode, set the `devMode` parameter to `true` in the request function parameters."
|
|
@@ -4733,25 +543,11 @@ var ZKPassport = class {
|
|
|
4733
543
|
}
|
|
4734
544
|
}
|
|
4735
545
|
uniqueIdentifier = verified ? uniqueIdentifier : void 0;
|
|
4736
|
-
|
|
546
|
+
uniqueIdentifierType = verified ? uniqueIdentifierType : void 0;
|
|
547
|
+
return { uniqueIdentifier, uniqueIdentifierType, verified, queryResultErrors };
|
|
4737
548
|
}
|
|
4738
549
|
getSolidityVerifierDetails(network) {
|
|
4739
|
-
|
|
4740
|
-
functionName: "verifyProof",
|
|
4741
|
-
abi: ZKPassportVerifier_default.abi
|
|
4742
|
-
};
|
|
4743
|
-
if (network === "ethereum_sepolia") {
|
|
4744
|
-
return {
|
|
4745
|
-
...baseConfig,
|
|
4746
|
-
address: "0xE486bdA3e2f8a6e00c6E2d3a4ADb0A7aa7b1cEe9"
|
|
4747
|
-
};
|
|
4748
|
-
} else if (network === "local_anvil") {
|
|
4749
|
-
return {
|
|
4750
|
-
...baseConfig,
|
|
4751
|
-
address: "0x0"
|
|
4752
|
-
};
|
|
4753
|
-
}
|
|
4754
|
-
throw new Error(`Unsupported network: ${network}`);
|
|
550
|
+
return SolidityVerifier.getDetails(network);
|
|
4755
551
|
}
|
|
4756
552
|
getSolidityVerifierParameters({
|
|
4757
553
|
proof,
|
|
@@ -4760,113 +556,13 @@ var ZKPassport = class {
|
|
|
4760
556
|
scope,
|
|
4761
557
|
devMode = false
|
|
4762
558
|
}) {
|
|
4763
|
-
|
|
4764
|
-
|
|
4765
|
-
"This proof cannot be verified on an EVM chain. Please make sure to use the `compressed-evm` mode."
|
|
4766
|
-
);
|
|
4767
|
-
}
|
|
4768
|
-
const proofData = getProofData(proof.proof, getNumberOfPublicInputs(proof.name));
|
|
4769
|
-
let committedInputCounts = [];
|
|
4770
|
-
let committedInputs = [];
|
|
4771
|
-
for (const key in proof.committedInputs) {
|
|
4772
|
-
const committedInputCount = getCommittedInputCount(key);
|
|
4773
|
-
const circuitName = key;
|
|
4774
|
-
committedInputCounts.push({ circuitName, count: committedInputCount });
|
|
4775
|
-
let compressedCommittedInputs2 = "";
|
|
4776
|
-
if (circuitName === "inclusion_check_issuing_country_evm" || circuitName === "inclusion_check_nationality_evm" || circuitName === "exclusion_check_issuing_country_evm" || circuitName === "exclusion_check_nationality_evm") {
|
|
4777
|
-
const value = proof.committedInputs[circuitName];
|
|
4778
|
-
const formattedCountries = value.countries;
|
|
4779
|
-
if (circuitName === "exclusion_check_issuing_country_evm" || circuitName === "exclusion_check_nationality_evm") {
|
|
4780
|
-
formattedCountries.sort((a, b) => a.localeCompare(b));
|
|
4781
|
-
}
|
|
4782
|
-
const proofType = (() => {
|
|
4783
|
-
switch (circuitName) {
|
|
4784
|
-
case "exclusion_check_issuing_country_evm":
|
|
4785
|
-
return ProofType.ISSUING_COUNTRY_EXCLUSION;
|
|
4786
|
-
case "exclusion_check_nationality_evm":
|
|
4787
|
-
return ProofType.NATIONALITY_EXCLUSION;
|
|
4788
|
-
case "inclusion_check_issuing_country_evm":
|
|
4789
|
-
return ProofType.ISSUING_COUNTRY_INCLUSION;
|
|
4790
|
-
case "inclusion_check_nationality_evm":
|
|
4791
|
-
return ProofType.NATIONALITY_INCLUSION;
|
|
4792
|
-
}
|
|
4793
|
-
})();
|
|
4794
|
-
compressedCommittedInputs2 = proofType.toString(16).padStart(2, "0") + rightPadArrayWithZeros(
|
|
4795
|
-
formattedCountries.map((c) => Array.from(new TextEncoder().encode(c))).flat(),
|
|
4796
|
-
600
|
|
4797
|
-
).map((x) => x.toString(16).padStart(2, "0")).join("");
|
|
4798
|
-
} else if (circuitName === "compare_age_evm") {
|
|
4799
|
-
const value = proof.committedInputs[circuitName];
|
|
4800
|
-
const currentDateBytes = Array.from(numberToBytesBE(value.currentDateTimestamp, 8));
|
|
4801
|
-
compressedCommittedInputs2 = ProofType.AGE.toString(16).padStart(2, "0") + currentDateBytes.map((x) => x.toString(16).padStart(2, "0")).join("") + value.minAge.toString(16).padStart(2, "0") + value.maxAge.toString(16).padStart(2, "0");
|
|
4802
|
-
} else if (circuitName === "compare_birthdate_evm") {
|
|
4803
|
-
const value = proof.committedInputs[circuitName];
|
|
4804
|
-
const currentDateBytes = Array.from(numberToBytesBE(value.currentDateTimestamp, 8));
|
|
4805
|
-
const minDateBytes = Array.from(numberToBytesBE(value.minDateTimestamp, 8));
|
|
4806
|
-
const maxDateBytes = Array.from(numberToBytesBE(value.maxDateTimestamp, 8));
|
|
4807
|
-
compressedCommittedInputs2 = ProofType.BIRTHDATE.toString(16).padStart(2, "0") + currentDateBytes.map((x) => x.toString(16).padStart(2, "0")).join("") + minDateBytes.map((x) => x.toString(16).padStart(2, "0")).join("") + maxDateBytes.map((x) => x.toString(16).padStart(2, "0")).join("");
|
|
4808
|
-
} else if (circuitName === "compare_expiry_evm") {
|
|
4809
|
-
const value = proof.committedInputs[circuitName];
|
|
4810
|
-
const currentDateBytes = Array.from(numberToBytesBE(value.currentDateTimestamp, 8));
|
|
4811
|
-
const minDateBytes = Array.from(numberToBytesBE(value.minDateTimestamp, 8));
|
|
4812
|
-
const maxDateBytes = Array.from(numberToBytesBE(value.maxDateTimestamp, 8));
|
|
4813
|
-
compressedCommittedInputs2 = ProofType.EXPIRY_DATE.toString(16).padStart(2, "0") + currentDateBytes.map((x) => x.toString(16).padStart(2, "0")).join("") + minDateBytes.map((x) => x.toString(16).padStart(2, "0")).join("") + maxDateBytes.map((x) => x.toString(16).padStart(2, "0")).join("");
|
|
4814
|
-
} else if (circuitName === "disclose_bytes_evm") {
|
|
4815
|
-
const value = proof.committedInputs[circuitName];
|
|
4816
|
-
compressedCommittedInputs2 = ProofType.DISCLOSE.toString(16).padStart(2, "0") + value.discloseMask.map((x) => x.toString(16).padStart(2, "0")).join("") + value.disclosedBytes.map((x) => x.toString(16).padStart(2, "0")).join("");
|
|
4817
|
-
} else if (circuitName === "bind_evm") {
|
|
4818
|
-
const value = proof.committedInputs[circuitName];
|
|
4819
|
-
compressedCommittedInputs2 = ProofType.BIND.toString(16).padStart(2, "0") + rightPadArrayWithZeros(formatBoundData(value.data), 500).map((x) => x.toString(16).padStart(2, "0")).join("");
|
|
4820
|
-
} else if (circuitName === "exclusion_check_sanctions_evm") {
|
|
4821
|
-
const value = proof.committedInputs[circuitName];
|
|
4822
|
-
compressedCommittedInputs2 = ProofType.SANCTIONS_EXCLUSION.toString(16).padStart(2, "0") + Array.from(numberToBytesBE(BigInt(value.rootHash), 32)).map((x) => x.toString(16).padStart(2, "0")).join("");
|
|
4823
|
-
} else {
|
|
4824
|
-
throw new Error(`Unsupported circuit for EVM verification: ${circuitName}`);
|
|
4825
|
-
}
|
|
4826
|
-
committedInputs.push({ circuitName, inputs: compressedCommittedInputs2 });
|
|
4827
|
-
}
|
|
4828
|
-
const parameterCommitments = getParamCommitmentsFromOuterProof(proofData).map(
|
|
4829
|
-
(x) => x.toString(16).padStart(64, "0")
|
|
4830
|
-
);
|
|
4831
|
-
let compressedCommittedInputs = "";
|
|
4832
|
-
let committedInputCountsArray = [];
|
|
4833
|
-
for (const commitment of parameterCommitments) {
|
|
4834
|
-
const committedInput = committedInputs.find((x) => {
|
|
4835
|
-
const rawHashedInputs = sha256(hexToBytes(x.inputs));
|
|
4836
|
-
const hashedInputs = new Uint8Array(rawHashedInputs.length);
|
|
4837
|
-
for (let i = 0; i < rawHashedInputs.length - 1; i++) {
|
|
4838
|
-
hashedInputs[i + 1] = rawHashedInputs[i];
|
|
4839
|
-
}
|
|
4840
|
-
hashedInputs[0] = 0;
|
|
4841
|
-
return bytesToHex(hashedInputs) === commitment.replace("0x", "");
|
|
4842
|
-
});
|
|
4843
|
-
if (committedInput) {
|
|
4844
|
-
const count = committedInputCounts.find(
|
|
4845
|
-
(x) => x.circuitName === committedInput.circuitName
|
|
4846
|
-
)?.count;
|
|
4847
|
-
if (count) {
|
|
4848
|
-
committedInputCountsArray.push(count);
|
|
4849
|
-
compressedCommittedInputs += committedInput.inputs;
|
|
4850
|
-
} else {
|
|
4851
|
-
throw new Error(`Unknown circuit name: ${committedInput.circuitName}`);
|
|
4852
|
-
}
|
|
4853
|
-
} else {
|
|
4854
|
-
throw new Error(`Invalid commitment: ${commitment}`);
|
|
4855
|
-
}
|
|
4856
|
-
}
|
|
4857
|
-
const params = {
|
|
4858
|
-
// Make sure the vkeyHash is 32 bytes
|
|
4859
|
-
vkeyHash: `0x${proof.vkeyHash.replace("0x", "").padStart(64, "0")}`,
|
|
4860
|
-
proof: `0x${proofData.proof.join("")}`,
|
|
4861
|
-
publicInputs: proofData.publicInputs,
|
|
4862
|
-
committedInputs: `0x${compressedCommittedInputs}`,
|
|
4863
|
-
committedInputCounts: committedInputCountsArray,
|
|
559
|
+
return SolidityVerifier.getParameters({
|
|
560
|
+
proof,
|
|
4864
561
|
validityPeriodInSeconds,
|
|
4865
562
|
domain: domain ?? this.domain,
|
|
4866
|
-
scope
|
|
563
|
+
scope,
|
|
4867
564
|
devMode
|
|
4868
|
-
};
|
|
4869
|
-
return params;
|
|
565
|
+
});
|
|
4870
566
|
}
|
|
4871
567
|
_getUrl(requestId) {
|
|
4872
568
|
const base64Config = Buffer.from(JSON.stringify(this.topicToConfig[requestId])).toString(
|