@sudobility/contracts 0.15.1 → 1.10.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 (166) hide show
  1. package/README.md +2 -3
  2. package/artifacts/contracts/Mailer.sol/Mailer.d.ts +2 -185
  3. package/artifacts/contracts/Mailer.sol/Mailer.dbg.json +1 -1
  4. package/artifacts/contracts/Mailer.sol/Mailer.json +2 -185
  5. package/artifacts/contracts/MockUSDC.sol/MockUSDC.dbg.json +1 -1
  6. package/artifacts/contracts/interfaces/IERC20.sol/IERC20.dbg.json +1 -1
  7. package/dist/evm/src/evm/index.d.ts +1 -1
  8. package/dist/evm/src/evm/index.d.ts.map +1 -1
  9. package/dist/evm/src/evm/index.js +4 -4
  10. package/dist/evm/src/evm/index.js.map +1 -1
  11. package/dist/evm/src/evm/mailer-client.d.ts +210 -0
  12. package/dist/evm/src/evm/mailer-client.d.ts.map +1 -0
  13. package/dist/evm/src/evm/mailer-client.js +417 -0
  14. package/dist/evm/src/evm/mailer-client.js.map +1 -0
  15. package/dist/evm/typechain-types/Mailer.d.ts +10 -128
  16. package/dist/evm/typechain-types/Mailer.d.ts.map +1 -1
  17. package/dist/evm/typechain-types/factories/Mailer__factory.d.ts +1 -145
  18. package/dist/evm/typechain-types/factories/Mailer__factory.d.ts.map +1 -1
  19. package/dist/evm/typechain-types/factories/Mailer__factory.js +1 -184
  20. package/dist/evm/typechain-types/factories/Mailer__factory.js.map +1 -1
  21. package/dist/solana/solana/index.d.ts +1 -1
  22. package/dist/solana/solana/index.d.ts.map +1 -1
  23. package/dist/solana/solana/index.js +1 -4
  24. package/dist/solana/solana/index.js.map +1 -1
  25. package/dist/solana/solana/mailer-client.d.ts +209 -0
  26. package/dist/solana/solana/mailer-client.d.ts.map +1 -0
  27. package/dist/solana/solana/mailer-client.js +728 -0
  28. package/dist/solana/solana/mailer-client.js.map +1 -0
  29. package/dist/solana/solana/types.d.ts +2 -3
  30. package/dist/solana/solana/types.d.ts.map +1 -1
  31. package/dist/solana/solana/types.js.map +1 -1
  32. package/dist/unified/src/evm/index.d.ts +1 -1
  33. package/dist/unified/src/evm/index.d.ts.map +1 -1
  34. package/dist/unified/src/evm/index.js +4 -4
  35. package/dist/unified/src/evm/index.js.map +1 -1
  36. package/dist/unified/src/evm/mailer-client.d.ts +210 -0
  37. package/dist/unified/src/evm/mailer-client.d.ts.map +1 -0
  38. package/dist/unified/src/evm/mailer-client.js +417 -0
  39. package/dist/unified/src/evm/mailer-client.js.map +1 -0
  40. package/dist/unified/src/react/context/MailerProvider.d.ts +20 -26
  41. package/dist/unified/src/react/context/MailerProvider.d.ts.map +1 -1
  42. package/dist/unified/src/react/context/MailerProvider.js +26 -26
  43. package/dist/unified/src/react/context/MailerProvider.js.map +1 -1
  44. package/dist/unified/src/react/hooks/useMailerMutations.d.ts +192 -225
  45. package/dist/unified/src/react/hooks/useMailerMutations.d.ts.map +1 -1
  46. package/dist/unified/src/react/hooks/useMailerMutations.js +266 -263
  47. package/dist/unified/src/react/hooks/useMailerMutations.js.map +1 -1
  48. package/dist/unified/src/react/hooks/useMailerQueries.d.ts +63 -117
  49. package/dist/unified/src/react/hooks/useMailerQueries.d.ts.map +1 -1
  50. package/dist/unified/src/react/hooks/useMailerQueries.js +104 -239
  51. package/dist/unified/src/react/hooks/useMailerQueries.js.map +1 -1
  52. package/dist/unified/src/react/index.d.ts +3 -5
  53. package/dist/unified/src/react/index.d.ts.map +1 -1
  54. package/dist/unified/src/react/index.js +26 -41
  55. package/dist/unified/src/react/index.js.map +1 -1
  56. package/dist/unified/src/solana/index.d.ts +1 -1
  57. package/dist/unified/src/solana/index.d.ts.map +1 -1
  58. package/dist/unified/src/solana/index.js +1 -4
  59. package/dist/unified/src/solana/index.js.map +1 -1
  60. package/dist/unified/src/solana/mailer-client.d.ts +209 -0
  61. package/dist/unified/src/solana/mailer-client.d.ts.map +1 -0
  62. package/dist/unified/src/solana/mailer-client.js +728 -0
  63. package/dist/unified/src/solana/mailer-client.js.map +1 -0
  64. package/dist/unified/src/solana/types.d.ts +2 -3
  65. package/dist/unified/src/solana/types.d.ts.map +1 -1
  66. package/dist/unified/src/solana/types.js.map +1 -1
  67. package/dist/unified/src/unified/index.d.ts +1 -1
  68. package/dist/unified/src/unified/index.d.ts.map +1 -1
  69. package/dist/unified/src/unified/onchain-mailer-client.d.ts +247 -192
  70. package/dist/unified/src/unified/onchain-mailer-client.d.ts.map +1 -1
  71. package/dist/unified/src/unified/onchain-mailer-client.js +1462 -551
  72. package/dist/unified/src/unified/onchain-mailer-client.js.map +1 -1
  73. package/dist/unified/src/unified/types.d.ts +6 -23
  74. package/dist/unified/src/unified/types.d.ts.map +1 -1
  75. package/dist/unified/src/utils/chain-config.d.ts +2 -4
  76. package/dist/unified/src/utils/chain-config.d.ts.map +1 -1
  77. package/dist/unified/src/utils/chain-config.js +36 -46
  78. package/dist/unified/src/utils/chain-config.js.map +1 -1
  79. package/dist/unified/typechain-types/Mailer.d.ts +10 -128
  80. package/dist/unified/typechain-types/Mailer.d.ts.map +1 -1
  81. package/dist/unified/typechain-types/factories/Mailer__factory.d.ts +1 -145
  82. package/dist/unified/typechain-types/factories/Mailer__factory.d.ts.map +1 -1
  83. package/dist/unified/typechain-types/factories/Mailer__factory.js +1 -184
  84. package/dist/unified/typechain-types/factories/Mailer__factory.js.map +1 -1
  85. package/dist/unified-esm/src/evm/index.d.ts +1 -1
  86. package/dist/unified-esm/src/evm/index.d.ts.map +1 -1
  87. package/dist/unified-esm/src/evm/index.js +2 -2
  88. package/dist/unified-esm/src/evm/index.js.map +1 -1
  89. package/dist/unified-esm/src/evm/mailer-client.d.ts +210 -0
  90. package/dist/unified-esm/src/evm/mailer-client.d.ts.map +1 -0
  91. package/dist/unified-esm/src/evm/mailer-client.js +413 -0
  92. package/dist/unified-esm/src/evm/mailer-client.js.map +1 -0
  93. package/dist/unified-esm/src/react/context/MailerProvider.d.ts +20 -26
  94. package/dist/unified-esm/src/react/context/MailerProvider.d.ts.map +1 -1
  95. package/dist/unified-esm/src/react/context/MailerProvider.js +26 -25
  96. package/dist/unified-esm/src/react/context/MailerProvider.js.map +1 -1
  97. package/dist/unified-esm/src/react/hooks/useMailerMutations.d.ts +192 -225
  98. package/dist/unified-esm/src/react/hooks/useMailerMutations.d.ts.map +1 -1
  99. package/dist/unified-esm/src/react/hooks/useMailerMutations.js +262 -254
  100. package/dist/unified-esm/src/react/hooks/useMailerMutations.js.map +1 -1
  101. package/dist/unified-esm/src/react/hooks/useMailerQueries.d.ts +63 -117
  102. package/dist/unified-esm/src/react/hooks/useMailerQueries.d.ts.map +1 -1
  103. package/dist/unified-esm/src/react/hooks/useMailerQueries.js +102 -232
  104. package/dist/unified-esm/src/react/hooks/useMailerQueries.js.map +1 -1
  105. package/dist/unified-esm/src/react/index.d.ts +3 -5
  106. package/dist/unified-esm/src/react/index.d.ts.map +1 -1
  107. package/dist/unified-esm/src/react/index.js +5 -9
  108. package/dist/unified-esm/src/react/index.js.map +1 -1
  109. package/dist/unified-esm/src/solana/index.d.ts +1 -1
  110. package/dist/unified-esm/src/solana/index.d.ts.map +1 -1
  111. package/dist/unified-esm/src/solana/index.js +1 -2
  112. package/dist/unified-esm/src/solana/index.js.map +1 -1
  113. package/dist/unified-esm/src/solana/mailer-client.d.ts +209 -0
  114. package/dist/unified-esm/src/solana/mailer-client.d.ts.map +1 -0
  115. package/dist/unified-esm/src/solana/mailer-client.js +724 -0
  116. package/dist/unified-esm/src/solana/mailer-client.js.map +1 -0
  117. package/dist/unified-esm/src/solana/types.d.ts +2 -3
  118. package/dist/unified-esm/src/solana/types.d.ts.map +1 -1
  119. package/dist/unified-esm/src/solana/types.js.map +1 -1
  120. package/dist/unified-esm/src/unified/index.d.ts +1 -1
  121. package/dist/unified-esm/src/unified/index.d.ts.map +1 -1
  122. package/dist/unified-esm/src/unified/onchain-mailer-client.d.ts +247 -192
  123. package/dist/unified-esm/src/unified/onchain-mailer-client.d.ts.map +1 -1
  124. package/dist/unified-esm/src/unified/onchain-mailer-client.js +1462 -551
  125. package/dist/unified-esm/src/unified/onchain-mailer-client.js.map +1 -1
  126. package/dist/unified-esm/src/unified/types.d.ts +6 -23
  127. package/dist/unified-esm/src/unified/types.d.ts.map +1 -1
  128. package/dist/unified-esm/src/utils/chain-config.d.ts +2 -4
  129. package/dist/unified-esm/src/utils/chain-config.d.ts.map +1 -1
  130. package/dist/unified-esm/src/utils/chain-config.js +35 -46
  131. package/dist/unified-esm/src/utils/chain-config.js.map +1 -1
  132. package/dist/unified-esm/typechain-types/Mailer.d.ts +10 -128
  133. package/dist/unified-esm/typechain-types/Mailer.d.ts.map +1 -1
  134. package/dist/unified-esm/typechain-types/factories/Mailer__factory.d.ts +1 -145
  135. package/dist/unified-esm/typechain-types/factories/Mailer__factory.d.ts.map +1 -1
  136. package/dist/unified-esm/typechain-types/factories/Mailer__factory.js +1 -184
  137. package/dist/unified-esm/typechain-types/factories/Mailer__factory.js.map +1 -1
  138. package/package.json +10 -17
  139. package/programs/mailer/src/lib.rs +145 -764
  140. package/programs/mailer/tests/integration_tests.rs +65 -586
  141. package/typechain-types/Mailer.ts +8 -215
  142. package/typechain-types/factories/Mailer__factory.ts +1 -184
  143. package/dist/evm/src/evm/evm-mailer-client.d.ts +0 -1062
  144. package/dist/evm/src/evm/evm-mailer-client.d.ts.map +0 -1
  145. package/dist/evm/src/evm/evm-mailer-client.js +0 -924
  146. package/dist/evm/src/evm/evm-mailer-client.js.map +0 -1
  147. package/dist/solana/solana/solana-mailer-client.d.ts +0 -209
  148. package/dist/solana/solana/solana-mailer-client.d.ts.map +0 -1
  149. package/dist/solana/solana/solana-mailer-client.js +0 -1004
  150. package/dist/solana/solana/solana-mailer-client.js.map +0 -1
  151. package/dist/unified/src/evm/evm-mailer-client.d.ts +0 -1062
  152. package/dist/unified/src/evm/evm-mailer-client.d.ts.map +0 -1
  153. package/dist/unified/src/evm/evm-mailer-client.js +0 -924
  154. package/dist/unified/src/evm/evm-mailer-client.js.map +0 -1
  155. package/dist/unified/src/solana/solana-mailer-client.d.ts +0 -209
  156. package/dist/unified/src/solana/solana-mailer-client.d.ts.map +0 -1
  157. package/dist/unified/src/solana/solana-mailer-client.js +0 -1004
  158. package/dist/unified/src/solana/solana-mailer-client.js.map +0 -1
  159. package/dist/unified-esm/src/evm/evm-mailer-client.d.ts +0 -1062
  160. package/dist/unified-esm/src/evm/evm-mailer-client.d.ts.map +0 -1
  161. package/dist/unified-esm/src/evm/evm-mailer-client.js +0 -920
  162. package/dist/unified-esm/src/evm/evm-mailer-client.js.map +0 -1
  163. package/dist/unified-esm/src/solana/solana-mailer-client.d.ts +0 -209
  164. package/dist/unified-esm/src/solana/solana-mailer-client.d.ts.map +0 -1
  165. package/dist/unified-esm/src/solana/solana-mailer-client.js +0 -1000
  166. package/dist/unified-esm/src/solana/solana-mailer-client.js.map +0 -1
@@ -88,11 +88,6 @@ const _abi = [
88
88
  name: "TransferFailed",
89
89
  type: "error",
90
90
  },
91
- {
92
- inputs: [],
93
- name: "UnpermittedPayer",
94
- type: "error",
95
- },
96
91
  {
97
92
  anonymous: false,
98
93
  inputs: [],
@@ -312,44 +307,6 @@ const _abi = [
312
307
  name: "OwnerClaimed",
313
308
  type: "event",
314
309
  },
315
- {
316
- anonymous: false,
317
- inputs: [
318
- {
319
- indexed: true,
320
- internalType: "address",
321
- name: "contractAddress",
322
- type: "address",
323
- },
324
- {
325
- indexed: true,
326
- internalType: "address",
327
- name: "wallet",
328
- type: "address",
329
- },
330
- ],
331
- name: "PermissionGranted",
332
- type: "event",
333
- },
334
- {
335
- anonymous: false,
336
- inputs: [
337
- {
338
- indexed: true,
339
- internalType: "address",
340
- name: "contractAddress",
341
- type: "address",
342
- },
343
- {
344
- indexed: true,
345
- internalType: "address",
346
- name: "wallet",
347
- type: "address",
348
- },
349
- ],
350
- name: "PermissionRevoked",
351
- type: "event",
352
- },
353
310
  {
354
311
  anonymous: false,
355
312
  inputs: [
@@ -456,43 +413,6 @@ const _abi = [
456
413
  name: "SharesRecorded",
457
414
  type: "event",
458
415
  },
459
- {
460
- anonymous: false,
461
- inputs: [
462
- {
463
- indexed: true,
464
- internalType: "address",
465
- name: "from",
466
- type: "address",
467
- },
468
- {
469
- indexed: true,
470
- internalType: "address",
471
- name: "to",
472
- type: "address",
473
- },
474
- {
475
- indexed: true,
476
- internalType: "string",
477
- name: "webhookId",
478
- type: "string",
479
- },
480
- {
481
- indexed: false,
482
- internalType: "bool",
483
- name: "revenueShareToReceiver",
484
- type: "bool",
485
- },
486
- {
487
- indexed: false,
488
- internalType: "bool",
489
- name: "resolveSenderToName",
490
- type: "bool",
491
- },
492
- ],
493
- name: "WebhookMailSent",
494
- type: "event",
495
- },
496
416
  {
497
417
  inputs: [],
498
418
  name: "CLAIM_PERIOD",
@@ -783,30 +703,6 @@ const _abi = [
783
703
  stateMutability: "view",
784
704
  type: "function",
785
705
  },
786
- {
787
- inputs: [
788
- {
789
- internalType: "address",
790
- name: "",
791
- type: "address",
792
- },
793
- {
794
- internalType: "address",
795
- name: "",
796
- type: "address",
797
- },
798
- ],
799
- name: "permissions",
800
- outputs: [
801
- {
802
- internalType: "bool",
803
- name: "",
804
- type: "bool",
805
- },
806
- ],
807
- stateMutability: "view",
808
- type: "function",
809
- },
810
706
  {
811
707
  inputs: [
812
708
  {
@@ -844,19 +740,6 @@ const _abi = [
844
740
  stateMutability: "nonpayable",
845
741
  type: "function",
846
742
  },
847
- {
848
- inputs: [
849
- {
850
- internalType: "address",
851
- name: "contractAddress",
852
- type: "address",
853
- },
854
- ],
855
- name: "removePermission",
856
- outputs: [],
857
- stateMutability: "nonpayable",
858
- type: "function",
859
- },
860
743
  {
861
744
  inputs: [
862
745
  {
@@ -874,11 +757,6 @@ const _abi = [
874
757
  name: "body",
875
758
  type: "string",
876
759
  },
877
- {
878
- internalType: "address",
879
- name: "payer",
880
- type: "address",
881
- },
882
760
  {
883
761
  internalType: "bool",
884
762
  name: "revenueShareToReceiver",
@@ -920,11 +798,6 @@ const _abi = [
920
798
  name: "mailId",
921
799
  type: "string",
922
800
  },
923
- {
924
- internalType: "address",
925
- name: "payer",
926
- type: "address",
927
- },
928
801
  {
929
802
  internalType: "bool",
930
803
  name: "revenueShareToReceiver",
@@ -953,50 +826,12 @@ const _abi = [
953
826
  name: "mailId",
954
827
  type: "string",
955
828
  },
956
- {
957
- internalType: "address",
958
- name: "payer",
959
- type: "address",
960
- },
961
829
  ],
962
830
  name: "sendPreparedToEmailAddress",
963
831
  outputs: [],
964
832
  stateMutability: "nonpayable",
965
833
  type: "function",
966
834
  },
967
- {
968
- inputs: [
969
- {
970
- internalType: "address",
971
- name: "to",
972
- type: "address",
973
- },
974
- {
975
- internalType: "string",
976
- name: "webhookId",
977
- type: "string",
978
- },
979
- {
980
- internalType: "address",
981
- name: "payer",
982
- type: "address",
983
- },
984
- {
985
- internalType: "bool",
986
- name: "revenueShareToReceiver",
987
- type: "bool",
988
- },
989
- {
990
- internalType: "bool",
991
- name: "resolveSenderToName",
992
- type: "bool",
993
- },
994
- ],
995
- name: "sendThroughWebhook",
996
- outputs: [],
997
- stateMutability: "nonpayable",
998
- type: "function",
999
- },
1000
835
  {
1001
836
  inputs: [
1002
837
  {
@@ -1014,11 +849,6 @@ const _abi = [
1014
849
  name: "body",
1015
850
  type: "string",
1016
851
  },
1017
- {
1018
- internalType: "address",
1019
- name: "payer",
1020
- type: "address",
1021
- },
1022
852
  ],
1023
853
  name: "sendToEmailAddress",
1024
854
  outputs: [],
@@ -1069,19 +899,6 @@ const _abi = [
1069
899
  stateMutability: "nonpayable",
1070
900
  type: "function",
1071
901
  },
1072
- {
1073
- inputs: [
1074
- {
1075
- internalType: "address",
1076
- name: "contractAddress",
1077
- type: "address",
1078
- },
1079
- ],
1080
- name: "setPermission",
1081
- outputs: [],
1082
- stateMutability: "nonpayable",
1083
- type: "function",
1084
- },
1085
902
  {
1086
903
  inputs: [],
1087
904
  name: "unpause",
@@ -1105,7 +922,7 @@ const _abi = [
1105
922
  ] as const;
1106
923
 
1107
924
  const _bytecode =
1108
- "0x60c0604052620186a0600055629896806001553480156200001f57600080fd5b5060405162002251380380620022518339810160408190526200004291620000b4565b6001600160a01b03821615806200006057506001600160a01b038116155b156200007f5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b039182166080521660a052620000ec565b80516001600160a01b0381168114620000af57600080fd5b919050565b60008060408385031215620000c857600080fd5b620000d38362000097565b9150620000e36020840162000097565b90509250929050565b60805160a0516120c162000190600039600081816103df01528181610543015281816107d30152818161087d0152818161098301528181610a2401528181610c5001528181610e4801528181610ef301528181611030015281816110c80152818161117101526114e2015260008181610250015281816108af01528181610b70015281816110fa0152818161134a015281816117ff015261198901526120c16000f3fe608060405234801561001057600080fd5b50600436106102315760003560e01c80638456cb5911610130578063b85a35d2116100b8578063d15786871161007c578063d1578687146104ee578063dbb24ff5146104f6578063e074bb4714610509578063ebf77de01461051c578063f2292f091461052f57600080fd5b8063b85a35d214610487578063bbb2fe7c1461049a578063c5f0a58f146104ad578063cd564ccd146104b6578063ced72f87146104e657600080fd5b80639ded51dd116100ff5780639ded51dd1461041c578063a3a336bf14610424578063ac637c7a14610460578063ae39279f14610473578063b187bd261461047c57600080fd5b80638456cb59146103d25780638da5cb5b146103da5780638db3c5fd14610401578063931e02381461040957600080fd5b80633ff5aecd116101be578063585450141161018257806358545014146103845780635c975abb1461039757806369fe0e2d146103a45780636a1c6e78146103b7578063720e586f146103bf57600080fd5b80633ff5aecd1461032e5780634a4e3bd51461034e5780634b0b1b8b1461035657806355bfc81c1461035e578063573321bb1461037157600080fd5b806327fe3a031161020557806327fe3a03146102e5578063285298af146102f85780632fad573e1461030b578063358cbf0a1461031e5780633f4ba83a1461032657600080fd5b80620270a41461023657806311eac8551461024b5780631f9838b51461028f57806321241dfe146102cd575b600080fd5b610249610244366004611bc0565b610538565b005b6102727f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6102bd61029d366004611be2565b600760209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610286565b6102d7624f1a0081565b604051908152602001610286565b6102496102f3366004611c6f565b610625565b6102d7610306366004611bc0565b6106ea565b610249610319366004611c6f565b610714565b6102496107c8565b610249610978565b6102d761033c366004611bc0565b60066020526000908152604090205481565b610249610a19565b610249610aba565b61024961036c366004611cfa565b610c45565b61024961037f366004611d13565b610cf8565b610249610392366004611bc0565b610db3565b6005546102bd9060ff1681565b6102496103b2366004611cfa565b610e3d565b6102d7600a81565b6102496103cd366004611bc0565b610ee8565b610249611025565b6102727f000000000000000000000000000000000000000000000000000000000000000081565b6102d7605a81565b610249610417366004611dcb565b61120b565b6001546102d7565b61044b610432366004611bc0565b6002602052600090815260409020805460019091015482565b60408051928352602083019190915201610286565b61024961046e366004611bc0565b6112ca565b6102d760005481565b60055460ff166102bd565b610249610495366004611bc0565b611433565b6102496104a8366004611e4c565b6114d7565b6102d760015481565b6104c96104c4366004611bc0565b6115f3565b604080519384526020840192909252151590820152606001610286565b6000546102d7565b6003546102d7565b610249610504366004611e76565b611640565b610249610517366004611bc0565b6116f1565b61024961052a366004611bc0565b61176e565b6102d760035481565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461058157604051635fc483c560e01b815260040160405180910390fd5b60055460ff16156105a5576040516306d39fcd60e41b815260040160405180910390fd5b6001600160a01b0381166105cc5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b03811660008181526006602052604080822091909155517fb6ddac613582447a8fcbbe869621560344bdbe26d6fea183b1e155cd223d864d9061061a906064815260200190565b60405180910390a250565b600454600103610648576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615610671576040516306d39fcd60e41b815260040160405180910390fd5b61067c8387846118cc565b848460405161068c929190611f21565b6040805191829003822084151583528315156020840152916001600160a01b0389169133917f6c92a5c8a1b6c49076a075d1a499458f543fd2588ea971574373865f817ce83d91015b60405180910390a45050600060045550505050565b6001600160a01b03811660009081526006602052604081205461070e906064611f47565b92915050565b600454600103610737576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615610760576040516306d39fcd60e41b815260040160405180910390fd5b61076b8387846118cc565b848460405161077b929190611f21565b6040805191829003822084151583528315156020840152916001600160a01b0389169133917f6a00347d56e88979c493ca2baa527a6cd1009b34431c4ef1021a5c0edd78562591016106d5565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461081157604051635fc483c560e01b815260040160405180910390fd5b600454600103610834576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560035460000361085c5760405163493c1ab760e01b815260040160405180910390fd5b6003805460009182905560405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390529192917f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af11580156108f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091c9190611f5a565b90508061093c576040516312171d8360e31b815260040160405180910390fd5b6040518281527f81521279371b94892737e5e06851c322303c72e5493db1453314ea08f55cb9379060200160405180910390a150506000600455565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109c157604051635fc483c560e01b815260040160405180910390fd5b60055460ff166109e45760405163dcdde9dd60e01b815260040160405180910390fd5b6005805460ff191690556040517f0e5e3b3fb504c22cf5c42fa07d521225937514c654007e1f12646f89768d6f9490600090a1565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a6257604051635fc483c560e01b815260040160405180910390fd5b60055460ff16610a855760405163dcdde9dd60e01b815260040160405180910390fd5b6005805460ff191690556040517f15de7ad89d29fd1c6d2e6b1e878453569b4080edf34e0105faaa3bd52f01853090600090a1565b600454600103610add576040516345f5ce8b60e11b815260040160405180910390fd5b60016004553360009081526002602052604081208054909103610b135760405163493c1ab760e01b815260040160405180910390fd5b624f1a008160010154610b269190611f77565b421115610b465760405163493c1ab760e01b815260040160405180910390fd5b805460008083556001830181905560405163a9059cbb60e01b8152336004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610bc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be59190611f5a565b905080610c05576040516312171d8360e31b815260040160405180910390fd5b60405182815233907f6673747791df7fe01578fcaebe4082d6d7680f052dbdd7d2cf345f88121be421906020015b60405180910390a25050600060045550565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c8e57604051635fc483c560e01b815260040160405180910390fd5b60055460ff1615610cb2576040516306d39fcd60e41b815260040160405180910390fd5b600180549082905560408051828152602081018490527f83b05743f1284b2faed08b3f927951e6663e5277e09a40c939f0dfe5075af77891015b60405180910390a15050565b600454600103610d1b576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615610d44576040516306d39fcd60e41b815260040160405180910390fd5b610d4f8389846118cc565b876001600160a01b0316336001600160a01b03167f4576724219bca1c695ff280c4eba3f012c99252acd6c7d90c0407f63f8e6ad26898989898888604051610d9c96959493929190611fb3565b60405180910390a350506000600455505050505050565b600454600103610dd6576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615610dff576040516306d39fcd60e41b815260040160405180910390fd5b6040516000906001600160a01b038316907f39e3ace752997a751bda5ecf126da84d0d23d5e61f3f56f26a6b22990d7beed8908390a3506000600455565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e8657604051635fc483c560e01b815260040160405180910390fd5b60055460ff1615610eaa576040516306d39fcd60e41b815260040160405180910390fd5b600080549082905560408051828152602081018490527f528d9479e9f9889a87a3c30c7f7ba537e5e59c4c85a37733b16e57c62df613029101610cec565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f3157604051635fc483c560e01b815260040160405180910390fd5b600454600103610f54576040516345f5ce8b60e11b815260040160405180910390fd5b60016004556001600160a01b03811660009081526002602052604081208054909103610f935760405163493c1ab760e01b815260040160405180910390fd5b624f1a008160010154610fa69190611f77565b4211610fc5576040516326f6703f60e11b815260040160405180910390fd5b805460008083556001830181905560038054839290610fe5908490611f77565b90915550506040518181526001600160a01b038416907fb4572b7f0782a4b7672a2341d00e4f1a0af99d81a3f8e959f25ff679eb31448190602001610c33565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461106e57604051635fc483c560e01b815260040160405180910390fd5b60055460ff1615611092576040516306d39fcd60e41b815260040160405180910390fd5b6005805460ff19166001179055600354156111e0576003805460009182905560405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390529192917f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015611143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111679190611f5a565b905080156111d7577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f26536799ace2c3dbe12e638ec3ade6b4173dcf1289be0a58d51a5003015649bd836040516111ca91815260200190565b60405180910390a26111dd565b60038290555b50505b6040517fab35696f06e428ebc5ceba8cd17f8fed287baf43440206d1943af1ee53e6d26790600090a1565b60045460010361122e576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615611257576040516306d39fcd60e41b815260040160405180910390fd5b611263816000806118cc565b8282604051611273929190611f21565b6040518091039020336001600160a01b03167ffadda1f12158473f0f6a95450c4108a36fc8aa62f3dee6a9de94c8c59947044387876040516112b6929190611ff5565b60405180910390a350506000600455505050565b6004546001036112ed576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615611316576040516306d39fcd60e41b815260040160405180910390fd5b6001600160a01b038116156113f5576001546040516323b872dd60e01b8152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af115801561139b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113bf9190611f5a565b6113dc57604051634aa23e8f60e11b815260040160405180910390fd5b80600360008282546113ee9190611f77565b9091555050505b6040516001600160a01b0382169033907f39e3ace752997a751bda5ecf126da84d0d23d5e61f3f56f26a6b22990d7beed890600090a3506000600455565b60055460ff1615611457576040516306d39fcd60e41b815260040160405180910390fd5b6001600160a01b03811661147e5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0381166000818152600760209081526040808320338085529252808320805460ff19166001179055519092917f0ceda602a8e00ef76afe24614343eb6c034877c816b6184d641d2d8b713a0fc691a350565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461152057604051635fc483c560e01b815260040160405180910390fd5b60055460ff1615611544576040516306d39fcd60e41b815260040160405180910390fd5b6001600160a01b03821661156b5760405163e6c4247b60e01b815260040160405180910390fd5b606481111561158d57604051631f3b85d360e01b815260040160405180910390fd5b611598816064611f47565b6001600160a01b038316600081815260066020526040908190209290925590517fb6ddac613582447a8fcbbe869621560344bdbe26d6fea183b1e155cd223d864d906115e79084815260200190565b60405180910390a25050565b6001600160a01b038116600090815260026020526040812080546001820154909291829161162590624f1a0090611f77565b81549093501580159061163757508242115b93959294505050565b600454600103611663576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff161561168c576040516306d39fcd60e41b815260040160405180910390fd5b611698816000806118cc565b336001600160a01b03167fe137336c26280396075fb19ebe313eb4c539c2d845386ad035d8dee029bba3138888888888886040516116db96959493929190612009565b60405180910390a2505060006004555050505050565b6001600160a01b0381166117185760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0381166000818152600760209081526040808320338085529252808320805460ff19169055519092917f5f708ef9fc37d19d88246c264788c8cdf640c9ff500bd168e941ea1421c4f6c491a350565b60055460ff166117915760405163dcdde9dd60e01b815260040160405180910390fd5b6001600160a01b038116600090815260026020526040812080549091036117cb5760405163493c1ab760e01b815260040160405180910390fd5b805460008083556001830181905560405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015611848573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186c9190611f5a565b905080156118bc57836001600160a01b03167f26536799ace2c3dbe12e638ec3ade6b4173dcf1289be0a58d51a5003015649bd836040516118af91815260200190565b60405180910390a26118c6565b8183554260018401555b50505050565b336001600160a01b0384161480159061190957503360009081526007602090815260408083206001600160a01b038716845290915290205460ff16155b156119275760405163184d62c560e01b815260040160405180910390fd5b600061193584600054611a5d565b9050806000036119455750505050565b600082611958576064600a83020461195a565b815b6040516323b872dd60e01b81526001600160a01b038781166004830152306024830152604482018390529192507f0000000000000000000000000000000000000000000000000000000000000000909116906323b872dd906064016020604051808303816000875af11580156119d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f89190611f5a565b611a1557604051634aa23e8f60e11b815260040160405180910390fd5b828015611a2a57506001600160a01b03841615155b15611a3e57611a398483611a9e565b611a56565b8060036000828254611a509190611f77565b90915550505b5050505050565b6001600160a01b0382166000908152600660205260408120546064611a828282611f47565b611a8c9085612052565b611a969190612069565b949350505050565b611aab605a600019612069565b811115611acb57604051634eab2ea760e11b815260040160405180910390fd5b60006064611ada600a84612052565b611ae49190612069565b90506000611af28284611f47565b6001600160a01b038516600090815260026020526040812080549293508392909190611b1f908490611f77565b90915550506001600160a01b03841660009081526002602052604081204260019091015560038054849290611b55908490611f77565b909155505060408051828152602081018490526001600160a01b038616917fad83ccf4aebaf9db0cc5658b24e378a4a865a51b863e0289e3ee0e4947d97b1c910160405180910390a250505050565b80356001600160a01b0381168114611bbb57600080fd5b919050565b600060208284031215611bd257600080fd5b611bdb82611ba4565b9392505050565b60008060408385031215611bf557600080fd5b611bfe83611ba4565b9150611c0c60208401611ba4565b90509250929050565b60008083601f840112611c2757600080fd5b50813567ffffffffffffffff811115611c3f57600080fd5b602083019150836020828501011115611c5757600080fd5b9250929050565b8015158114611c6c57600080fd5b50565b60008060008060008060a08789031215611c8857600080fd5b611c9187611ba4565b9550602087013567ffffffffffffffff811115611cad57600080fd5b611cb989828a01611c15565b9096509450611ccc905060408801611ba4565b92506060870135611cdc81611c5e565b91506080870135611cec81611c5e565b809150509295509295509295565b600060208284031215611d0c57600080fd5b5035919050565b60008060008060008060008060c0898b031215611d2f57600080fd5b611d3889611ba4565b9750602089013567ffffffffffffffff80821115611d5557600080fd5b611d618c838d01611c15565b909950975060408b0135915080821115611d7a57600080fd5b50611d878b828c01611c15565b9096509450611d9a905060608a01611ba4565b92506080890135611daa81611c5e565b915060a0890135611dba81611c5e565b809150509295985092959890939650565b600080600080600060608688031215611de357600080fd5b853567ffffffffffffffff80821115611dfb57600080fd5b611e0789838a01611c15565b90975095506020880135915080821115611e2057600080fd5b50611e2d88828901611c15565b9094509250611e40905060408701611ba4565b90509295509295909350565b60008060408385031215611e5f57600080fd5b611e6883611ba4565b946020939093013593505050565b60008060008060008060006080888a031215611e9157600080fd5b873567ffffffffffffffff80821115611ea957600080fd5b611eb58b838c01611c15565b909950975060208a0135915080821115611ece57600080fd5b611eda8b838c01611c15565b909750955060408a0135915080821115611ef357600080fd5b50611f008a828b01611c15565b9094509250611f13905060608901611ba4565b905092959891949750929550565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561070e5761070e611f31565b600060208284031215611f6c57600080fd5b8151611bdb81611c5e565b8082018082111561070e5761070e611f31565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b608081526000611fc760808301888a611f8a565b8281036020840152611fda818789611f8a565b94151560408401525050901515606090910152949350505050565b602081526000611a96602083018486611f8a565b60608152600061201d60608301888a611f8a565b8281036020840152612030818789611f8a565b90508281036040840152612045818587611f8a565b9998505050505050505050565b808202811582820484141761070e5761070e611f31565b60008261208657634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220bdb7b8067400d75405ab1fb3f11f89738859958485c40e306e1acf1686f2ff8364736f6c63430008180033";
925
+ "0x60c0604052620186a0600055629896806001553480156200001f57600080fd5b50604051620023ab380380620023ab8339810160408190526200004291620000b4565b6001600160a01b03821615806200006057506001600160a01b038116155b156200007f5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b039182166080521660a052620000ec565b80516001600160a01b0381168114620000af57600080fd5b919050565b60008060408385031215620000c857600080fd5b620000d38362000097565b9150620000e36020840162000097565b90509250929050565b60805160a0516121f8620001b360003960008181610385015281816104b0015281816105c70152818161067101528181610a1c01528181610abd01528181610ce9015281816110c20152818161116d0152818161145e015281816114f60152818161159f015261178f015260008181610224015281816106a3015281816107f0015281816108ef01528181610c0901528181610e1501528181610f140152818161133801528181611528015281816116ae0152818161197e0152611ae401526121f86000f3fe608060405234801561001057600080fd5b50600436106102055760003560e01c80637494b3231161011a578063b187bd26116100ad578063ced72f871161007c578063ced72f8714610466578063d15786871461046e578063ebf77de014610476578063f2292f0914610489578063fa26bb271461049257600080fd5b8063b187bd261461040f578063bbb2fe7c1461041a578063c5f0a58f1461042d578063cd564ccd1461043657600080fd5b80639ded51dd116100e95780639ded51dd146103af578063a3a336bf146103b7578063ac637c7a146103f3578063ae39279f1461040657600080fd5b80637494b323146103655780638456cb59146103785780638da5cb5b146103805780638db3c5fd146103a757600080fd5b80634a4e3bd51161019d578063585450141161016c57806358545014146103075780635c975abb1461031a57806369fe0e2d146103375780636a1c6e781461034a578063720e586f1461035257600080fd5b80634a4e3bd5146102d15780634b0b1b8b146102d957806355bfc81c146102e1578063569d7111146102f457600080fd5b8063358cbf0a116101d9578063358cbf0a1461028e5780633a8c3d6a146102965780633f4ba83a146102a95780633ff5aecd146102b157600080fd5b80620270a41461020a57806311eac8551461021f57806321241dfe14610263578063285298af1461027b575b600080fd5b61021d610218366004611d4d565b6104a5565b005b6102467f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61026d624f1a0081565b60405190815260200161025a565b61026d610289366004611d4d565b610592565b61021d6105bc565b61021d6102a4366004611dc9565b61076c565b61021d610a11565b61026d6102bf366004611d4d565b60066020526000908152604090205481565b61021d610ab2565b61021d610b53565b61021d6102ef366004611e44565b610cde565b61021d610302366004611e5d565b610d91565b61021d610315366004611d4d565b61102d565b6005546103279060ff1681565b604051901515815260200161025a565b61021d610345366004611e44565b6110b7565b61026d600a81565b61021d610360366004611d4d565b611162565b61021d610373366004611f04565b61129f565b61021d611453565b6102467f000000000000000000000000000000000000000000000000000000000000000081565b61026d605a81565b60015461026d565b6103de6103c5366004611d4d565b6002602052600090815260409020805460019091015482565b6040805192835260208301919091520161025a565b61021d610401366004611d4d565b611639565b61026d60005481565b60055460ff16610327565b61021d610428366004611f70565b611784565b61026d60015481565b610449610444366004611d4d565b6118a0565b60408051938452602084019290925215159082015260600161025a565b60005461026d565b60035461026d565b61021d610484366004611d4d565b6118ed565b61026d60035481565b61021d6104a0366004611f9a565b611a4b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104ee57604051635fc483c560e01b815260040160405180910390fd5b60055460ff1615610512576040516306d39fcd60e41b815260040160405180910390fd5b6001600160a01b0381166105395760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b03811660008181526006602052604080822091909155517fb6ddac613582447a8fcbbe869621560344bdbe26d6fea183b1e155cd223d864d90610587906064815260200190565b60405180910390a250565b6001600160a01b0381166000908152600660205260408120546105b690606461204a565b92915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461060557604051635fc483c560e01b815260040160405180910390fd5b600454600103610628576040516345f5ce8b60e11b815260040160405180910390fd5b60016004556003546000036106505760405163493c1ab760e01b815260040160405180910390fd5b6003805460009182905560405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390529192917f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af11580156106ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610710919061205d565b905080610730576040516312171d8360e31b815260040160405180910390fd5b6040518281527f81521279371b94892737e5e06851c322303c72e5493db1453314ea08f55cb9379060200160405180910390a150506000600455565b60045460010361078f576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff16156107b8576040516306d39fcd60e41b815260040160405180910390fd5b81156108a25760006107cc33600054611bea565b905060008111801561086e57506040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906108299033903090869060040161207a565b6020604051808303816000875af1158015610848573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086c919061205d565b155b1561088c57604051634aa23e8f60e11b815260040160405180910390fd5b801561089c5761089c8682611c2b565b506109a5565b60006108b033600054611bea565b9050600060646108c1600a8461209e565b6108cb91906120b5565b905060008111801561096d57506040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906109289033903090869060040161207a565b6020604051808303816000875af1158015610947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096b919061205d565b155b1561098b57604051634aa23e8f60e11b815260040160405180910390fd5b806003600082825461099d91906120d7565b909155505050505b83836040516109b59291906120ea565b6040805191829003822084151583528315156020840152916001600160a01b0388169133917f6c92a5c8a1b6c49076a075d1a499458f543fd2588ea971574373865f817ce83d910160405180910390a450506000600455505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a5a57604051635fc483c560e01b815260040160405180910390fd5b60055460ff16610a7d5760405163dcdde9dd60e01b815260040160405180910390fd5b6005805460ff191690556040517f0e5e3b3fb504c22cf5c42fa07d521225937514c654007e1f12646f89768d6f9490600090a1565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610afb57604051635fc483c560e01b815260040160405180910390fd5b60055460ff16610b1e5760405163dcdde9dd60e01b815260040160405180910390fd5b6005805460ff191690556040517f15de7ad89d29fd1c6d2e6b1e878453569b4080edf34e0105faaa3bd52f01853090600090a1565b600454600103610b76576040516345f5ce8b60e11b815260040160405180910390fd5b60016004553360009081526002602052604081208054909103610bac5760405163493c1ab760e01b815260040160405180910390fd5b624f1a008160010154610bbf91906120d7565b421115610bdf5760405163493c1ab760e01b815260040160405180910390fd5b805460008083556001830181905560405163a9059cbb60e01b8152336004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610c5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7e919061205d565b905080610c9e576040516312171d8360e31b815260040160405180910390fd5b60405182815233907f6673747791df7fe01578fcaebe4082d6d7680f052dbdd7d2cf345f88121be421906020015b60405180910390a25050600060045550565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d2757604051635fc483c560e01b815260040160405180910390fd5b60055460ff1615610d4b576040516306d39fcd60e41b815260040160405180910390fd5b600180549082905560408051828152602081018490527f83b05743f1284b2faed08b3f927951e6663e5277e09a40c939f0dfe5075af77891015b60405180910390a15050565b600454600103610db4576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615610ddd576040516306d39fcd60e41b815260040160405180910390fd5b8115610ec7576000610df133600054611bea565b9050600081118015610e9357506040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd90610e4e9033903090869060040161207a565b6020604051808303816000875af1158015610e6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e91919061205d565b155b15610eb157604051634aa23e8f60e11b815260040160405180910390fd5b8015610ec157610ec18882611c2b565b50610fca565b6000610ed533600054611bea565b905060006064610ee6600a8461209e565b610ef091906120b5565b9050600081118015610f9257506040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd90610f4d9033903090869060040161207a565b6020604051808303816000875af1158015610f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f90919061205d565b155b15610fb057604051634aa23e8f60e11b815260040160405180910390fd5b8060036000828254610fc291906120d7565b909155505050505b866001600160a01b0316336001600160a01b03167f4576724219bca1c695ff280c4eba3f012c99252acd6c7d90c0407f63f8e6ad2688888888888860405161101796959493929190612123565b60405180910390a3505060006004555050505050565b600454600103611050576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615611079576040516306d39fcd60e41b815260040160405180910390fd5b6040516000906001600160a01b038316907f39e3ace752997a751bda5ecf126da84d0d23d5e61f3f56f26a6b22990d7beed8908390a3506000600455565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461110057604051635fc483c560e01b815260040160405180910390fd5b60055460ff1615611124576040516306d39fcd60e41b815260040160405180910390fd5b600080549082905560408051828152602081018490527f528d9479e9f9889a87a3c30c7f7ba537e5e59c4c85a37733b16e57c62df613029101610d85565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111ab57604051635fc483c560e01b815260040160405180910390fd5b6004546001036111ce576040516345f5ce8b60e11b815260040160405180910390fd5b60016004556001600160a01b0381166000908152600260205260408120805490910361120d5760405163493c1ab760e01b815260040160405180910390fd5b624f1a00816001015461122091906120d7565b421161123f576040516326f6703f60e11b815260040160405180910390fd5b80546000808355600183018190556003805483929061125f9084906120d7565b90915550506040518181526001600160a01b038416907fb4572b7f0782a4b7672a2341d00e4f1a0af99d81a3f8e959f25ff679eb31448190602001610ccc565b6004546001036112c2576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff16156112eb576040516306d39fcd60e41b815260040160405180910390fd5b60006112f933600054611bea565b90506000606461130a600a8461209e565b61131491906120b5565b90506000811180156113b657506040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906113719033903090869060040161207a565b6020604051808303816000875af1158015611390573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b4919061205d565b155b156113d457604051634aa23e8f60e11b815260040160405180910390fd5b80600360008282546113e691906120d7565b90915550506040516113fb90859085906120ea565b6040518091039020336001600160a01b03167ffadda1f12158473f0f6a95450c4108a36fc8aa62f3dee6a9de94c8c599470443888860405161143e929190612165565b60405180910390a35050600060045550505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461149c57604051635fc483c560e01b815260040160405180910390fd5b60055460ff16156114c0576040516306d39fcd60e41b815260040160405180910390fd5b6005805460ff191660011790556003541561160e576003805460009182905560405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390529192917f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015611571573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611595919061205d565b90508015611605577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f26536799ace2c3dbe12e638ec3ade6b4173dcf1289be0a58d51a5003015649bd836040516115f891815260200190565b60405180910390a261160b565b60038290555b50505b6040517fab35696f06e428ebc5ceba8cd17f8fed287baf43440206d1943af1ee53e6d26790600090a1565b60045460010361165c576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615611685576040516306d39fcd60e41b815260040160405180910390fd5b6001600160a01b03811615611746576001546040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916323b872dd916116e691339130919060040161207a565b6020604051808303816000875af1158015611705573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611729919061205d565b61174657604051634aa23e8f60e11b815260040160405180910390fd5b6040516001600160a01b0382169033907f39e3ace752997a751bda5ecf126da84d0d23d5e61f3f56f26a6b22990d7beed890600090a3506000600455565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117cd57604051635fc483c560e01b815260040160405180910390fd5b60055460ff16156117f1576040516306d39fcd60e41b815260040160405180910390fd5b6001600160a01b0382166118185760405163e6c4247b60e01b815260040160405180910390fd5b606481111561183a57604051631f3b85d360e01b815260040160405180910390fd5b61184581606461204a565b6001600160a01b038316600081815260066020526040908190209290925590517fb6ddac613582447a8fcbbe869621560344bdbe26d6fea183b1e155cd223d864d906118949084815260200190565b60405180910390a25050565b6001600160a01b03811660009081526002602052604081208054600182015490929182916118d290624f1a00906120d7565b8154909350158015906118e457508242115b93959294505050565b60055460ff166119105760405163dcdde9dd60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600260205260408120805490910361194a5760405163493c1ab760e01b815260040160405180910390fd5b805460008083556001830181905560405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af11580156119c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119eb919061205d565b90508015611a3b57836001600160a01b03167f26536799ace2c3dbe12e638ec3ade6b4173dcf1289be0a58d51a5003015649bd83604051611a2e91815260200190565b60405180910390a2611a45565b8183554260018401555b50505050565b600454600103611a6e576040516345f5ce8b60e11b815260040160405180910390fd5b600160045560055460ff1615611a97576040516306d39fcd60e41b815260040160405180910390fd5b6000611aa533600054611bea565b905060006064611ab6600a8461209e565b611ac091906120b5565b9050600081118015611b6257506040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd90611b1d9033903090869060040161207a565b6020604051808303816000875af1158015611b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b60919061205d565b155b15611b8057604051634aa23e8f60e11b815260040160405180910390fd5b8060036000828254611b9291906120d7565b909155505060405133907fe137336c26280396075fb19ebe313eb4c539c2d845386ad035d8dee029bba31390611bd3908b908b908b908b908b908b90612179565b60405180910390a250506000600455505050505050565b6001600160a01b0382166000908152600660205260408120546064611c0f828261204a565b611c19908561209e565b611c2391906120b5565b949350505050565b611c38605a6000196120b5565b811115611c5857604051634eab2ea760e11b815260040160405180910390fd5b60006064611c67600a8461209e565b611c7191906120b5565b90506000611c7f828461204a565b6001600160a01b038516600090815260026020526040812080549293508392909190611cac9084906120d7565b90915550506001600160a01b03841660009081526002602052604081204260019091015560038054849290611ce29084906120d7565b909155505060408051828152602081018490526001600160a01b038616917fad83ccf4aebaf9db0cc5658b24e378a4a865a51b863e0289e3ee0e4947d97b1c910160405180910390a250505050565b80356001600160a01b0381168114611d4857600080fd5b919050565b600060208284031215611d5f57600080fd5b611d6882611d31565b9392505050565b60008083601f840112611d8157600080fd5b50813567ffffffffffffffff811115611d9957600080fd5b602083019150836020828501011115611db157600080fd5b9250929050565b8015158114611dc657600080fd5b50565b600080600080600060808688031215611de157600080fd5b611dea86611d31565b9450602086013567ffffffffffffffff811115611e0657600080fd5b611e1288828901611d6f565b9095509350506040860135611e2681611db8565b91506060860135611e3681611db8565b809150509295509295909350565b600060208284031215611e5657600080fd5b5035919050565b600080600080600080600060a0888a031215611e7857600080fd5b611e8188611d31565b9650602088013567ffffffffffffffff80821115611e9e57600080fd5b611eaa8b838c01611d6f565b909850965060408a0135915080821115611ec357600080fd5b50611ed08a828b01611d6f565b9095509350506060880135611ee481611db8565b91506080880135611ef481611db8565b8091505092959891949750929550565b60008060008060408587031215611f1a57600080fd5b843567ffffffffffffffff80821115611f3257600080fd5b611f3e88838901611d6f565b90965094506020870135915080821115611f5757600080fd5b50611f6487828801611d6f565b95989497509550505050565b60008060408385031215611f8357600080fd5b611f8c83611d31565b946020939093013593505050565b60008060008060008060608789031215611fb357600080fd5b863567ffffffffffffffff80821115611fcb57600080fd5b611fd78a838b01611d6f565b90985096506020890135915080821115611ff057600080fd5b611ffc8a838b01611d6f565b9096509450604089013591508082111561201557600080fd5b5061202289828a01611d6f565b979a9699509497509295939492505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156105b6576105b6612034565b60006020828403121561206f57600080fd5b8151611d6881611db8565b6001600160a01b039384168152919092166020820152604081019190915260600190565b80820281158282048414176105b6576105b6612034565b6000826120d257634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156105b6576105b6612034565b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60808152600061213760808301888a6120fa565b828103602084015261214a8187896120fa565b94151560408401525050901515606090910152949350505050565b602081526000611c236020830184866120fa565b60608152600061218d60608301888a6120fa565b82810360208401526121a08187896120fa565b905082810360408401526121b58185876120fa565b999850505050505050505056fea26469706673582212208a82d8e37c43fe6ce0c564334fcf3525212c54604dc8ca3a5e602c719f3ed32864736f6c63430008180033";
1109
926
 
1110
927
  type MailerConstructorParams =
1111
928
  | [signer?: Signer]