@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
@@ -0,0 +1,153 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+
5
+ import { Contract, Interface, type ContractRunner } from "ethers";
6
+ import type {
7
+ UUPSUpgradeable,
8
+ UUPSUpgradeableInterface,
9
+ } from "../../../../../@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable";
10
+
11
+ const _abi = [
12
+ {
13
+ inputs: [
14
+ {
15
+ internalType: "address",
16
+ name: "target",
17
+ type: "address",
18
+ },
19
+ ],
20
+ name: "AddressEmptyCode",
21
+ type: "error",
22
+ },
23
+ {
24
+ inputs: [
25
+ {
26
+ internalType: "address",
27
+ name: "implementation",
28
+ type: "address",
29
+ },
30
+ ],
31
+ name: "ERC1967InvalidImplementation",
32
+ type: "error",
33
+ },
34
+ {
35
+ inputs: [],
36
+ name: "ERC1967NonPayable",
37
+ type: "error",
38
+ },
39
+ {
40
+ inputs: [],
41
+ name: "FailedCall",
42
+ type: "error",
43
+ },
44
+ {
45
+ inputs: [],
46
+ name: "InvalidInitialization",
47
+ type: "error",
48
+ },
49
+ {
50
+ inputs: [],
51
+ name: "NotInitializing",
52
+ type: "error",
53
+ },
54
+ {
55
+ inputs: [],
56
+ name: "UUPSUnauthorizedCallContext",
57
+ type: "error",
58
+ },
59
+ {
60
+ inputs: [
61
+ {
62
+ internalType: "bytes32",
63
+ name: "slot",
64
+ type: "bytes32",
65
+ },
66
+ ],
67
+ name: "UUPSUnsupportedProxiableUUID",
68
+ type: "error",
69
+ },
70
+ {
71
+ anonymous: false,
72
+ inputs: [
73
+ {
74
+ indexed: false,
75
+ internalType: "uint64",
76
+ name: "version",
77
+ type: "uint64",
78
+ },
79
+ ],
80
+ name: "Initialized",
81
+ type: "event",
82
+ },
83
+ {
84
+ anonymous: false,
85
+ inputs: [
86
+ {
87
+ indexed: true,
88
+ internalType: "address",
89
+ name: "implementation",
90
+ type: "address",
91
+ },
92
+ ],
93
+ name: "Upgraded",
94
+ type: "event",
95
+ },
96
+ {
97
+ inputs: [],
98
+ name: "UPGRADE_INTERFACE_VERSION",
99
+ outputs: [
100
+ {
101
+ internalType: "string",
102
+ name: "",
103
+ type: "string",
104
+ },
105
+ ],
106
+ stateMutability: "view",
107
+ type: "function",
108
+ },
109
+ {
110
+ inputs: [],
111
+ name: "proxiableUUID",
112
+ outputs: [
113
+ {
114
+ internalType: "bytes32",
115
+ name: "",
116
+ type: "bytes32",
117
+ },
118
+ ],
119
+ stateMutability: "view",
120
+ type: "function",
121
+ },
122
+ {
123
+ inputs: [
124
+ {
125
+ internalType: "address",
126
+ name: "newImplementation",
127
+ type: "address",
128
+ },
129
+ {
130
+ internalType: "bytes",
131
+ name: "data",
132
+ type: "bytes",
133
+ },
134
+ ],
135
+ name: "upgradeToAndCall",
136
+ outputs: [],
137
+ stateMutability: "payable",
138
+ type: "function",
139
+ },
140
+ ] as const;
141
+
142
+ export class UUPSUpgradeable__factory {
143
+ static readonly abi = _abi;
144
+ static createInterface(): UUPSUpgradeableInterface {
145
+ return new Interface(_abi) as UUPSUpgradeableInterface;
146
+ }
147
+ static connect(
148
+ address: string,
149
+ runner?: ContractRunner | null
150
+ ): UUPSUpgradeable {
151
+ return new Contract(address, _abi, runner) as unknown as UUPSUpgradeable;
152
+ }
153
+ }
@@ -0,0 +1,5 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ export { Initializable__factory } from "./Initializable__factory";
5
+ export { UUPSUpgradeable__factory } from "./UUPSUpgradeable__factory";
@@ -0,0 +1,48 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+
5
+ import { Contract, Interface, type ContractRunner } from "ethers";
6
+ import type {
7
+ ContextUpgradeable,
8
+ ContextUpgradeableInterface,
9
+ } from "../../../../@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable";
10
+
11
+ const _abi = [
12
+ {
13
+ inputs: [],
14
+ name: "InvalidInitialization",
15
+ type: "error",
16
+ },
17
+ {
18
+ inputs: [],
19
+ name: "NotInitializing",
20
+ type: "error",
21
+ },
22
+ {
23
+ anonymous: false,
24
+ inputs: [
25
+ {
26
+ indexed: false,
27
+ internalType: "uint64",
28
+ name: "version",
29
+ type: "uint64",
30
+ },
31
+ ],
32
+ name: "Initialized",
33
+ type: "event",
34
+ },
35
+ ] as const;
36
+
37
+ export class ContextUpgradeable__factory {
38
+ static readonly abi = _abi;
39
+ static createInterface(): ContextUpgradeableInterface {
40
+ return new Interface(_abi) as ContextUpgradeableInterface;
41
+ }
42
+ static connect(
43
+ address: string,
44
+ runner?: ContractRunner | null
45
+ ): ContextUpgradeable {
46
+ return new Contract(address, _abi, runner) as unknown as ContextUpgradeable;
47
+ }
48
+ }
@@ -0,0 +1,97 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+
5
+ import { Contract, Interface, type ContractRunner } from "ethers";
6
+ import type {
7
+ EIP712Upgradeable,
8
+ EIP712UpgradeableInterface,
9
+ } from "../../../../../@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable";
10
+
11
+ const _abi = [
12
+ {
13
+ inputs: [],
14
+ name: "InvalidInitialization",
15
+ type: "error",
16
+ },
17
+ {
18
+ inputs: [],
19
+ name: "NotInitializing",
20
+ type: "error",
21
+ },
22
+ {
23
+ anonymous: false,
24
+ inputs: [],
25
+ name: "EIP712DomainChanged",
26
+ type: "event",
27
+ },
28
+ {
29
+ anonymous: false,
30
+ inputs: [
31
+ {
32
+ indexed: false,
33
+ internalType: "uint64",
34
+ name: "version",
35
+ type: "uint64",
36
+ },
37
+ ],
38
+ name: "Initialized",
39
+ type: "event",
40
+ },
41
+ {
42
+ inputs: [],
43
+ name: "eip712Domain",
44
+ outputs: [
45
+ {
46
+ internalType: "bytes1",
47
+ name: "fields",
48
+ type: "bytes1",
49
+ },
50
+ {
51
+ internalType: "string",
52
+ name: "name",
53
+ type: "string",
54
+ },
55
+ {
56
+ internalType: "string",
57
+ name: "version",
58
+ type: "string",
59
+ },
60
+ {
61
+ internalType: "uint256",
62
+ name: "chainId",
63
+ type: "uint256",
64
+ },
65
+ {
66
+ internalType: "address",
67
+ name: "verifyingContract",
68
+ type: "address",
69
+ },
70
+ {
71
+ internalType: "bytes32",
72
+ name: "salt",
73
+ type: "bytes32",
74
+ },
75
+ {
76
+ internalType: "uint256[]",
77
+ name: "extensions",
78
+ type: "uint256[]",
79
+ },
80
+ ],
81
+ stateMutability: "view",
82
+ type: "function",
83
+ },
84
+ ] as const;
85
+
86
+ export class EIP712Upgradeable__factory {
87
+ static readonly abi = _abi;
88
+ static createInterface(): EIP712UpgradeableInterface {
89
+ return new Interface(_abi) as EIP712UpgradeableInterface;
90
+ }
91
+ static connect(
92
+ address: string,
93
+ runner?: ContractRunner | null
94
+ ): EIP712Upgradeable {
95
+ return new Contract(address, _abi, runner) as unknown as EIP712Upgradeable;
96
+ }
97
+ }
@@ -0,0 +1,4 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ export { EIP712Upgradeable__factory } from "./EIP712Upgradeable__factory";
@@ -0,0 +1,5 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ export * as cryptography from "./cryptography";
5
+ export { ContextUpgradeable__factory } from "./ContextUpgradeable__factory";
@@ -0,0 +1,5 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ export * as contracts from "./contracts";
5
+ export * as contractsUpgradeable from "./contracts-upgradeable";
@@ -48,23 +48,25 @@ const _abi = [
48
48
  type: "error",
49
49
  },
50
50
  {
51
- inputs: [],
52
- name: "InvalidOwner",
53
- type: "error",
54
- },
55
- {
56
- inputs: [],
57
- name: "OnlyOwner",
58
- type: "error",
59
- },
60
- {
61
- inputs: [],
62
- name: "OnlyPendingOwner",
51
+ inputs: [
52
+ {
53
+ internalType: "address",
54
+ name: "owner",
55
+ type: "address",
56
+ },
57
+ ],
58
+ name: "OwnableInvalidOwner",
63
59
  type: "error",
64
60
  },
65
61
  {
66
- inputs: [],
67
- name: "RegistryNotSet",
62
+ inputs: [
63
+ {
64
+ internalType: "address",
65
+ name: "account",
66
+ type: "address",
67
+ },
68
+ ],
69
+ name: "OwnableUnauthorizedAccount",
68
70
  type: "error",
69
71
  },
70
72
  {
@@ -123,13 +125,13 @@ const _abi = [
123
125
  {
124
126
  indexed: true,
125
127
  internalType: "address",
126
- name: "currentOwner",
128
+ name: "previousOwner",
127
129
  type: "address",
128
130
  },
129
131
  {
130
132
  indexed: true,
131
133
  internalType: "address",
132
- name: "pendingOwner",
134
+ name: "newOwner",
133
135
  type: "address",
134
136
  },
135
137
  ],
@@ -327,6 +329,13 @@ const _abi = [
327
329
  stateMutability: "view",
328
330
  type: "function",
329
331
  },
332
+ {
333
+ inputs: [],
334
+ name: "renounceOwnership",
335
+ outputs: [],
336
+ stateMutability: "nonpayable",
337
+ type: "function",
338
+ },
330
339
  {
331
340
  inputs: [
332
341
  {
@@ -374,7 +383,7 @@ const _abi = [
374
383
  ] as const;
375
384
 
376
385
  const _bytecode =
377
- "0x60a060405234801561000f575f5ffd5b5060405161129138038061129183398101604081905261002e916102ba565b6100e261003961014b565b80517f9e7b61f58c47dc699ac88507c4f5bb9f121c03808c5676a8078fe583e464970080546001600160a01b03199081166001600160a01b039384161790915560208301517f9e7b61f58c47dc699ac88507c4f5bb9f121c03808c5676a8078fe583e46497018054831691841691909117905560408301517f9e7b61f58c47dc699ac88507c4f5bb9f121c03808c5676a8078fe583e46497028054909216921691909117905550565b6001600160a01b03821661010957604051630e048e7160e41b815260040160405180910390fd5b6001600160a01b039091166080525f80546001600160a01b031916331790556001805460ff909216600160a01b0260ff60a01b19909216919091179055610302565b604080516060810182525f8082526020820181905291810191909152466001036101a4575060408051606080820183525f8083526020808401829052928401819052835191820184528082529181018290529182015290565b4662aa36a703610223575060408051606080820183525f8083526020808401829052928401528251908101835273f0ffdc93b7e186bc2f8cb3daa75d86d1930a433d81527392c920834ec8941d2c77d188936e1f7a6f49c1279181019190915273be0e383937d564d7ff0bc3b46c51f0bf8d5c311a9181019190915290565b46617a69036102a1575060408051606080820183525f808352602080840182905292840152825190810183527350157cffd6bbfa2dece204a89ec419c23ef5755d815273e3a9105a3a932253a70f126eb1e3b589c643dd249181019190915273be0e383937d564d7ff0bc3b46c51f0bf8d5c311a9181019190915290565b6040516373cac13b60e01b815260040160405180910390fd5b5f5f604083850312156102cb575f5ffd5b82516001600160a01b03811681146102e1575f5ffd5b602084015190925060ff811681146102f7575f5ffd5b809150509250929050565b608051610f4661034b5f395f818161012e01528181610329015281816103f20152818161048001528181610518015281816106560152818161073901526107c70152610f465ff3fe608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c8063714d3178116100885780638da5cb5b116100635780638da5cb5b14610204578063e30c397814610216578063e451a1b414610229578063f2fde38b1461023c575f5ffd5b8063714d3178146101e157806379ba5097146101f45780638927b030146101fc575f5ffd5b806322005b5e116100c357806322005b5e146101685780632c289dcf14610189578063454bbd291461019c578063536fff6c146101af575f5ffd5b806306615943146100e95780630d4e4b7514610114578063134e18f414610129575b5f5ffd5b6001546100fd90600160a01b900460ff1681565b60405160ff90911681526020015b60405180910390f35b610127610122366004610dc5565b61024f565b005b6101507f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161010b565b61017b610176366004610e00565b6102c2565b60405190815260200161010b565b61017b610197366004610e3b565b6105ef565b6101276101aa366004610e64565b6108ad565b6101d16101bd366004610e3b565b60036020525f908152604090205460ff1681565b604051901515815260200161010b565b6101d16101ef366004610e3b565b61092a565b61012761094b565b61017b6109cf565b5f54610150906001600160a01b031681565b600154610150906001600160a01b031681565b61017b610237366004610e3b565b6109dd565b61012761024a366004610e3b565b610a1b565b5f546001600160a01b0316331461027957604051635fc483c560e01b815260040160405180910390fd5b6001805460ff60a01b1916600160a01b60ff8416908102919091179091556040517f4fc1353c57e2c1137fcdf224e12f79bc39769d1abd44cd593ff3554435677471905f90a250565b5f82336001600160a01b038216148015906102ec5750335f9081526003602052604090205460ff16155b1561030a5760405163c183bcef60e01b815260040160405180910390fd5b604051631e11d7dd60e11b81526001600160a01b0385811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633c23afba90602401602060405180830381865afa15801561036e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103929190610e8e565b6103be575f6103a05f610abc565b90506103ab81610ad7565b506103b68133610ae6565b5091506105e8565b60015460405163488baabf60e01b81526001600160a01b038681166004830152600160a01b90920460ff1660248201525f917f0000000000000000000000000000000000000000000000000000000000000000169063488baabf906044016020604051808303815f875af1158015610438573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045c9190610ea9565b60405163b745e8b160e01b81526001600160a01b0387811660048301529192505f917f0000000000000000000000000000000000000000000000000000000000000000169063b745e8b1906024016020604051808303815f875af11580156104c6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104ea9190610ea9565b6040516391b4975560e01b81526001600160a01b03888116600483015261ffff881660248301529192505f917f000000000000000000000000000000000000000000000000000000000000000016906391b49755906044016020604051808303815f875af115801561055e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105829190610ea9565b90505f6105986105928585610af8565b83610af8565b90506105a381610ad7565b506105ae8133610ae6565b506040516001600160a01b038916907f296fb6ae07b0cc29ce12d17d682365452ebd827f6f17a1ff7478ef0a1edae665905f90a294505050505b5092915050565b5f81336001600160a01b038216148015906106195750335f9081526003602052604090205460ff16155b156106375760405163c183bcef60e01b815260040160405180910390fd5b604051631e11d7dd60e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633c23afba90602401602060405180830381865afa15801561069b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bf9190610e8e565b610705575f6106cd5f610abc565b90506106d881610ad7565b506106e38133610ae6565b506001600160a01b0384165f90815260026020526040902081905591506108a7565b60015460405163488baabf60e01b81526001600160a01b038581166004830152600160a01b90920460ff1660248201525f917f0000000000000000000000000000000000000000000000000000000000000000169063488baabf906044016020604051808303815f875af115801561077f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a39190610ea9565b60405163b745e8b160e01b81526001600160a01b0386811660048301529192505f917f0000000000000000000000000000000000000000000000000000000000000000169063b745e8b1906024016020604051808303815f875af115801561080d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108319190610ea9565b90505f61083e8383610af8565b6001600160a01b0387165f908152600260205260409020819055905061086381610ad7565b5061086e8133610ae6565b506040516001600160a01b038716907f296fb6ae07b0cc29ce12d17d682365452ebd827f6f17a1ff7478ef0a1edae665905f90a2935050505b50919050565b5f546001600160a01b031633146108d757604051635fc483c560e01b815260040160405180910390fd5b6001600160a01b0382165f81815260036020526040808220805460ff191685151590811790915590519092917fad857fa38c9319cb80848f1ef2f924383b90297eb5d71755738ff037d100faa191a35050565b6001600160a01b0381165f9081526002602052604081205415155b92915050565b6001546001600160a01b03163314610976576040516303c25d1960e61b815260040160405180910390fd5b5f8054600180546001600160a01b038082166001600160a01b031980861682178755909216909255604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f6109d8610b2d565b905090565b6001600160a01b0381165f908152600260205260408120546109fe81610b61565b61094557604051631a6bd1fd60e01b815260040160405180910390fd5b5f546001600160a01b03163314610a4557604051635fc483c560e01b815260040160405180910390fd5b6001600160a01b038116610a6c576040516349e27cff60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b038381169182179092555f8054604051929316917f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227009190a350565b5f61094582610acb575f610ace565b60015b60ff165f610b6c565b5f610ae28230610c16565b5090565b5f610af18383610c16565b5090919050565b5f82610b0a57610b075f610abc565b92505b81610b1b57610b185f610abc565b91505b610b2683835f610c8c565b9392505050565b5f46600103610b3c5750600190565b4662aa36a703610b4d575061271190565b46617a6903610b5c57505f1990565b505f90565b5f6109458233610d41565b7f9e7b61f58c47dc699ac88507c4f5bb9f121c03808c5676a8078fe583e464970154604051639cd07acb60e01b81525f915f516020610ef15f395f51905f52916001600160a01b0390911690639cd07acb90610bce9087908790600401610ec0565b6020604051808303815f875af1158015610bea573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0e9190610ea9565b949350505050565b5f5f516020610ef15f395f51905f528054604051635ca4b5b160e11b8152600481018690526001600160a01b03858116602483015292935091169063b9496b62906044015f604051808303815f87803b158015610c71575f5ffd5b505af1158015610c83573d5f5f3e3d5ffd5b50505050505050565b5f5f8215610c9f5750600160f81b610ca2565b505f5b5f5f516020610ef15f395f51905f52600181015460405163d99882d560e01b815260048101899052602481018890526001600160f81b0319851660448201529192506001600160a01b03169063d99882d5906064016020604051808303815f875af1158015610d13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d379190610ea9565b9695505050505050565b5f805f516020610ef15f395f51905f5280546040516382027b6d60e01b8152600481018790526001600160a01b0386811660248301529293509116906382027b6d90604401602060405180830381865afa158015610da1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0e9190610e8e565b5f60208284031215610dd5575f5ffd5b813560ff81168114610b26575f5ffd5b80356001600160a01b0381168114610dfb575f5ffd5b919050565b5f5f60408385031215610e11575f5ffd5b610e1a83610de5565b9150602083013561ffff81168114610e30575f5ffd5b809150509250929050565b5f60208284031215610e4b575f5ffd5b610b2682610de5565b8015158114610e61575f5ffd5b50565b5f5f60408385031215610e75575f5ffd5b610e7e83610de5565b91506020830135610e3081610e54565b5f60208284031215610e9e575f5ffd5b8151610b2681610e54565b5f60208284031215610eb9575f5ffd5b5051919050565b8281526040810160548310610ee357634e487b7160e01b5f52602160045260245ffd5b826020830152939250505056fe9e7b61f58c47dc699ac88507c4f5bb9f121c03808c5676a8078fe583e4649700a26469706673582212207ee19db8335e99339027444cc69485c28cdb977098f4705471dda6d4708d102964736f6c634300081b0033";
386
+ "0x60a060405234801561000f575f5ffd5b5060405161117638038061117683398101604081905261002e91610348565b338061005357604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61005c816100c5565b5061006d6100686100e1565b610250565b6001600160a01b0382166100945760405163c183bcef60e01b815260040160405180910390fd5b6001600160a01b039091166080526001805460ff909216600160a01b0260ff60a01b19909216919091179055610390565b600180546001600160a01b03191690556100de816102f9565b50565b604080516060810182525f80825260208201819052918101919091524660010361013a575060408051606080820183525f8083526020808401829052928401819052835191820184528082529181018290529182015290565b4662aa36a7036101b9575060408051606080820183525f8083526020808401829052928401528251908101835273f0ffdc93b7e186bc2f8cb3daa75d86d1930a433d81527392c920834ec8941d2c77d188936e1f7a6f49c1279181019190915273be0e383937d564d7ff0bc3b46c51f0bf8d5c311a9181019190915290565b46617a6903610237575060408051606080820183525f808352602080840182905292840152825190810183527350157cffd6bbfa2dece204a89ec419c23ef5755d815273e3a9105a3a932253a70f126eb1e3b589c643dd249181019190915273be0e383937d564d7ff0bc3b46c51f0bf8d5c311a9181019190915290565b6040516373cac13b60e01b815260040160405180910390fd5b80517f9e7b61f58c47dc699ac88507c4f5bb9f121c03808c5676a8078fe583e464970080546001600160a01b03199081166001600160a01b039384161790915560208301517f9e7b61f58c47dc699ac88507c4f5bb9f121c03808c5676a8078fe583e46497018054831691841691909117905560408301517f9e7b61f58c47dc699ac88507c4f5bb9f121c03808c5676a8078fe583e46497028054909216921691909117905550565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f5f60408385031215610359575f5ffd5b82516001600160a01b038116811461036f575f5ffd5b602084015190925060ff81168114610385575f5ffd5b809150509250929050565b608051610dab6103cb5f395f818161013901528181610316015281816103d0015281816104680152818161055f01526106140152610dab5ff3fe608060405234801561000f575f5ffd5b50600436106100f0575f3560e01c8063714d3178116100935780638da5cb5b116100635780638da5cb5b14610217578063e30c397814610227578063e451a1b414610238578063f2fde38b1461024b575f5ffd5b8063714d3178146101ec578063715018a6146101ff57806379ba5097146102075780638927b0301461020f575f5ffd5b806322005b5e116100ce57806322005b5e146101735780632c289dcf14610194578063454bbd29146101a7578063536fff6c146101ba575f5ffd5b806306615943146100f45780630d4e4b751461011f578063134e18f414610134575b5f5ffd5b60015461010890600160a01b900460ff1681565b60405160ff90911681526020015b60405180910390f35b61013261012d366004610c2d565b61025e565b005b61015b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610116565b610186610181366004610c68565b6102af565b604051908152602001610116565b6101866101a2366004610ca3565b6104f8565b6101326101b5366004610cc9565b610694565b6101dc6101c8366004610ca3565b60036020525f908152604090205460ff1681565b6040519015158152602001610116565b6101dc6101fa366004610ca3565b6106ef565b610132610710565b610132610723565b61018661076c565b5f546001600160a01b031661015b565b6001546001600160a01b031661015b565b610186610246366004610ca3565b61077a565b610132610259366004610ca3565b6107b8565b610266610828565b6001805460ff60a01b1916600160a01b60ff8416908102919091179091556040517f4fc1353c57e2c1137fcdf224e12f79bc39769d1abd44cd593ff3554435677471905f90a250565b5f82336001600160a01b038216148015906102d95750335f9081526003602052604090205460ff16155b156102f75760405163c183bcef60e01b815260040160405180910390fd5b604051631e11d7dd60e11b81526001600160a01b0385811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633c23afba90602401602060405180830381865afa15801561035b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037f9190610cf3565b61039c57610395846103905f610854565b61086f565b91506104f1565b60015460405163d1e8eba960e01b81526001600160a01b038681166004830152600160a01b90920460ff1660248201525f917f0000000000000000000000000000000000000000000000000000000000000000169063d1e8eba9906044016020604051808303815f875af1158015610416573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043a9190610d0e565b6040516391b4975560e01b81526001600160a01b03878116600483015261ffff871660248301529192505f917f000000000000000000000000000000000000000000000000000000000000000016906391b49755906044016020604051808303815f875af11580156104ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d29190610d0e565b90505f6104df83836108d7565b90506104eb878261086f565b94505050505b5092915050565b5f81336001600160a01b038216148015906105225750335f9081526003602052604090205460ff16155b156105405760405163c183bcef60e01b815260040160405180910390fd5b604051631e11d7dd60e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633c23afba90602401602060405180830381865afa1580156105a4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c89190610cf3565b6105e0576105d9836103905f610854565b915061068e565b60015460405163d1e8eba960e01b81526001600160a01b038581166004830152600160a01b90920460ff1660248201525f917f0000000000000000000000000000000000000000000000000000000000000000169063d1e8eba9906044016020604051808303815f875af115801561065a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067e9190610d0e565b905061068a848261086f565b9250505b50919050565b61069c610828565b6001600160a01b0382165f81815260036020526040808220805460ff191685151590811790915590519092917fad857fa38c9319cb80848f1ef2f924383b90297eb5d71755738ff037d100faa191a35050565b6001600160a01b0381165f9081526002602052604081205415155b92915050565b610718610828565b6107215f61090c565b565b60015433906001600160a01b031681146107605760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b6107698161090c565b50565b5f610775610925565b905090565b6001600160a01b0381165f9081526002602052604081205461079b81610959565b61070a57604051631a6bd1fd60e01b815260040160405180910390fd5b6107c0610828565b600180546001600160a01b0383166001600160a01b031990911681179091556107f05f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f546001600160a01b031633146107215760405163118cdaa760e01b8152336004820152602401610757565b5f61070a82610863575f610866565b60015b60ff165f610964565b6001600160a01b0382165f90815260026020526040812082905561089282610a0e565b5061089d8233610a1d565b506040516001600160a01b038416907f296fb6ae07b0cc29ce12d17d682365452ebd827f6f17a1ff7478ef0a1edae665905f90a250919050565b5f826108e9576108e65f610854565b92505b816108fa576108f75f610854565b91505b61090583835f610a2f565b9392505050565b600180546001600160a01b031916905561076981610ae4565b5f466001036109345750600190565b4662aa36a703610945575061271190565b46617a690361095457505f1990565b505f90565b5f61070a8233610b33565b7f9e7b61f58c47dc699ac88507c4f5bb9f121c03808c5676a8078fe583e464970154604051639cd07acb60e01b81525f915f516020610d565f395f51905f52916001600160a01b0390911690639cd07acb906109c69087908790600401610d25565b6020604051808303815f875af11580156109e2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a069190610d0e565b949350505050565b5f610a198230610bb7565b5090565b5f610a288383610bb7565b5090919050565b5f5f8215610a425750600160f81b610a45565b505f5b5f5f516020610d565f395f51905f52600181015460405163d99882d560e01b815260048101899052602481018890526001600160f81b0319851660448201529192506001600160a01b03169063d99882d5906064016020604051808303815f875af1158015610ab6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ada9190610d0e565b9695505050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f805f516020610d565f395f51905f5280546040516382027b6d60e01b8152600481018790526001600160a01b0386811660248301529293509116906382027b6d90604401602060405180830381865afa158015610b93573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a069190610cf3565b5f5f516020610d565f395f51905f528054604051635ca4b5b160e11b8152600481018690526001600160a01b03858116602483015292935091169063b9496b62906044015f604051808303815f87803b158015610c12575f5ffd5b505af1158015610c24573d5f5f3e3d5ffd5b50505050505050565b5f60208284031215610c3d575f5ffd5b813560ff81168114610905575f5ffd5b80356001600160a01b0381168114610c63575f5ffd5b919050565b5f5f60408385031215610c79575f5ffd5b610c8283610c4d565b9150602083013561ffff81168114610c98575f5ffd5b809150509250929050565b5f60208284031215610cb3575f5ffd5b61090582610c4d565b8015158114610769575f5ffd5b5f5f60408385031215610cda575f5ffd5b610ce383610c4d565b91506020830135610c9881610cbc565b5f60208284031215610d03575f5ffd5b815161090581610cbc565b5f60208284031215610d1e575f5ffd5b5051919050565b8281526040810160548310610d4857634e487b7160e01b5f52602160045260245ffd5b826020830152939250505056fe9e7b61f58c47dc699ac88507c4f5bb9f121c03808c5676a8078fe583e4649700a26469706673582212209059b216a94fda72a40184496adb25c164ac143444311c9b4bb76e6cbc36a41664736f6c634300081b0033";
378
387
 
379
388
  type ComplianceRulesConstructorParams =
380
389
  | [signer?: Signer]