@zentity/fhevm-contracts 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/abi/ComplianceRules.json +25 -16
  2. package/abi/CompliantERC20.json +30 -16
  3. package/abi/IdentityRegistry.json +496 -119
  4. package/contracts/compliance/ComplianceRules.sol +40 -189
  5. package/contracts/core/IdentityRegistry.sol +280 -232
  6. package/contracts/interfaces/IComplianceRules.sol +30 -0
  7. package/contracts/interfaces/IIdentityRegistry.sol +133 -159
  8. package/contracts/proxy/ERC1967Proxy.sol +6 -0
  9. package/contracts/test/MockFacilitator.sol +40 -0
  10. package/contracts/tokens/CompliantERC20.sol +28 -242
  11. package/deployments/hardhat/addresses.json +3 -8
  12. package/dist/index.d.ts +175 -9
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +44 -1
  15. package/package.json +1 -1
  16. package/typechain-types/@openzeppelin/contracts/access/Ownable.ts +153 -0
  17. package/typechain-types/@openzeppelin/contracts/access/Ownable2Step.ts +217 -0
  18. package/typechain-types/@openzeppelin/contracts/access/index.ts +5 -0
  19. package/typechain-types/@openzeppelin/contracts/index.ts +11 -0
  20. package/typechain-types/@openzeppelin/contracts/interfaces/IERC1967.ts +168 -0
  21. package/typechain-types/@openzeppelin/contracts/interfaces/IERC5267.ts +151 -0
  22. package/typechain-types/{contracts/tokens/CompliantERC20.sol/IComplianceChecker.ts → @openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.ts} +12 -17
  23. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.ts +4 -0
  24. package/typechain-types/@openzeppelin/contracts/interfaces/index.ts +7 -0
  25. package/typechain-types/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.ts +105 -0
  26. package/typechain-types/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.ts +69 -0
  27. package/typechain-types/@openzeppelin/contracts/proxy/ERC1967/index.ts +5 -0
  28. package/typechain-types/@openzeppelin/contracts/proxy/Proxy.ts +69 -0
  29. package/typechain-types/@openzeppelin/contracts/proxy/beacon/IBeacon.ts +90 -0
  30. package/typechain-types/@openzeppelin/contracts/proxy/beacon/index.ts +4 -0
  31. package/typechain-types/@openzeppelin/contracts/proxy/index.ts +8 -0
  32. package/typechain-types/@openzeppelin/contracts/utils/Address.ts +69 -0
  33. package/typechain-types/@openzeppelin/contracts/utils/Errors.ts +69 -0
  34. package/typechain-types/@openzeppelin/contracts/utils/Strings.ts +69 -0
  35. package/typechain-types/@openzeppelin/contracts/utils/cryptography/ECDSA.ts +69 -0
  36. package/typechain-types/@openzeppelin/contracts/utils/cryptography/index.ts +4 -0
  37. package/typechain-types/@openzeppelin/contracts/utils/index.ts +10 -0
  38. package/typechain-types/@openzeppelin/contracts/utils/math/SafeCast.ts +69 -0
  39. package/typechain-types/@openzeppelin/contracts/utils/math/index.ts +4 -0
  40. package/typechain-types/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.ts +251 -0
  41. package/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.ts +186 -0
  42. package/typechain-types/@openzeppelin/contracts-upgradeable/access/index.ts +5 -0
  43. package/typechain-types/@openzeppelin/contracts-upgradeable/index.ts +9 -0
  44. package/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.ts +5 -0
  45. package/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.ts +105 -0
  46. package/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.ts +196 -0
  47. package/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts +5 -0
  48. package/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.ts +105 -0
  49. package/typechain-types/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.ts +184 -0
  50. package/typechain-types/@openzeppelin/contracts-upgradeable/utils/cryptography/index.ts +4 -0
  51. package/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.ts +6 -0
  52. package/typechain-types/@openzeppelin/index.ts +7 -0
  53. package/typechain-types/contracts/compliance/ComplianceRules.ts +18 -7
  54. package/typechain-types/contracts/core/IdentityRegistry.ts +493 -233
  55. package/typechain-types/contracts/index.ts +2 -0
  56. package/typechain-types/contracts/interfaces/IComplianceRules.ts +290 -0
  57. package/typechain-types/contracts/interfaces/IIdentityRegistry.ts +269 -341
  58. package/typechain-types/contracts/interfaces/index.ts +1 -0
  59. package/typechain-types/contracts/test/MockFacilitator.ts +187 -0
  60. package/typechain-types/contracts/test/index.ts +4 -0
  61. package/typechain-types/contracts/tokens/{CompliantERC20.sol/CompliantERC20.ts → CompliantERC20.ts} +19 -8
  62. package/typechain-types/contracts/tokens/index.ts +1 -2
  63. package/typechain-types/factories/@openzeppelin/contracts/access/Ownable2Step__factory.ts +138 -0
  64. package/typechain-types/factories/@openzeppelin/contracts/access/Ownable__factory.ts +96 -0
  65. package/typechain-types/factories/@openzeppelin/contracts/access/index.ts +5 -0
  66. package/typechain-types/factories/@openzeppelin/contracts/index.ts +7 -0
  67. package/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1967__factory.ts +67 -0
  68. package/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC5267__factory.ts +71 -0
  69. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable__factory.ts +38 -0
  70. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.ts +4 -0
  71. package/typechain-types/factories/@openzeppelin/contracts/interfaces/index.ts +6 -0
  72. package/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy__factory.ts +144 -0
  73. package/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.ts +105 -0
  74. package/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/index.ts +5 -0
  75. package/typechain-types/factories/@openzeppelin/contracts/proxy/Proxy__factory.ts +26 -0
  76. package/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/IBeacon__factory.ts +35 -0
  77. package/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/index.ts +4 -0
  78. package/typechain-types/factories/@openzeppelin/contracts/proxy/index.ts +6 -0
  79. package/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.ts +75 -0
  80. package/typechain-types/factories/@openzeppelin/contracts/utils/Errors__factory.ts +101 -0
  81. package/typechain-types/factories/@openzeppelin/contracts/utils/Strings__factory.ts +90 -0
  82. package/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/ECDSA__factory.ts +91 -0
  83. package/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/index.ts +4 -0
  84. package/typechain-types/factories/@openzeppelin/contracts/utils/index.ts +8 -0
  85. package/typechain-types/factories/@openzeppelin/contracts/utils/math/SafeCast__factory.ts +118 -0
  86. package/typechain-types/factories/@openzeppelin/contracts/utils/math/index.ts +4 -0
  87. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable__factory.ts +165 -0
  88. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.ts +122 -0
  89. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.ts +5 -0
  90. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.ts +6 -0
  91. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.ts +4 -0
  92. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.ts +48 -0
  93. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.ts +153 -0
  94. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts +5 -0
  95. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.ts +48 -0
  96. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable__factory.ts +97 -0
  97. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/cryptography/index.ts +4 -0
  98. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.ts +5 -0
  99. package/typechain-types/factories/@openzeppelin/index.ts +5 -0
  100. package/typechain-types/factories/contracts/compliance/ComplianceRules__factory.ts +26 -17
  101. package/typechain-types/factories/contracts/core/IdentityRegistry__factory.ts +493 -116
  102. package/typechain-types/factories/contracts/index.ts +1 -0
  103. package/typechain-types/factories/contracts/interfaces/IComplianceRules__factory.ts +193 -0
  104. package/typechain-types/factories/contracts/interfaces/IIdentityRegistry__factory.ts +236 -186
  105. package/typechain-types/factories/contracts/interfaces/index.ts +1 -0
  106. package/typechain-types/factories/contracts/test/MockFacilitator__factory.ts +194 -0
  107. package/typechain-types/factories/contracts/test/index.ts +4 -0
  108. package/typechain-types/factories/contracts/tokens/CompliantERC20__factory.ts +595 -0
  109. package/typechain-types/factories/contracts/tokens/index.ts +1 -1
  110. package/typechain-types/factories/index.ts +1 -0
  111. package/typechain-types/hardhat.d.ts +394 -16
  112. package/typechain-types/index.ts +48 -4
  113. package/deployments/hardhat/.chainId +0 -1
  114. package/typechain-types/contracts/tokens/CompliantERC20.sol/index.ts +0 -5
  115. package/typechain-types/factories/contracts/tokens/CompliantERC20.sol/CompliantERC20__factory.ts +0 -581
  116. package/typechain-types/factories/contracts/tokens/CompliantERC20.sol/IComplianceChecker__factory.ts +0 -44
  117. package/typechain-types/factories/contracts/tokens/CompliantERC20.sol/index.ts +0 -5
@@ -25,6 +25,17 @@ const _abi = [
25
25
  name: "AccessProhibited",
26
26
  type: "error",
27
27
  },
28
+ {
29
+ inputs: [
30
+ {
31
+ internalType: "address",
32
+ name: "target",
33
+ type: "address",
34
+ },
35
+ ],
36
+ name: "AddressEmptyCode",
37
+ type: "error",
38
+ },
28
39
  {
29
40
  inputs: [],
30
41
  name: "AlreadyAttested",
@@ -32,71 +43,129 @@ const _abi = [
32
43
  },
33
44
  {
34
45
  inputs: [],
35
- name: "InvalidOwner",
46
+ name: "ECDSAInvalidSignature",
47
+ type: "error",
48
+ },
49
+ {
50
+ inputs: [
51
+ {
52
+ internalType: "uint256",
53
+ name: "length",
54
+ type: "uint256",
55
+ },
56
+ ],
57
+ name: "ECDSAInvalidSignatureLength",
58
+ type: "error",
59
+ },
60
+ {
61
+ inputs: [
62
+ {
63
+ internalType: "bytes32",
64
+ name: "s",
65
+ type: "bytes32",
66
+ },
67
+ ],
68
+ name: "ECDSAInvalidSignatureS",
69
+ type: "error",
70
+ },
71
+ {
72
+ inputs: [
73
+ {
74
+ internalType: "address",
75
+ name: "implementation",
76
+ type: "address",
77
+ },
78
+ ],
79
+ name: "ERC1967InvalidImplementation",
36
80
  type: "error",
37
81
  },
38
82
  {
39
83
  inputs: [],
40
- name: "NotAttested",
84
+ name: "ERC1967NonPayable",
41
85
  type: "error",
42
86
  },
43
87
  {
44
88
  inputs: [],
45
- name: "OnlyOwner",
89
+ name: "FailedCall",
46
90
  type: "error",
47
91
  },
48
92
  {
49
93
  inputs: [],
50
- name: "OnlyPendingOwner",
94
+ name: "InvalidInitialization",
51
95
  type: "error",
52
96
  },
53
97
  {
54
98
  inputs: [],
55
- name: "OnlyRegistrar",
99
+ name: "InvalidPermit",
56
100
  type: "error",
57
101
  },
58
102
  {
59
103
  inputs: [],
60
- name: "ZamaProtocolUnsupported",
104
+ name: "NotAttested",
105
+ type: "error",
106
+ },
107
+ {
108
+ inputs: [],
109
+ name: "NotInitializing",
110
+ type: "error",
111
+ },
112
+ {
113
+ inputs: [],
114
+ name: "OnlyRegistrar",
61
115
  type: "error",
62
116
  },
63
117
  {
64
- anonymous: false,
65
118
  inputs: [
66
119
  {
67
- indexed: true,
68
- internalType: "address",
69
- name: "user",
70
- type: "address",
71
- },
72
- {
73
- indexed: true,
74
120
  internalType: "address",
75
- name: "grantee",
121
+ name: "owner",
76
122
  type: "address",
77
123
  },
78
124
  ],
79
- name: "AccessGranted",
80
- type: "event",
125
+ name: "OwnableInvalidOwner",
126
+ type: "error",
81
127
  },
82
128
  {
83
- anonymous: false,
84
129
  inputs: [
85
130
  {
86
- indexed: true,
87
131
  internalType: "address",
88
- name: "user",
132
+ name: "account",
89
133
  type: "address",
90
134
  },
135
+ ],
136
+ name: "OwnableUnauthorizedAccount",
137
+ type: "error",
138
+ },
139
+ {
140
+ inputs: [],
141
+ name: "PermitExpired",
142
+ type: "error",
143
+ },
144
+ {
145
+ inputs: [],
146
+ name: "UUPSUnauthorizedCallContext",
147
+ type: "error",
148
+ },
149
+ {
150
+ inputs: [
91
151
  {
92
- indexed: true,
93
- internalType: "address",
94
- name: "registrar",
95
- type: "address",
152
+ internalType: "bytes32",
153
+ name: "slot",
154
+ type: "bytes32",
96
155
  },
97
156
  ],
98
- name: "IdentityAttested",
99
- type: "event",
157
+ name: "UUPSUnsupportedProxiableUUID",
158
+ type: "error",
159
+ },
160
+ {
161
+ inputs: [],
162
+ name: "ZamaProtocolUnsupported",
163
+ type: "error",
164
+ },
165
+ {
166
+ inputs: [],
167
+ name: "ZeroAddress",
168
+ type: "error",
100
169
  },
101
170
  {
102
171
  anonymous: false,
@@ -110,23 +179,29 @@ const _abi = [
110
179
  {
111
180
  indexed: true,
112
181
  internalType: "address",
113
- name: "registrar",
182
+ name: "grantee",
114
183
  type: "address",
115
184
  },
116
185
  {
117
- indexed: true,
118
- internalType: "uint256",
119
- name: "attestationId",
120
- type: "uint256",
186
+ indexed: false,
187
+ internalType: "uint8",
188
+ name: "attributeMask",
189
+ type: "uint8",
121
190
  },
122
191
  {
123
192
  indexed: false,
124
- internalType: "uint256",
125
- name: "timestamp",
126
- type: "uint256",
193
+ internalType: "enum IIdentityRegistry.Purpose",
194
+ name: "purpose",
195
+ type: "uint8",
127
196
  },
128
197
  ],
129
- name: "IdentityAttestedDetailed",
198
+ name: "AttributeAccessGranted",
199
+ type: "event",
200
+ },
201
+ {
202
+ anonymous: false,
203
+ inputs: [],
204
+ name: "EIP712DomainChanged",
130
205
  type: "event",
131
206
  },
132
207
  {
@@ -139,7 +214,7 @@ const _abi = [
139
214
  type: "address",
140
215
  },
141
216
  ],
142
- name: "IdentityRevoked",
217
+ name: "IdentityAttested",
143
218
  type: "event",
144
219
  },
145
220
  {
@@ -151,26 +226,21 @@ const _abi = [
151
226
  name: "user",
152
227
  type: "address",
153
228
  },
154
- {
155
- indexed: true,
156
- internalType: "address",
157
- name: "registrar",
158
- type: "address",
159
- },
160
- {
161
- indexed: true,
162
- internalType: "uint256",
163
- name: "attestationId",
164
- type: "uint256",
165
- },
229
+ ],
230
+ name: "IdentityRevoked",
231
+ type: "event",
232
+ },
233
+ {
234
+ anonymous: false,
235
+ inputs: [
166
236
  {
167
237
  indexed: false,
168
- internalType: "uint256",
169
- name: "timestamp",
170
- type: "uint256",
238
+ internalType: "uint64",
239
+ name: "version",
240
+ type: "uint64",
171
241
  },
172
242
  ],
173
- name: "IdentityRevokedDetailed",
243
+ name: "Initialized",
174
244
  type: "event",
175
245
  },
176
246
  {
@@ -179,13 +249,13 @@ const _abi = [
179
249
  {
180
250
  indexed: true,
181
251
  internalType: "address",
182
- name: "currentOwner",
252
+ name: "previousOwner",
183
253
  type: "address",
184
254
  },
185
255
  {
186
256
  indexed: true,
187
257
  internalType: "address",
188
- name: "pendingOwner",
258
+ name: "newOwner",
189
259
  type: "address",
190
260
  },
191
261
  ],
@@ -220,8 +290,14 @@ const _abi = [
220
290
  name: "registrar",
221
291
  type: "address",
222
292
  },
293
+ {
294
+ indexed: false,
295
+ internalType: "bool",
296
+ name: "status",
297
+ type: "bool",
298
+ },
223
299
  ],
224
- name: "RegistrarAdded",
300
+ name: "RegistrarUpdated",
225
301
  type: "event",
226
302
  },
227
303
  {
@@ -230,29 +306,107 @@ const _abi = [
230
306
  {
231
307
  indexed: true,
232
308
  internalType: "address",
233
- name: "registrar",
309
+ name: "implementation",
234
310
  type: "address",
235
311
  },
236
312
  ],
237
- name: "RegistrarRemoved",
313
+ name: "Upgraded",
238
314
  type: "event",
239
315
  },
240
316
  {
241
317
  inputs: [],
242
- name: "acceptOwnership",
243
- outputs: [],
244
- stateMutability: "nonpayable",
318
+ name: "ATTEST_PERMIT_TYPEHASH",
319
+ outputs: [
320
+ {
321
+ internalType: "bytes32",
322
+ name: "",
323
+ type: "bytes32",
324
+ },
325
+ ],
326
+ stateMutability: "view",
245
327
  type: "function",
246
328
  },
247
329
  {
248
- inputs: [
330
+ inputs: [],
331
+ name: "ATTR_ALL",
332
+ outputs: [
249
333
  {
250
- internalType: "address",
251
- name: "registrar",
252
- type: "address",
334
+ internalType: "uint8",
335
+ name: "",
336
+ type: "uint8",
253
337
  },
254
338
  ],
255
- name: "addRegistrar",
339
+ stateMutability: "view",
340
+ type: "function",
341
+ },
342
+ {
343
+ inputs: [],
344
+ name: "ATTR_BIRTH_YEAR",
345
+ outputs: [
346
+ {
347
+ internalType: "uint8",
348
+ name: "",
349
+ type: "uint8",
350
+ },
351
+ ],
352
+ stateMutability: "view",
353
+ type: "function",
354
+ },
355
+ {
356
+ inputs: [],
357
+ name: "ATTR_BLACKLIST",
358
+ outputs: [
359
+ {
360
+ internalType: "uint8",
361
+ name: "",
362
+ type: "uint8",
363
+ },
364
+ ],
365
+ stateMutability: "view",
366
+ type: "function",
367
+ },
368
+ {
369
+ inputs: [],
370
+ name: "ATTR_COMPLIANCE",
371
+ outputs: [
372
+ {
373
+ internalType: "uint8",
374
+ name: "",
375
+ type: "uint8",
376
+ },
377
+ ],
378
+ stateMutability: "view",
379
+ type: "function",
380
+ },
381
+ {
382
+ inputs: [],
383
+ name: "ATTR_COUNTRY",
384
+ outputs: [
385
+ {
386
+ internalType: "uint8",
387
+ name: "",
388
+ type: "uint8",
389
+ },
390
+ ],
391
+ stateMutability: "view",
392
+ type: "function",
393
+ },
394
+ {
395
+ inputs: [],
396
+ name: "UPGRADE_INTERFACE_VERSION",
397
+ outputs: [
398
+ {
399
+ internalType: "string",
400
+ name: "",
401
+ type: "string",
402
+ },
403
+ ],
404
+ stateMutability: "view",
405
+ type: "function",
406
+ },
407
+ {
408
+ inputs: [],
409
+ name: "acceptOwnership",
256
410
  outputs: [],
257
411
  stateMutability: "nonpayable",
258
412
  type: "function",
@@ -260,9 +414,61 @@ const _abi = [
260
414
  {
261
415
  inputs: [
262
416
  {
263
- internalType: "address",
264
- name: "user",
265
- type: "address",
417
+ components: [
418
+ {
419
+ internalType: "uint8",
420
+ name: "birthYearOffset",
421
+ type: "uint8",
422
+ },
423
+ {
424
+ internalType: "uint16",
425
+ name: "countryCode",
426
+ type: "uint16",
427
+ },
428
+ {
429
+ internalType: "uint8",
430
+ name: "complianceLevel",
431
+ type: "uint8",
432
+ },
433
+ {
434
+ internalType: "bool",
435
+ name: "isBlacklisted",
436
+ type: "bool",
437
+ },
438
+ {
439
+ internalType: "bytes32",
440
+ name: "proofSetHash",
441
+ type: "bytes32",
442
+ },
443
+ {
444
+ internalType: "uint32",
445
+ name: "policyVersion",
446
+ type: "uint32",
447
+ },
448
+ {
449
+ internalType: "uint256",
450
+ name: "deadline",
451
+ type: "uint256",
452
+ },
453
+ {
454
+ internalType: "uint8",
455
+ name: "v",
456
+ type: "uint8",
457
+ },
458
+ {
459
+ internalType: "bytes32",
460
+ name: "r",
461
+ type: "bytes32",
462
+ },
463
+ {
464
+ internalType: "bytes32",
465
+ name: "s",
466
+ type: "bytes32",
467
+ },
468
+ ],
469
+ internalType: "struct IIdentityRegistry.AttestPermitData",
470
+ name: "permit",
471
+ type: "tuple",
266
472
  },
267
473
  {
268
474
  internalType: "externalEuint8",
@@ -290,7 +496,7 @@ const _abi = [
290
496
  type: "bytes",
291
497
  },
292
498
  ],
293
- name: "attestIdentity",
499
+ name: "attestWithPermit",
294
500
  outputs: [],
295
501
  stateMutability: "nonpayable",
296
502
  type: "function",
@@ -307,7 +513,7 @@ const _abi = [
307
513
  outputs: [
308
514
  {
309
515
  internalType: "uint256",
310
- name: "timestamp",
516
+ name: "ts",
311
517
  type: "uint256",
312
518
  },
313
519
  ],
@@ -315,16 +521,27 @@ const _abi = [
315
521
  type: "function",
316
522
  },
317
523
  {
318
- inputs: [],
319
- name: "confidentialProtocolId",
524
+ inputs: [
525
+ {
526
+ internalType: "address",
527
+ name: "user",
528
+ type: "address",
529
+ },
530
+ {
531
+ internalType: "uint8",
532
+ name: "minLevel",
533
+ type: "uint8",
534
+ },
535
+ ],
536
+ name: "checkCompliance",
320
537
  outputs: [
321
538
  {
322
- internalType: "uint256",
539
+ internalType: "ebool",
323
540
  name: "",
324
- type: "uint256",
541
+ type: "bytes32",
325
542
  },
326
543
  ],
327
- stateMutability: "view",
544
+ stateMutability: "nonpayable",
328
545
  type: "function",
329
546
  },
330
547
  {
@@ -339,7 +556,7 @@ const _abi = [
339
556
  outputs: [
340
557
  {
341
558
  internalType: "uint256",
342
- name: "attestationId",
559
+ name: "id",
343
560
  type: "uint256",
344
561
  },
345
562
  ],
@@ -347,35 +564,44 @@ const _abi = [
347
564
  type: "function",
348
565
  },
349
566
  {
350
- inputs: [
567
+ inputs: [],
568
+ name: "eip712Domain",
569
+ outputs: [
351
570
  {
352
- internalType: "address",
353
- name: "user",
354
- type: "address",
571
+ internalType: "bytes1",
572
+ name: "fields",
573
+ type: "bytes1",
355
574
  },
356
575
  {
357
- internalType: "uint256",
358
- name: "attestationId",
359
- type: "uint256",
576
+ internalType: "string",
577
+ name: "name",
578
+ type: "string",
360
579
  },
361
- ],
362
- name: "getAttestationMetadata",
363
- outputs: [
364
580
  {
365
- internalType: "uint256",
366
- name: "timestamp",
367
- type: "uint256",
581
+ internalType: "string",
582
+ name: "version",
583
+ type: "string",
368
584
  },
369
585
  {
370
586
  internalType: "uint256",
371
- name: "revokedAt",
587
+ name: "chainId",
372
588
  type: "uint256",
373
589
  },
374
590
  {
375
591
  internalType: "address",
376
- name: "registrar",
592
+ name: "verifyingContract",
377
593
  type: "address",
378
594
  },
595
+ {
596
+ internalType: "bytes32",
597
+ name: "salt",
598
+ type: "bytes32",
599
+ },
600
+ {
601
+ internalType: "uint256[]",
602
+ name: "extensions",
603
+ type: "uint256[]",
604
+ },
379
605
  ],
380
606
  stateMutability: "view",
381
607
  type: "function",
@@ -407,7 +633,7 @@ const _abi = [
407
633
  type: "address",
408
634
  },
409
635
  ],
410
- name: "getBlacklistResult",
636
+ name: "getBlacklistStatus",
411
637
  outputs: [
412
638
  {
413
639
  internalType: "ebool",
@@ -426,10 +652,10 @@ const _abi = [
426
652
  type: "address",
427
653
  },
428
654
  ],
429
- name: "getBlacklistStatus",
655
+ name: "getComplianceLevel",
430
656
  outputs: [
431
657
  {
432
- internalType: "ebool",
658
+ internalType: "euint8",
433
659
  name: "",
434
660
  type: "bytes32",
435
661
  },
@@ -445,10 +671,10 @@ const _abi = [
445
671
  type: "address",
446
672
  },
447
673
  ],
448
- name: "getComplianceLevel",
674
+ name: "getCountryCode",
449
675
  outputs: [
450
676
  {
451
- internalType: "euint8",
677
+ internalType: "euint16",
452
678
  name: "",
453
679
  type: "bytes32",
454
680
  },
@@ -464,17 +690,17 @@ const _abi = [
464
690
  type: "address",
465
691
  },
466
692
  {
467
- internalType: "uint8",
468
- name: "minLevel",
469
- type: "uint8",
693
+ internalType: "address",
694
+ name: "grantee",
695
+ type: "address",
470
696
  },
471
697
  ],
472
- name: "getComplianceLevelResult",
698
+ name: "getGrantedAttributes",
473
699
  outputs: [
474
700
  {
475
- internalType: "ebool",
701
+ internalType: "uint8",
476
702
  name: "",
477
- type: "bytes32",
703
+ type: "uint8",
478
704
  },
479
705
  ],
480
706
  stateMutability: "view",
@@ -488,12 +714,12 @@ const _abi = [
488
714
  type: "address",
489
715
  },
490
716
  ],
491
- name: "getCountryCode",
717
+ name: "getPolicyVersion",
492
718
  outputs: [
493
719
  {
494
- internalType: "euint16",
720
+ internalType: "uint32",
495
721
  name: "",
496
- type: "bytes32",
722
+ type: "uint32",
497
723
  },
498
724
  ],
499
725
  stateMutability: "view",
@@ -506,13 +732,27 @@ const _abi = [
506
732
  name: "user",
507
733
  type: "address",
508
734
  },
735
+ ],
736
+ name: "getProofSetHash",
737
+ outputs: [
509
738
  {
510
- internalType: "uint16",
511
- name: "country",
512
- type: "uint16",
739
+ internalType: "bytes32",
740
+ name: "",
741
+ type: "bytes32",
513
742
  },
514
743
  ],
515
- name: "getCountryResult",
744
+ stateMutability: "view",
745
+ type: "function",
746
+ },
747
+ {
748
+ inputs: [
749
+ {
750
+ internalType: "bytes32",
751
+ name: "key",
752
+ type: "bytes32",
753
+ },
754
+ ],
755
+ name: "getVerificationResult",
516
756
  outputs: [
517
757
  {
518
758
  internalType: "ebool",
@@ -536,6 +776,29 @@ const _abi = [
536
776
  stateMutability: "nonpayable",
537
777
  type: "function",
538
778
  },
779
+ {
780
+ inputs: [
781
+ {
782
+ internalType: "address",
783
+ name: "grantee",
784
+ type: "address",
785
+ },
786
+ {
787
+ internalType: "uint8",
788
+ name: "attributeMask",
789
+ type: "uint8",
790
+ },
791
+ {
792
+ internalType: "enum IIdentityRegistry.Purpose",
793
+ name: "purpose",
794
+ type: "uint8",
795
+ },
796
+ ],
797
+ name: "grantAttributeAccess",
798
+ outputs: [],
799
+ stateMutability: "nonpayable",
800
+ type: "function",
801
+ },
539
802
  {
540
803
  inputs: [
541
804
  {
@@ -560,6 +823,19 @@ const _abi = [
560
823
  stateMutability: "nonpayable",
561
824
  type: "function",
562
825
  },
826
+ {
827
+ inputs: [
828
+ {
829
+ internalType: "address",
830
+ name: "initialOwner",
831
+ type: "address",
832
+ },
833
+ ],
834
+ name: "initialize",
835
+ outputs: [],
836
+ stateMutability: "nonpayable",
837
+ type: "function",
838
+ },
563
839
  {
564
840
  inputs: [
565
841
  {
@@ -622,6 +898,19 @@ const _abi = [
622
898
  stateMutability: "nonpayable",
623
899
  type: "function",
624
900
  },
901
+ {
902
+ inputs: [],
903
+ name: "latestAttestationId",
904
+ outputs: [
905
+ {
906
+ internalType: "uint256",
907
+ name: "",
908
+ type: "uint256",
909
+ },
910
+ ],
911
+ stateMutability: "view",
912
+ type: "function",
913
+ },
625
914
  {
626
915
  inputs: [
627
916
  {
@@ -630,11 +919,11 @@ const _abi = [
630
919
  type: "address",
631
920
  },
632
921
  ],
633
- name: "latestAttestationId",
922
+ name: "nonces",
634
923
  outputs: [
635
924
  {
636
925
  internalType: "uint256",
637
- name: "attestationId",
926
+ name: "nonce",
638
927
  type: "uint256",
639
928
  },
640
929
  ],
@@ -667,6 +956,57 @@ const _abi = [
667
956
  stateMutability: "view",
668
957
  type: "function",
669
958
  },
959
+ {
960
+ inputs: [
961
+ {
962
+ internalType: "address",
963
+ name: "user",
964
+ type: "address",
965
+ },
966
+ ],
967
+ name: "policyVersions",
968
+ outputs: [
969
+ {
970
+ internalType: "uint32",
971
+ name: "version",
972
+ type: "uint32",
973
+ },
974
+ ],
975
+ stateMutability: "view",
976
+ type: "function",
977
+ },
978
+ {
979
+ inputs: [
980
+ {
981
+ internalType: "address",
982
+ name: "user",
983
+ type: "address",
984
+ },
985
+ ],
986
+ name: "proofSetHashes",
987
+ outputs: [
988
+ {
989
+ internalType: "bytes32",
990
+ name: "hash",
991
+ type: "bytes32",
992
+ },
993
+ ],
994
+ stateMutability: "view",
995
+ type: "function",
996
+ },
997
+ {
998
+ inputs: [],
999
+ name: "proxiableUUID",
1000
+ outputs: [
1001
+ {
1002
+ internalType: "bytes32",
1003
+ name: "",
1004
+ type: "bytes32",
1005
+ },
1006
+ ],
1007
+ stateMutability: "view",
1008
+ type: "function",
1009
+ },
670
1010
  {
671
1011
  inputs: [
672
1012
  {
@@ -686,15 +1026,29 @@ const _abi = [
686
1026
  stateMutability: "view",
687
1027
  type: "function",
688
1028
  },
1029
+ {
1030
+ inputs: [],
1031
+ name: "renounceOwnership",
1032
+ outputs: [],
1033
+ stateMutability: "nonpayable",
1034
+ type: "function",
1035
+ },
1036
+ {
1037
+ inputs: [],
1038
+ name: "revokeIdentity",
1039
+ outputs: [],
1040
+ stateMutability: "nonpayable",
1041
+ type: "function",
1042
+ },
689
1043
  {
690
1044
  inputs: [
691
1045
  {
692
1046
  internalType: "address",
693
- name: "registrar",
1047
+ name: "user",
694
1048
  type: "address",
695
1049
  },
696
1050
  ],
697
- name: "removeRegistrar",
1051
+ name: "revokeIdentityFor",
698
1052
  outputs: [],
699
1053
  stateMutability: "nonpayable",
700
1054
  type: "function",
@@ -703,11 +1057,16 @@ const _abi = [
703
1057
  inputs: [
704
1058
  {
705
1059
  internalType: "address",
706
- name: "user",
1060
+ name: "registrar",
707
1061
  type: "address",
708
1062
  },
1063
+ {
1064
+ internalType: "bool",
1065
+ name: "status",
1066
+ type: "bool",
1067
+ },
709
1068
  ],
710
- name: "revokeIdentity",
1069
+ name: "setRegistrar",
711
1070
  outputs: [],
712
1071
  stateMutability: "nonpayable",
713
1072
  type: "function",
@@ -725,10 +1084,28 @@ const _abi = [
725
1084
  stateMutability: "nonpayable",
726
1085
  type: "function",
727
1086
  },
1087
+ {
1088
+ inputs: [
1089
+ {
1090
+ internalType: "address",
1091
+ name: "newImplementation",
1092
+ type: "address",
1093
+ },
1094
+ {
1095
+ internalType: "bytes",
1096
+ name: "data",
1097
+ type: "bytes",
1098
+ },
1099
+ ],
1100
+ name: "upgradeToAndCall",
1101
+ outputs: [],
1102
+ stateMutability: "payable",
1103
+ type: "function",
1104
+ },
728
1105
  ] as const;
729
1106
 
730
1107
  const _bytecode =
731
- "0x608060405234801561000f575f5ffd5b506100c461001b61011c565b80517f9e7b61f58c47dc699ac88507c4f5bb9f121c03808c5676a8078fe583e464970080546001600160a01b03199081166001600160a01b039384161790915560208301517f9e7b61f58c47dc699ac88507c4f5bb9f121c03808c5676a8078fe583e46497018054831691841691909117905560408301517f9e7b61f58c47dc699ac88507c4f5bb9f121c03808c5676a8078fe583e46497028054909216921691909117905550565b600980546001600160a01b031916339081179091555f818152600b6020526040808220805460ff19166001179055517f5c38ce8ff8864a9d2a5ff5aec72a88770e38d181dea59173fde1247cdaa1aea39190a261028b565b604080516060810182525f808252602082018190529181019190915246600103610175575060408051606080820183525f8083526020808401829052928401819052835191820184528082529181018290529182015290565b4662aa36a7036101f4575060408051606080820183525f8083526020808401829052928401528251908101835273f0ffdc93b7e186bc2f8cb3daa75d86d1930a433d81527392c920834ec8941d2c77d188936e1f7a6f49c1279181019190915273be0e383937d564d7ff0bc3b46c51f0bf8d5c311a9181019190915290565b46617a6903610272575060408051606080820183525f808352602080840182905292840152825190810183527350157cffd6bbfa2dece204a89ec419c23ef5755d815273e3a9105a3a932253a70f126eb1e3b589c643dd249181019190915273be0e383937d564d7ff0bc3b46c51f0bf8d5c311a9181019190915290565b6040516373cac13b60e01b815260040160405180910390fd5b611a54806102985f395ff3fe608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80638cb83540116100d9578063b757ce0e11610093578063e30c39781161006e578063e30c3978146103f4578063e462862b14610407578063f2fde38b1461041a578063fdd2132b1461042d575f5ffd5b8063b757ce0e14610359578063ba904eed146103c2578063c736a433146103d5575f5ffd5b80638cb83540146102c35780638da5cb5b146102e257806391b497551461030d578063af92a69314610320578063b3ce9b3d14610333578063b745e8b114610346575f5ffd5b806368746e751161014457806381ba6ce21161011f57806381ba6ce21461027357806382466ccc146102865780638927b0301461029957806389aeca76146102a1575f5ffd5b806368746e751461023957806379ba5097146102585780637d1c8e1714610260575f5ffd5b80630ebddd171461018b578063190258ad146101a05780633c23afba146101c6578063488baabf1461020057806355ab78f51461021357806358d2b4a514610226575b5f5ffd5b61019e610199366004611776565b610440565b005b6101b36101ae366004611776565b6105f7565b6040519081526020015b60405180910390f35b6101f06101d4366004611776565b6001600160a01b03165f90815260056020526040902054151590565b60405190151581526020016101bd565b6101b361020e36600461178f565b610663565b61019e610221366004611776565b610765565b6101b3610234366004611776565b610833565b6101b3610247366004611776565b60066020525f908152604090205481565b61019e6108c3565b61019e61026e3660046117c9565b61094a565b6101b3610281366004611776565b610c7a565b6101b3610294366004611776565b610d0a565b6101b3610d9a565b6101f06102af366004611776565b600b6020525f908152604090205460ff1681565b6101b36102d1366004611776565b60046020525f908152604090205481565b6009546102f5906001600160a01b031681565b6040516001600160a01b0390911681526020016101bd565b6101b361031b36600461186d565b610da8565b61019e61032e366004611776565b610e64565b6101b3610341366004611776565b610eda565b6101b3610354366004611776565b610f6a565b61039e61036736600461189d565b6001600160a01b039182165f9081526007602090815260408083209383529290522080546001820154600290920154909391921690565b6040805193845260208401929092526001600160a01b0316908201526060016101bd565b61019e6103d0366004611776565b61105e565b6101b36103e3366004611776565b60056020525f908152604090205481565b600a546102f5906001600160a01b031681565b6101b361041536600461178f565b6110d1565b61019e610428366004611776565b611140565b6101b361043b36600461186d565b6111e3565b335f908152600b602052604090205460ff1661046f57604051632fed761f60e01b815260040160405180910390fd5b6001600160a01b0381165f90815260056020526040812054908190036104a85760405163099efb8960e41b815260040160405180910390fd5b6104b15f6111ff565b6001600160a01b0383165f908152602081905260408120919091556104d59061120e565b6001600160a01b0383165f908152600160205260408120919091556104f9906111ff565b6001600160a01b0383165f9081526002602052604081209190915561051d9061121e565b6001600160a01b0383165f9081526003602090815260408083209390935560048152828220829055600581528282208290556007815282822084835290529081206001810154909103610571574260018201555b6040516001600160a01b038416907fccf550e579fbeb7d56da9a0175f8d4526535cab139e73b592516f1916d4075dd905f90a281336001600160a01b0316846001600160a01b03167f3d6883511c0cbeaa2a0e9df1b5c9ec5b0b3af47e1ddb09e4582c62e935ac1bd3426040516105ea91815260200190565b60405180910390a4505050565b5f5f8260025f60405160200161060f939291906118c5565b60408051601f1981840301815291815281516020928301205f818152600890935291205490915061063f81611239565b61065c57604051631a6bd1fd60e01b815260040160405180910390fd5b9392505050565b6001600160a01b0382165f90815260046020526040812054810361069a5760405163099efb8960e41b815260040160405180910390fd5b6001600160a01b0383165f908152600260205260409020546106bb90611239565b6106d857604051631a6bd1fd60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260026020526040812054610702906106fd856111ff565b611244565b90505f845f8560ff1660405160200161071d939291906118c5565b60408051601f1981840301815291815281516020928301205f81815260089093529120839055905061074e82611272565b506107598233611281565b50909150505b92915050565b335f9081526004602052604081205490036107935760405163099efb8960e41b815260040160405180910390fd5b335f908152602081905260409020546107ac9082611281565b50335f908152600160205260409020546107c69082611281565b50335f908152600260205260409020546107e09082611281565b50335f908152600360205260409020546107fa9082611281565b506040516001600160a01b0382169033907f9f520b3bfc56d06f7065d10b4683b3f57ac8895d5026cd176dee95ce1454cb8d905f90a350565b6001600160a01b0381165f90815260046020526040812054810361086a5760405163099efb8960e41b815260040160405180910390fd5b6001600160a01b0382165f9081526003602052604090205461088b90611239565b6108a857604051631a6bd1fd60e01b815260040160405180910390fd5b506001600160a01b03165f9081526003602052604090205490565b600a546001600160a01b031633146108ee576040516303c25d1960e61b815260040160405180910390fd5b60098054600a80546001600160a01b03198084166001600160a01b038381169182179096559116909155604051929091169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a350565b335f908152600b602052604090205460ff1661097957604051632fed761f60e01b815260040160405180910390fd5b6001600160a01b0387165f90815260056020526040902054156109af576040516335d9080560e01b815260040160405180910390fd5b5f6109ef8784848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061129392505050565b90505f610a318785858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506112a092505050565b90505f610a738786868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061129392505050565b90505f610ab58787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506112ad92505050565b6001600160a01b038c165f908152602081815260408083208890556001825280832087905560028252808320869055600390915290208190559050610af984611272565b50610b0383611272565b50610b0d82611272565b50610b1781611272565b50610b22848c611281565b50610b2d838c611281565b50610b38828c611281565b50610b43818c611281565b506001600160a01b038b165f90815260066020526040812054610b679060016118fc565b6001600160a01b038d81165f8181526006602090815260408083208690556005825280832086905580516060810182524280825281840185815233838501818152888852600787528588208b8952875285882094518555915160018501559051600290930180546001600160a01b03191693909816929092179096558484526004909252808320949094559251939450919290917f80e69e903f208f7deaa7841fb5c747e52500a1dd84961857e29cd831bdd90c0b91a380336001600160a01b03168d6001600160a01b03167f3c29af9eea4975bcf019c02a4de64f71debe7fa82dc5974c28bc485fe4a7ba1d42604051610c6491815260200190565b60405180910390a4505050505050505050505050565b6001600160a01b0381165f908152600460205260408120548103610cb15760405163099efb8960e41b815260040160405180910390fd5b6001600160a01b0382165f90815260016020526040902054610cd290611239565b610cef57604051631a6bd1fd60e01b815260040160405180910390fd5b506001600160a01b03165f9081526001602052604090205490565b6001600160a01b0381165f908152600460205260408120548103610d415760405163099efb8960e41b815260040160405180910390fd5b6001600160a01b0382165f90815260026020526040902054610d6290611239565b610d7f57604051631a6bd1fd60e01b815260040160405180910390fd5b506001600160a01b03165f9081526002602052604090205490565b5f610da36112b9565b905090565b6001600160a01b0382165f908152600460205260408120548103610ddf5760405163099efb8960e41b815260040160405180910390fd5b6001600160a01b0383165f90815260016020526040902054610e0090611239565b610e1d57604051631a6bd1fd60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260016020526040812054610e4790610e428561120e565b6112ed565b90505f8460018561ffff1660405160200161071d939291906118c5565b6009546001600160a01b03163314610e8f57604051635fc483c560e01b815260040160405180910390fd5b6001600160a01b0381165f818152600b6020526040808220805460ff19166001179055517f5c38ce8ff8864a9d2a5ff5aec72a88770e38d181dea59173fde1247cdaa1aea39190a250565b6001600160a01b0381165f908152600460205260408120548103610f115760405163099efb8960e41b815260040160405180910390fd5b6001600160a01b0382165f90815260208190526040902054610f3290611239565b610f4f57604051631a6bd1fd60e01b815260040160405180910390fd5b506001600160a01b03165f9081526020819052604090205490565b6001600160a01b0381165f908152600460205260408120548103610fa15760405163099efb8960e41b815260040160405180910390fd5b6001600160a01b0382165f90815260036020526040902054610fc290611239565b610fdf57604051631a6bd1fd60e01b815260040160405180910390fd5b6001600160a01b0382165f908152600360205260408120546110009061131b565b90505f8360025f604051602001611019939291906118c5565b60408051601f1981840301815291815281516020928301205f81815260089093529120839055905061104a82611272565b506110558233611281565b50909392505050565b6009546001600160a01b0316331461108957604051635fc483c560e01b815260040160405180910390fd5b6001600160a01b0381165f818152600b6020526040808220805460ff19169055517f81cb97a294b3ff5f91ef4048b3173c7f8f6943d9750add2071199061165e5f579190a250565b5f5f835f8460ff166040516020016110eb939291906118c5565b60408051601f1981840301815291815281516020928301205f818152600890935291205490915061111b81611239565b61113857604051631a6bd1fd60e01b815260040160405180910390fd5b949350505050565b6009546001600160a01b0316331461116b57604051635fc483c560e01b815260040160405180910390fd5b6001600160a01b038116611192576040516349e27cff60e01b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b03838116918217909255600954604051919216907f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700905f90a350565b5f5f8360018461ffff166040516020016110eb939291906118c5565b5f61075f8260ff166002611325565b5f61075f8261ffff166003611325565b5f61075f8261122d575f611230565b60015b60ff165f611325565b5f61075f82336113b4565b5f82611256576112535f6111ff565b92505b81611267576112645f6111ff565b91505b61065c83835f611438565b5f61127d82306114f5565b5090565b5f61128c83836114f5565b5090919050565b5f61065c8383600261156b565b5f61065c8383600361156b565b5f61065c83835f61156b565b5f466001036112c85750600190565b4662aa36a7036112d9575061271190565b46617a69036112e857505f1990565b505f90565b5f826112ff576112fc5f61120e565b92505b816113105761130d5f61120e565b91505b61065c83835f611665565b5f61075f826116dc565b5f5160206119df5f395f51905f5254604051639cd07acb60e01b81525f915f5160206119ff5f395f51905f52916001600160a01b0390911690639cd07acb90611374908790879060040161193b565b6020604051808303815f875af1158015611390573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611138919061194f565b5f805f5160206119ff5f395f51905f5280546040516382027b6d60e01b8152600481018790526001600160a01b0386811660248301529293509116906382027b6d90604401602060405180830381865afa158015611414573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111389190611966565b5f5f821561144b5750600160f81b61144e565b505f5b5f5160206119df5f395f51905f5254604051631391547f60e01b815260048101879052602481018690526001600160f81b0319831660448201525f5160206119ff5f395f51905f52916001600160a01b031690631391547f906064015b6020604051808303815f875af11580156114c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114eb919061194f565b9695505050505050565b5f5f5160206119ff5f395f51905f528054604051635ca4b5b160e11b8152600481018690526001600160a01b03858116602483015292935091169063b9496b62906044015f604051808303815f87803b158015611550575f5ffd5b505af1158015611562573d5f5f3e3d5ffd5b50505050505050565b5f5160206119df5f395f51905f525460405163045fc19560e11b81525f915f5160206119ff5f395f51905f52916001600160a01b03909116906308bf832a906115be908890339089908990600401611985565b6020604051808303815f875af11580156115da573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115fe919061194f565b8154604051630f8e573b60e21b8152600481018390523360248201529193506001600160a01b031690633e395cec906044015f604051808303815f87803b158015611647575f5ffd5b505af1158015611659573d5f5f3e3d5ffd5b50505050509392505050565b5f5f82156116785750600160f81b61167b565b505f5b5f5160206119df5f395f51905f525460405163f77f3f1d60e01b815260048101879052602481018690526001600160f81b0319831660448201525f5160206119ff5f395f51905f52916001600160a01b03169063f77f3f1d906064016114ab565b5f805f5160206119ff5f395f51905f526001810154604051630f51ccfb60e41b8152600481018690529192506001600160a01b03169063f51ccfb0906024016020604051808303815f875af1158015611737573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065c919061194f565b80356001600160a01b0381168114611771575f5ffd5b919050565b5f60208284031215611786575f5ffd5b61065c8261175b565b5f5f604083850312156117a0575f5ffd5b6117a98361175b565b9150602083013560ff811681146117be575f5ffd5b809150509250929050565b5f5f5f5f5f5f5f60c0888a0312156117df575f5ffd5b6117e88861175b565b96506020880135955060408801359450606088013593506080880135925060a088013567ffffffffffffffff81111561181f575f5ffd5b8801601f81018a1361182f575f5ffd5b803567ffffffffffffffff811115611845575f5ffd5b8a6020828401011115611856575f5ffd5b602082019350809250505092959891949750929550565b5f5f6040838503121561187e575f5ffd5b6118878361175b565b9150602083013561ffff811681146117be575f5ffd5b5f5f604083850312156118ae575f5ffd5b6118b78361175b565b946020939093013593505050565b60609390931b6bffffffffffffffffffffffff1916835260f89190911b6001600160f81b0319166014830152601582015260350190565b8082018082111561075f57634e487b7160e01b5f52601160045260245ffd5b6054811061193757634e487b7160e01b5f52602160045260245ffd5b9052565b8281526040810161065c602083018461191b565b5f6020828403121561195f575f5ffd5b5051919050565b5f60208284031215611976575f5ffd5b8151801515811461065c575f5ffd5b84815260018060a01b0384166020820152608060408201525f8351806080840152806020860160a085015e5f60a0828501015260a0601f19601f8301168401019150506119d5606083018461191b565b9594505050505056fe9e7b61f58c47dc699ac88507c4f5bb9f121c03808c5676a8078fe583e46497019e7b61f58c47dc699ac88507c4f5bb9f121c03808c5676a8078fe583e4649700a2646970667358221220ef4643c2fdf5904d46216088aaccd167111e9dc9dd2fd3d3d11a4b728b1cde3364736f6c634300081b0033";
1108
+ "0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161343e6100f95f395f8181611b6b01528181611b940152611cd8015261343e5ff3fe608060405260043610610249575f3560e01c8063852b28db11610134578063c1bf1dcf116100b3578063ca423f5211610078578063ca423f5214610737578063d1e8eba91461076a578063d1f1ff6014610789578063dd4db94f146107c3578063e30c3978146107d7578063f2fde38b146107eb575f5ffd5b8063c1bf1dcf1461069b578063c4d66de8146106ba578063c736a433146106d9578063c7e700a814610704578063c92d0f0314610718575f5ffd5b80639c47338f116100f95780639c47338f146105d8578063ad3cb1cc1461060c578063b3ce9b3d14610649578063b745e8b114610668578063bbde418714610687575f5ffd5b8063852b28db1461051557806389aeca76146105345780638cb83540146105625780638da5cb5b1461058d57806391b49755146105b9575f5ffd5b806355ab78f5116101cb57806379ba50971161019057806379ba5097146104465780637ecebe001461045a57806381ba6ce21461048557806382466ccc146104a457806382b7a48b146104c357806384b0196e146104ee575f5ffd5b806355ab78f5146103cb578063560f3ba4146103ea57806358d2b4a5146103ff5780636d4634ea1461041e578063715018a614610432575f5ffd5b80633c23afba116102115780633c23afba14610320578063488baabf146103665780634f1ef2861461038557806350ee480d1461039857806352d1902d146103b7575f5ffd5b806303e8c1391461024d5780631318fe8714610298578063193bd1ce146102b957806325382b83146102df57806336beb697146102f3575b5f5ffd5b348015610258575f5ffd5b5061027e610267366004612cc1565b60076020525f908152604090205463ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b3480156102a3575f5ffd5b506102b76102b2366004612cda565b61080a565b005b3480156102c4575f5ffd5b506102cd600f81565b60405160ff909116815260200161028f565b3480156102ea575f5ffd5b506102cd600281565b3480156102fe575f5ffd5b5061031261030d366004612d8c565b61091d565b60405190815260200161028f565b34801561032b575f5ffd5b5061035661033a366004612cc1565b6001600160a01b03165f90815260046020526040902054151590565b604051901515815260200161028f565b348015610371575f5ffd5b50610312610380366004612db3565b610957565b6102b7610393366004612df8565b610a46565b3480156103a3575f5ffd5b506102cd6103b2366004612ebc565b610a65565b3480156103c2575f5ffd5b50610312610aab565b3480156103d6575f5ffd5b506102b76103e5366004612cc1565b610ac6565b3480156103f5575f5ffd5b5061031260085481565b34801561040a575f5ffd5b50610312610419366004612cc1565b610c16565b348015610429575f5ffd5b506102cd600481565b34801561043d575f5ffd5b506102b7610cae565b348015610451575f5ffd5b506102b7610cc1565b348015610465575f5ffd5b50610312610474366004612cc1565b600a6020525f908152604090205481565b348015610490575f5ffd5b5061031261049f366004612cc1565b610d0e565b3480156104af575f5ffd5b506103126104be366004612cc1565b610da1565b3480156104ce575f5ffd5b506103126104dd366004612cc1565b60066020525f908152604090205481565b3480156104f9575f5ffd5b50610502610e34565b60405161028f9796959493929190612f12565b348015610520575f5ffd5b506102b761052f366004612fa8565b610edd565b34801561053f575f5ffd5b5061035661054e366004612cc1565b60096020525f908152604090205460ff1681565b34801561056d575f5ffd5b5061031261057c366004612cc1565b60056020525f908152604090205481565b348015610598575f5ffd5b506105a1611063565b6040516001600160a01b03909116815260200161028f565b3480156105c4575f5ffd5b506103126105d3366004613000565b611097565b3480156105e3575f5ffd5b506103126105f2366004612cc1565b6001600160a01b03165f9081526006602052604090205490565b348015610617575f5ffd5b5061063c604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161028f9190613028565b348015610654575f5ffd5b50610312610663366004612cc1565b611142565b348015610673575f5ffd5b50610312610682366004612cc1565b6111d5565b348015610692575f5ffd5b506102cd600181565b3480156106a6575f5ffd5b506102b76106b5366004613047565b6112ab565b3480156106c5575f5ffd5b506102b76106d4366004612cc1565b611338565b3480156106e4575f5ffd5b506103126106f3366004612cc1565b60046020525f908152604090205481565b34801561070f575f5ffd5b506102cd600881565b348015610723575f5ffd5b506102b7610732366004612cc1565b6115a7565b348015610742575f5ffd5b506103127ff9d9d50ebaaa414078d4db244db5457cbc9440107058a8da6fc87ec8267587c781565b348015610775575f5ffd5b50610312610784366004612db3565b6115df565b348015610794575f5ffd5b5061027e6107a3366004612cc1565b6001600160a01b03165f9081526007602052604090205463ffffffff1690565b3480156107ce575f5ffd5b506102b761170a565b3480156107e2575f5ffd5b506105a1611713565b3480156107f6575f5ffd5b506102b7610805366004612cc1565b61173b565b335f9081526004602052604090205415610837576040516335d9080560e01b815260040160405180910390fd5b8660c0013542111561085c5760405163068568f360e21b815260040160405180910390fd5b610865876117c0565b610873868686868686611958565b60088054905f61088283613090565b9091555050600854335f90815260046020908152604080832093909355600581528282204290556006905220608088013590556108c560c0880160a089016130a8565b335f81815260076020526040808220805463ffffffff191663ffffffff9590951694909417909355915190917f29056d033e0ed6951611a865e131392e3b35403afc9cdbf70eee3a35c205b6f491a250505050505050565b5f818152600c602052604081205461093481611af0565b61095157604051631a6bd1fd60e01b815260040160405180910390fd5b92915050565b6001600160a01b0382165f90815260046020526040812054839082036109905760405163099efb8960e41b815260040160405180910390fd5b6001600160a01b0384165f908152600260205260408120546109ba906109b586611afb565b611b0a565b6040516001600160601b0319606088901b166020820152671b5a5b93195d995b60c21b60348201526001600160f81b031960f887901b16603c8201529091505f90603d015b60408051601f1981840301815291815281516020928301205f818152600c90935291208390559050610a3082611b3f565b50610a3b8233611b4e565b509095945050505050565b610a4e611b60565b610a5782611c04565b610a618282611c0c565b5050565b5f600b5f8484604051602001610a7c9291906130cb565b60408051808303601f190181529181528151602092830120835290820192909252015f205460ff169392505050565b5f610ab4611ccd565b505f5160206133c95f395f51905f5290565b335f818152600460205260408120549003610af45760405163099efb8960e41b815260040160405180910390fd5b6001600160a01b038216610b1b5760405163d92e233d60e01b815260040160405180910390fd5b5f3383604051602001610b2f9291906130cb565b60408051601f1981840301815291815281516020928301205f818152600b8452828120805460ff1916600f17905533815292839052912054909150610b749084611b4e565b50335f90815260016020526040902054610b8e9084611b4e565b50335f90815260026020526040902054610ba89084611b4e565b50335f90815260036020526040902054610bc29084611b4e565b50826001600160a01b0316336001600160a01b03167f30ab1425cac82b8f27b8ae1715d03d131df0d8bb590edb534927b641d5eea33f600f5f604051610c09929190613101565b60405180910390a3505050565b6001600160a01b0381165f9081526004602052604081205482908203610c4f5760405163099efb8960e41b815260040160405180910390fd5b6001600160a01b0383165f90815260036020526040902054610c7090611af0565b610c8d57604051631a6bd1fd60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526003602052604090205491505b50919050565b610cb6611d16565b610cbf5f611d48565b565b3380610ccb611713565b6001600160a01b031614610d025760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b610d0b81611d48565b50565b6001600160a01b0381165f9081526004602052604081205482908203610d475760405163099efb8960e41b815260040160405180910390fd5b6001600160a01b0383165f90815260016020526040902054610d6890611af0565b610d8557604051631a6bd1fd60e01b815260040160405180910390fd5b50506001600160a01b03165f9081526001602052604090205490565b6001600160a01b0381165f9081526004602052604081205482908203610dda5760405163099efb8960e41b815260040160405180910390fd5b6001600160a01b0383165f90815260026020526040902054610dfb90611af0565b610e1857604051631a6bd1fd60e01b815260040160405180910390fd5b50506001600160a01b03165f9081526002602052604090205490565b5f60608082808083815f5160206133a95f395f51905f528054909150158015610e5f57506001810154155b610ea35760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610cf9565b610eab611d80565b610eb3611e40565b604080515f80825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b335f818152600460205260408120549003610f0b5760405163099efb8960e41b815260040160405180910390fd5b6001600160a01b038416610f325760405163d92e233d60e01b815260040160405180910390fd5b5f3385604051602001610f469291906130cb565b60408051601f1981840301815291815281516020928301205f818152600b9093529120805460ff8088169082161760ff1990911617905590506001841615610fa357335f90815260208190526040902054610fa19086611b4e565b505b6002841615610fc757335f90815260016020526040902054610fc59086611b4e565b505b6004841615610feb57335f90815260026020526040902054610fe99086611b4e565b505b600884161561100f57335f9081526003602052604090205461100d9086611b4e565b505b846001600160a01b0316336001600160a01b03167f30ab1425cac82b8f27b8ae1715d03d131df0d8bb590edb534927b641d5eea33f8686604051611054929190613101565b60405180910390a35050505050565b5f807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b6001600160a01b0382165f90815260046020526040812054839082036110d05760405163099efb8960e41b815260040160405180910390fd5b6001600160a01b0384165f908152600160205260408120546110fa906110f586611e7e565b611e8e565b6040516001600160601b0319606088901b16602082015266636f756e74727960c81b60348201526001600160f01b031960f087901b16603b8201529091505f90603d016109ff565b6001600160a01b0381165f908152600460205260408120548290820361117b5760405163099efb8960e41b815260040160405180910390fd5b6001600160a01b0383165f9081526020819052604090205461119c90611af0565b6111b957604051631a6bd1fd60e01b815260040160405180910390fd5b50506001600160a01b03165f9081526020819052604090205490565b6001600160a01b0381165f908152600460205260408120548290820361120e5760405163099efb8960e41b815260040160405180910390fd5b6001600160a01b0383165f9081526003602052604081205461122f90611ebc565b6040516001600160601b0319606087901b1660208201526d1b9bdd109b1858dadb1a5cdd195960921b60348201529091505f9060420160408051601f1981840301815291815281516020928301205f818152600c9093529120839055905061129682611b3f565b506112a18233611b4e565b5090949350505050565b6112b3611d16565b6001600160a01b0382166112da5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0382165f81815260096020908152604091829020805460ff191685151590811790915591519182527faa29e9c7319872059973646686bcb05675a1351529119ca980b4ad90e73d7264910160405180910390a25050565b5f611341611ec6565b805490915060ff600160401b820416159067ffffffffffffffff165f811580156113685750825b90505f8267ffffffffffffffff1660011480156113845750303b155b905081158015611392575080155b156113b05760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156113da57845460ff60401b1916600160401b1785555b6001600160a01b0386166114015760405163d92e233d60e01b815260040160405180910390fd5b611409611eee565b611411611eee565b61141a86611ef6565b6114726040518060400160405280601781526020017f5a656e746974794964656e746974795265676973747279000000000000000000815250604051806040016040528060018152602001601960f91b815250611f07565b61150061147d611f19565b80515f5160206133e95f395f51905f5280546001600160a01b03199081166001600160a01b039384161790915560208301515f5160206133895f395f51905f528054831691841691909117905560408301517f9e7b61f58c47dc699ac88507c4f5bb9f121c03808c5676a8078fe583e46497028054909216921691909117905550565b6001600160a01b0386165f81815260096020908152604091829020805460ff1916600190811790915591519182527faa29e9c7319872059973646686bcb05675a1351529119ca980b4ad90e73d7264910160405180910390a2831561159f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b335f9081526009602052604090205460ff166115d657604051632fed761f60e01b815260040160405180910390fd5b610d0b8161208d565b6001600160a01b0382165f90815260046020526040812054839082036116185760405163099efb8960e41b815260040160405180910390fd5b5f61162284611afb565b6001600160a01b0386165f90815260026020526040812054919250906116489083611b0a565b6001600160a01b0387165f908152600360205260408120549192509061166d90611ebc565b90505f61167a83836121b1565b6040516001600160601b031960608b901b16602082015269636f6d706c69616e636560b01b60348201526001600160f81b031960f88a901b16603e8201529091505f90603f0160408051601f1981840301815291815281516020928301205f818152600c909352912083905590506116f182611b3f565b506116fc8233611b4e565b509098975050505050505050565b610cbf3361208d565b5f807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00611087565b611743611d16565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b0383169081178255611787611063565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b335f818152600a60209081526040822054927ff9d9d50ebaaa414078d4db244db5457cbc9440107058a8da6fc87ec8267587c79161180090860186613128565b6118106040870160208801613141565b6118206060880160408901613128565b6118306080890160608a0161315a565b608089013561184560c08b0160a08c016130a8565b6040805160208101999099526001600160a01b039097169688019690965260ff948516606088015261ffff9093166080870152921660a085015290151560c08481019190915260e084019190915263ffffffff9091166101008301526101208201849052840135610140820152610160016040516020818303038152906040528051906020012090505f6118fd6118db836121df565b6118ec610100870160e08801613128565b86610100013587610120013561220b565b6001600160a01b0381165f9081526009602052604090205490915060ff166119385760405163ddafbaef60e01b815260040160405180910390fd5b611943836001613175565b335f908152600a602052604090205550505050565b5f6119988784848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061223792505050565b90505f6119da8785858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061224492505050565b90505f611a1c8786868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061223792505050565b90505f611a5e8787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061225192505050565b335f908152602081815260408083208890556001825280832087905560028252808320869055600390915290208190559050611a9984611b3f565b50611aa383611b3f565b50611aad82611b3f565b50611ab781611b3f565b50611ac28433611b4e565b50611acd8333611b4e565b50611ad88233611b4e565b50611ae38133611b4e565b5050505050505050505050565b5f610951823361225d565b5f6109518260ff1660026122e9565b5f82611b1c57611b195f611afb565b92505b81611b2d57611b2a5f611afb565b91505b611b3883835f612378565b9392505050565b5f611b4a8230612425565b5090565b5f611b598383612425565b5090919050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611be657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611bda5f5160206133c95f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610cbf5760405163703e46dd60e11b815260040160405180910390fd5b610d0b611d16565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c66575060408051601f3d908101601f19168201909252611c6391810190613188565b60015b611c8e57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610cf9565b5f5160206133c95f395f51905f528114611cbe57604051632a87526960e21b815260048101829052602401610cf9565b611cc8838361249b565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cbf5760405163703e46dd60e11b815260040160405180910390fd5b33611d1f611063565b6001600160a01b031614610cbf5760405163118cdaa760e01b8152336004820152602401610cf9565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319168155610a61826124f0565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060915f5160206133a95f395f51905f5291611dbe9061319f565b80601f0160208091040260200160405190810160405280929190818152602001828054611dea9061319f565b8015611e355780601f10611e0c57610100808354040283529160200191611e35565b820191905f5260205f20905b815481529060010190602001808311611e1857829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060915f5160206133a95f395f51905f5291611dbe9061319f565b5f6109518261ffff1660036122e9565b5f82611ea057611e9d5f611e7e565b92505b81611eb157611eae5f611e7e565b91505b611b3883835f612560565b5f610951826125c3565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610951565b610cbf612642565b611efe612642565b610d0b81612667565b611f0f612642565b610a618282612698565b604080516060810182525f808252602082018190529181019190915246600103611f77575060408051606080820183525f8083526020808401829052928401819052835191820184528082529181018290529182015290565b905090565b4662aa36a703611ff6575060408051606080820183525f8083526020808401829052928401528251908101835273f0ffdc93b7e186bc2f8cb3daa75d86d1930a433d81527392c920834ec8941d2c77d188936e1f7a6f49c1279181019190915273be0e383937d564d7ff0bc3b46c51f0bf8d5c311a9181019190915290565b46617a6903612074575060408051606080820183525f808352602080840182905292840152825190810183527350157cffd6bbfa2dece204a89ec419c23ef5755d815273e3a9105a3a932253a70f126eb1e3b589c643dd249181019190915273be0e383937d564d7ff0bc3b46c51f0bf8d5c311a9181019190915290565b6040516373cac13b60e01b815260040160405180910390fd5b6001600160a01b0381165f9081526004602052604081205490036120c45760405163099efb8960e41b815260040160405180910390fd5b6120cd5f611afb565b6001600160a01b0382165f908152602081905260408120919091556120f190611e7e565b6001600160a01b0382165f9081526001602052604081209190915561211590611afb565b6001600160a01b0382165f90815260026020526040812091909155612139906126f7565b6001600160a01b0382165f8181526003602090815260408083209490945560048152838220829055600581528382208290556006815283822082905560079052828120805463ffffffff19169055915190917fccf550e579fbeb7d56da9a0175f8d4526535cab139e73b592516f1916d4075dd91a250565b5f826121c3576121c05f6126f7565b92505b816121d4576121d15f6126f7565b91505b611b3883835f612712565b5f6109516121eb612775565b8360405161190160f01b8152600281019290925260228201526042902090565b5f5f5f5f61221b8888888861277e565b92509250925061222b8282612846565b50909695505050505050565b5f611b38838360026128fe565b5f611b38838360036128fe565b5f611b3883835f6128fe565b5f805f5160206133e95f395f51905f5280546040516382027b6d60e01b8152600481018790526001600160a01b0386811660248301529293509116906382027b6d90604401602060405180830381865afa1580156122bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122e191906131d1565b949350505050565b5f5160206133895f395f51905f5254604051639cd07acb60e01b81525f915f5160206133e95f395f51905f52916001600160a01b0390911690639cd07acb906123389087908790600401613200565b6020604051808303815f875af1158015612354573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122e19190613188565b5f5f821561238b5750600160f81b61238e565b505f5b5f5160206133895f395f51905f5254604051631391547f60e01b81525f5160206133e95f395f51905f52916001600160a01b031690631391547f906123db90899089908790600401613214565b6020604051808303815f875af11580156123f7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061241b9190613188565b9695505050505050565b5f5f5160206133e95f395f51905f528054604051635ca4b5b160e11b8152600481018690526001600160a01b03858116602483015292935091169063b9496b62906044015f604051808303815f87803b158015612480575f5ffd5b505af1158015612492573d5f5f3e3d5ffd5b50505050505050565b6124a4826129f8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156124e857611cc88282612a5b565b610a61612acd565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f5f82156125735750600160f81b612576565b505f5b5f5160206133895f395f51905f525460405163f77f3f1d60e01b81525f5160206133e95f395f51905f52916001600160a01b03169063f77f3f1d906123db90899089908790600401613214565b5f805f5160206133e95f395f51905f526001810154604051630f51ccfb60e41b8152600481018690529192506001600160a01b03169063f51ccfb0906024016020604051808303815f875af115801561261e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b389190613188565b61264a612aec565b610cbf57604051631afcd79f60e31b815260040160405180910390fd5b61266f612642565b6001600160a01b038116610d0257604051631e4fbdf760e01b81525f6004820152602401610cf9565b6126a0612642565b5f5160206133a95f395f51905f527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1026126d9848261327f565b50600381016126e8838261327f565b505f8082556001909101555050565b5f61095182612706575f612709565b60015b60ff165f6122e9565b5f5f82156127255750600160f81b612728565b505f5b5f5160206133895f395f51905f525460405163d99882d560e01b81525f5160206133e95f395f51905f52916001600160a01b03169063d99882d5906123db90899089908790600401613214565b5f611f72612b05565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156127b757505f9150600390508261283c565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612808573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661283357505f92506001915082905061283c565b92505f91508190505b9450945094915050565b5f826003811115612859576128596130ed565b03612862575050565b6001826003811115612876576128766130ed565b036128945760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156128a8576128a86130ed565b036128c95760405163fce698f760e01b815260048101829052602401610cf9565b60038260038111156128dd576128dd6130ed565b03610a61576040516335e2f38360e21b815260048101829052602401610cf9565b5f5160206133895f395f51905f525460405163045fc19560e11b81525f915f5160206133e95f395f51905f52916001600160a01b03909116906308bf832a9061295190889033908990899060040161333a565b6020604051808303815f875af115801561296d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129919190613188565b8154604051630f8e573b60e21b8152600481018390523360248201529193506001600160a01b031690633e395cec906044015f604051808303815f87803b1580156129da575f5ffd5b505af11580156129ec573d5f5f3e3d5ffd5b50505050509392505050565b806001600160a01b03163b5f03612a2d57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610cf9565b5f5160206133c95f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612a779190613372565b5f60405180830381855af49150503d805f8114612aaf576040519150601f19603f3d011682016040523d82523d5f602084013e612ab4565b606091505b5091509150612ac4858383612b78565b95945050505050565b3415610cbf5760405163b398979f60e01b815260040160405180910390fd5b5f612af5611ec6565b54600160401b900460ff16919050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f612b2f612bd4565b612b37612c3c565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b606082612b8d57612b8882612c7e565b611b38565b8151158015612ba457506001600160a01b0384163b155b15612bcd57604051639996b31560e01b81526001600160a01b0385166004820152602401610cf9565b5092915050565b5f5f5160206133a95f395f51905f5281612bec611d80565b805190915015612c0457805160209091012092915050565b81548015612c13579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b5f5f5160206133a95f395f51905f5281612c54611e40565b805190915015612c6c57805160209091012092915050565b60018201548015612c13579392505050565b805115612c8d57805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b80356001600160a01b0381168114612cbc575f5ffd5b919050565b5f60208284031215612cd1575f5ffd5b611b3882612ca6565b5f5f5f5f5f5f5f8789036101e0811215612cf2575f5ffd5b610140811215612d00575f5ffd5b508796506101408701359550610160870135945061018087013593506101a087013592506101c087013567ffffffffffffffff811115612d3e575f5ffd5b8801601f81018a13612d4e575f5ffd5b803567ffffffffffffffff811115612d64575f5ffd5b8a6020828401011115612d75575f5ffd5b602082019350809250505092959891949750929550565b5f60208284031215612d9c575f5ffd5b5035919050565b803560ff81168114612cbc575f5ffd5b5f5f60408385031215612dc4575f5ffd5b612dcd83612ca6565b9150612ddb60208401612da3565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215612e09575f5ffd5b612e1283612ca6565b9150602083013567ffffffffffffffff811115612e2d575f5ffd5b8301601f81018513612e3d575f5ffd5b803567ffffffffffffffff811115612e5757612e57612de4565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715612e8657612e86612de4565b604052818152828201602001871015612e9d575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f60408385031215612ecd575f5ffd5b612ed683612ca6565b9150612ddb60208401612ca6565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60ff60f81b8816815260e060208201525f612f3060e0830189612ee4565b8281036040840152612f428189612ee4565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015612f97578351835260209384019390920191600101612f79565b50909b9a5050505050505050505050565b5f5f5f60608486031215612fba575f5ffd5b612fc384612ca6565b9250612fd160208501612da3565b9150604084013560058110612fe4575f5ffd5b809150509250925092565b803561ffff81168114612cbc575f5ffd5b5f5f60408385031215613011575f5ffd5b61301a83612ca6565b9150612ddb60208401612fef565b602081525f611b386020830184612ee4565b8015158114610d0b575f5ffd5b5f5f60408385031215613058575f5ffd5b61306183612ca6565b915060208301356130718161303a565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b5f600182016130a1576130a161307c565b5060010190565b5f602082840312156130b8575f5ffd5b813563ffffffff81168114611b38575f5ffd5b6001600160601b0319606093841b811682529190921b16601482015260280190565b634e487b7160e01b5f52602160045260245ffd5b60ff83168152604081016005831061311b5761311b6130ed565b8260208301529392505050565b5f60208284031215613138575f5ffd5b611b3882612da3565b5f60208284031215613151575f5ffd5b611b3882612fef565b5f6020828403121561316a575f5ffd5b8135611b388161303a565b808201808211156109515761095161307c565b5f60208284031215613198575f5ffd5b5051919050565b600181811c908216806131b357607f821691505b602082108103610ca857634e487b7160e01b5f52602260045260245ffd5b5f602082840312156131e1575f5ffd5b8151611b388161303a565b605481106131fc576131fc6130ed565b9052565b82815260408101611b3860208301846131ec565b92835260208301919091526001600160f81b031916604082015260600190565b601f821115611cc857805f5260205f20601f840160051c810160208510156132595750805b601f840160051c820191505b81811015613278575f8155600101613265565b5050505050565b815167ffffffffffffffff81111561329957613299612de4565b6132ad816132a7845461319f565b84613234565b6020601f8211600181146132df575f83156132c85750848201515b5f19600385901b1c1916600184901b178455613278565b5f84815260208120601f198516915b8281101561330e57878501518255602094850194600190920191016132ee565b508482101561332b57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b8481526001600160a01b03841660208201526080604082018190525f9061336390830185612ee4565b9050612ac460608301846131ec565b5f82518060208501845e5f92019182525091905056fe9e7b61f58c47dc699ac88507c4f5bb9f121c03808c5676a8078fe583e4649701a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9e7b61f58c47dc699ac88507c4f5bb9f121c03808c5676a8078fe583e4649700a264697066735822122094475916a1ab25808f56cacbbb56992fe9b84a488c4edf582fe71c81b19194c364736f6c634300081b0033";
732
1109
 
733
1110
  type IdentityRegistryConstructorParams =
734
1111
  | [signer?: Signer]