upsideos_evm_rwa_artifacts 0.1.0 → 0.2.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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +15 -4
  3. data/data/recallable-payment/artifacts/AccessControl.json +1 -0
  4. data/data/recallable-payment/artifacts/RecallablePayment.json +1 -0
  5. data/data/v5/artifacts/AccessControl.json +1 -0
  6. data/data/v5/artifacts/ERC2771CustomForwarder.json +1 -0
  7. data/data/v5/artifacts/IdentityRegistry.json +1 -0
  8. data/data/v5/artifacts/InterestPayment.json +1 -0
  9. data/data/v5/artifacts/PurchaseContract.json +1 -0
  10. data/data/v5/artifacts/RestrictedLockupToken.json +1 -0
  11. data/data/v5/artifacts/RestrictedLockupTokenExtension.json +1 -0
  12. data/data/v5/artifacts/RestrictedLockupTokenManagementExtension.json +1 -0
  13. data/data/v5/artifacts/RestrictedSwap.json +1 -0
  14. data/data/v5/artifacts/SnapshotPeriods.json +1 -0
  15. data/data/v5/artifacts/TransferRules.json +1 -0
  16. data/data/v5.1/abi/ERC2771CustomForwarder.json +1 -1
  17. data/data/v5.1/abi/InterestPayment.json +1 -1
  18. data/data/v5.1/abi/PurchaseContract.json +1 -1
  19. data/data/v5.1/abi/RestrictedLockupToken.json +1 -1
  20. data/data/v5.1/abi/RestrictedLockupTokenExtension.json +1 -1
  21. data/data/v5.1/abi/RestrictedLockupTokenManagementExtension.json +1 -1
  22. data/data/v5.1/abi/RestrictedLockupTokenStandardsExtension.json +1 -1
  23. data/data/v5.1/abi/RestrictedSwap.json +1 -1
  24. data/data/v5.1/abi/TransferRules.json +1 -1
  25. data/data/v5.1/abi/merged/RestrictedLockupToken.json +1 -1
  26. data/data/v5.1/artifacts/AccessControl.json +1 -0
  27. data/data/v5.1/artifacts/ERC2771CustomForwarder.json +1 -0
  28. data/data/v5.1/artifacts/IdentityRegistry.json +1 -0
  29. data/data/v5.1/artifacts/InterestPayment.json +1 -0
  30. data/data/v5.1/artifacts/PurchaseContract.json +1 -0
  31. data/data/v5.1/artifacts/RestrictedLockupToken.json +1 -0
  32. data/data/v5.1/artifacts/RestrictedLockupTokenExtension.json +1 -0
  33. data/data/v5.1/artifacts/RestrictedLockupTokenManagementExtension.json +1 -0
  34. data/data/v5.1/artifacts/RestrictedLockupTokenStandardsExtension.json +1 -0
  35. data/data/v5.1/artifacts/RestrictedSwap.json +1 -0
  36. data/data/v5.1/artifacts/SnapshotPeriods.json +1 -0
  37. data/data/v5.1/artifacts/TransferRules.json +1 -0
  38. data/data/v5.1/manifest.json +1 -1
  39. data/data/v5.1/verification-source-codes.json +1 -1
  40. data/lib/upsideos_evm_rwa_artifacts/version.rb +1 -1
  41. data/lib/upsideos_evm_rwa_artifacts.rb +18 -1
  42. metadata +26 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b9fcc814cd0cf323b9d3838ed80a2f1f419385d2a1c84f312c340e6ab5232de2
4
- data.tar.gz: a5732c99e9e4960a63f6c866a27e53f926415abda950995e217f4d507dd098a5
3
+ metadata.gz: 7670db7df811d8fd4b5925fce36d5753801bdb978059f30f1745d0b4fce017a5
4
+ data.tar.gz: f1f53d361020911c5296f892b8ca34902ba10c2125abbbf75d2e11be0aa7356c
5
5
  SHA512:
6
- metadata.gz: 7dca9cded14e1d81e1cf8f881b9c5447f5225f5ab89650d4397d3daccb1401d5bda3f5b7e89624f663ffd6849817e0843374e57897976131c4ad37c4d149b8b9
7
- data.tar.gz: 890b1086e3444b87588fcdc5c1a3f9692d34603caeb59b61154f65271d073ce21e4e98df5f0879a71c0d1f5f5606f8b51920c6a8360e7c6d358fc6fad7b67b19
6
+ metadata.gz: 4728408111c822f9ddc75a5b36a2dfb142336e055247f109ed4b1e389bb6416c4eca5387aa5706ce3f5229776a3f10e7eca0f014f50d40dbde783b82eec7013b
7
+ data.tar.gz: 58d4eeb614d9bc0da5c988577cf503596e8a3ec6c52a749bdc8b3862d681f3c9842b0ff5350233494bb91b3a8c43ea75ea79d4affecf634632aafabf5feacc29
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # upsideos_evm_rwa_artifacts
2
2
 
3
- ABIs and verification sources for the audited EVM Security Token releases.
3
+ ABIs, creation code and verification sources for the audited EVM Security
4
+ Token releases.
4
5
 
5
6
  The gem carries data only. It has no dependencies, and it ships the same
6
7
  files as the `@upsideos/evm-rwa-artifacts` npm package, built from the
@@ -36,6 +37,17 @@ call surface when you talk to the token address:
36
37
  UpsideosEvmRwaArtifacts.merged_abi('v5', 'RestrictedLockupToken')
37
38
  ```
38
39
 
40
+ ## Deploy a contract
41
+
42
+ `artifact` returns the ABI together with the creation code, in the shape a
43
+ deployment front end reads. `bytecode` returns the creation code alone, as
44
+ the 0x-prefixed hex a deployment transaction carries:
45
+
46
+ ```ruby
47
+ UpsideosEvmRwaArtifacts.artifact('v5.1', 'RestrictedLockupToken')
48
+ UpsideosEvmRwaArtifacts.bytecode('v5.1', 'RestrictedLockupToken')
49
+ ```
50
+
39
51
  ## Verify a deployment
40
52
 
41
53
  `verification_source_codes` returns the solc standard-json bundle that an
@@ -69,9 +81,8 @@ Digest::SHA256.hexdigest(path.binread)
69
81
 
70
82
  ## What the gem leaves out
71
83
 
72
- The gem ships no bytecode and no tooling, because a Ruby consumer reads
73
- contracts and verifies them but does not compile or deploy them. Use the
74
- npm package for deployment bytecode, and `@upsideos/evm-explorer-verify`
84
+ The gem ships no tooling, because a Ruby consumer reads contracts and
85
+ hands them on but does not compile them. Use `@upsideos/evm-explorer-verify`
75
86
  to submit a verification to an explorer.
76
87
 
77
88
  ## Notes
@@ -0,0 +1 @@
1
+ {"abi":[{"inputs":[{"internalType":"address","name":"contractAdmin_","type":"address"},{"internalType":"address","name":"reserveAdmin_","type":"address"},{"internalType":"address","name":"transferAdmin_","type":"address"},{"internalType":"address","name":"trustedForwarder_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"EasyAccessControl_AlreadyHasRole","type":"error"},{"inputs":[],"name":"EasyAccessControl_ArraysMustBeSameLength","type":"error"},{"inputs":[],"name":"EasyAccessControl_AtLeastOneContractAdminRequired","type":"error"},{"inputs":[],"name":"EasyAccessControl_CannotRevokeRole","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"EasyAccessControl_DoesNotHaveContractAdminRole","type":"error"},{"inputs":[],"name":"EasyAccessControl_InvalidRole","type":"error"},{"inputs":[],"name":"EasyAccessControl_InvalidZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"grantor","type":"address"},{"indexed":true,"internalType":"address","name":"grantee","type":"address"},{"indexed":false,"internalType":"uint8","name":"role","type":"uint8"},{"indexed":true,"internalType":"bool","name":"status","type":"bool"}],"name":"RoleChange","type":"event"},{"inputs":[],"name":"CONTRACT_ADMIN_ROLE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINT_ADMIN_ROLE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESERVE_ADMIN_ROLE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SOFT_BURN_ADMIN_ROLE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRANSFER_ADMIN_ROLE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WALLETS_ADMIN_ROLE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint8[]","name":"roles_","type":"uint8[]"}],"name":"batchGrantRoles","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint8[]","name":"roles_","type":"uint8[]"}],"name":"batchRevokeRoles","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractAdminCount","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint8","name":"role","type":"uint8"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint8","name":"role","type":"uint8"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint8","name":"role","type":"uint8"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"roles","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60a03461038657600090610d793881900390601f8201601f191683016001600160401b03811184821017610372579180849260809460405283398101031261036e5761004a8161038b565b906100576020820161038b565b61006f60606100686040850161038b565b930161038b565b6001600160a01b0390931693841561035f57506000938085528460205260018060408720541614610350578085528460205260016040862054161580610348575b61030f575b808552602085905260408520805460ff19811660ff91909116176001908117909155906001600160a01b036100e861039f565b16600080516020610d598339815191526020604051858152a460808390526001600160a01b0316908115610300576001600160a01b0316918215610300576001600160a01b0316156102f15780835282602052600280604085205416146102e25780835282602052600160408420541615806102db575b6102a2575b808352602083905260408320805460ff19811660ff919091161760021790556001906001600160a01b0361019661039f565b16600080516020610d59833981519152602060405160028152a4808252816020526008806040842054161461029357808252816020526001604083205416158061028c575b610253575b80825260208290526040909120805460ff19811660ff919091161760081790556001906001600160a01b0361021361039f565b16600080516020610d59833981519152602060405160088152a460405161096890816103f1823960805181818161032c0152818161039701526108bc0152f35b60015460ff811660ff81146102785760ff19909116600191820160ff161790556101e0565b634e487b7160e01b84526011600452602484fd5b50816101db565b63750f2ef960e01b8252600482fd5b60015460ff811660ff81146102c75760ff19909116600191820160ff16179055610164565b634e487b7160e01b85526011600452602485fd5b508261015f565b63750f2ef960e01b8352600483fd5b63122c6df560e11b8352600483fd5b63122c6df560e11b8452600484fd5b60015460ff811660ff81146103345760ff19909116600191820160ff161790556100b5565b634e487b7160e01b87526011600452602487fd5b5060016100b0565b63750f2ef960e01b8552600485fd5b63122c6df560e11b8152600490fd5b5080fd5b634e487b7160e01b85526041600452602485fd5b600080fd5b51906001600160a01b038216820361038657565b6080516001600160a01b03163314806103e5575b156103e15760131936013681116103cb573560601c90565b634e487b7160e01b600052601160045260246000fd5b3390565b5060143610156103b356fe6080604052600436101561001257600080fd5b60003560e01c80630312d1ba146105f0578063077d3c03146105085780631da03312146104ec57806338cb57e8146104d05780633d74a49d146104b45780633e840236146103cb578063572b6c051461037757806368a37ae81461035b5780637da0a877146103165780637ea319b71461017e57806385a712af146101635780638e64eac51461014257806395a8c58d1461011f57806399374642146100e25763ca706c46146100c157600080fd5b346100dd5760003660031901126100dd57602060405160108152f35b600080fd5b346100dd5760203660031901126100dd576001600160a01b0361010361078b565b166000526000602052602060ff60406000205416604051908152f35b346100dd576020610138610132366107a1565b90610819565b6040519015158152f35b346100dd5760003660031901126100dd57602060ff60015416604051908152f35b346100dd5760003660031901126100dd576020604051818152f35b346100dd5761018c36610739565b909261019661085d565b8183036103065760005b8381106101a957005b6101bc6101b78286856107d1565b6107f7565b906101d06101cb8286896107d1565b61080b565b9160ff831692831580156102fc575b6102eb576001600160a01b0382169182156102da57816102069161020161085d565b610819565b6102c95781600052600060205260016040600020541615806102bd575b61027c575b90600193849282600052600060205260ff60406000209181835416171660ff198254161790556000805160206109138339815191526020848060a01b0361026d6108b9565b1692604051908152a4016101a0565b906001549360ff85169260ff84146102a75760ff19909516600193840160ff16179092559092610228565b634e487b7160e01b600052601160045260246000fd5b50600181161515610223565b63750f2ef960e01b60005260046000fd5b63122c6df560e11b60005260046000fd5b63762160bf60e11b60005260046000fd5b50603f84116101df565b627b626760e91b60005260046000fd5b346100dd5760003660031901126100dd576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100dd5760003660031901126100dd57602060405160088152f35b346100dd5760203660031901126100dd57602061039261078b565b6040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169216919091148152f35b346100dd576103d9366107a1565b9060ff8216801580156104aa575b6102eb576001600160a01b0382169182156102da57836104099161020161085d565b6102c957816000526000602052600160406000205416158061049e575b610478575b60019282600052600060205260ff60406000209181835416171660ff198254161790556000805160206109138339815191526020848060a01b0361046d6108b9565b1692604051908152a4005b6001549260ff84169360ff85146102a75760ff1916600194850160ff161790935561042b565b50600183161515610426565b50603f81116103e7565b346100dd5760003660031901126100dd57602060405160048152f35b346100dd5760003660031901126100dd57602060405160028152f35b346100dd5760003660031901126100dd57602060405160018152f35b346100dd57610516366107a1565b9060ff8216801580156105e6575b6102eb576001600160a01b0382169182156102da57836105469161020161085d565b156105d55760018316610594575b6000928284528360205260ff604085209181835416181660ff19825416179055600080516020610913833981519152602060018060a01b0361046d6108b9565b6001549260ff841693600185146105c45784156102a75760ff191660001990940160ff1693909317600155610554565b635b1f8af160e11b60005260046000fd5b632478c9fd60e11b60005260046000fd5b50603f8111610524565b346100dd576105fe36610739565b909261060861085d565b8183036103065760005b83811061061b57005b6106296101b78286856107d1565b906106386101cb8286896107d1565b9160ff831692831580156106fe575b6102eb576001600160a01b0382169182156102da57816106699161020161085d565b156105d557600181166106c9575b906001936000928284528360205260ff604085209181835416181660ff198254161790556000805160206109138339815191526020868060a01b036106ba6108b9565b1692604051908152a401610612565b906001549360ff851692600184146105c45783156102a75760ff1990951660001990930160ff16929092176001559092610677565b50603f8411610647565b9181601f840112156100dd5782359167ffffffffffffffff83116100dd576020808501948460051b0101116100dd57565b60406003198201126100dd5760043567ffffffffffffffff81116100dd578161076491600401610708565b929092916024359067ffffffffffffffff82116100dd5761078791600401610708565b9091565b600435906001600160a01b03821682036100dd57565b60409060031901126100dd576004356001600160a01b03811681036100dd579060243560ff811681036100dd5790565b91908110156107e15760051b0190565b634e487b7160e01b600052603260045260246000fd5b356001600160a01b03811681036100dd5790565b3560ff811681036100dd5790565b9060ff81169182158015610853575b6102eb576001600160a01b03169081156102da5760ff91600052600060205260406000205416161490565b50603f8311610828565b6108656108b9565b6001600160a01b031680156102da576000526000602052600180604060002054160361088d57565b6108956108b9565b60016212a1d960e01b031960009081526001600160a01b0391909116600452602490fd5b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480610907575b156109035760131936013681116102a7573560601c90565b3390565b5060143610156108eb56fe7e9e87d17fbf2950f3379a6331b75b6e997a147bbd3eaedc68c30c62186c68cba26469706673582212208e78f7705da3f8094703043c29159b616f6b608e9a5ba633a8cdb3783ea29f3264736f6c634300081c00337e9e87d17fbf2950f3379a6331b75b6e997a147bbd3eaedc68c30c62186c68cb","deployedBytecode":null,"immutableReferences":{}}
@@ -0,0 +1 @@
1
+ {"abi":[{"inputs":[{"internalType":"address","name":"accessControl_","type":"address"},{"internalType":"address","name":"trustedForwarder_","type":"address"},{"internalType":"address","name":"restrictedLockupToken_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"EasyAccessControl_DoesNotHaveContractAdminRole","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"EasyAccessControl_DoesNotHaveContractOrTransferAdminRole","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"EasyAccessControl_DoesNotHaveTransferAdminRole","type":"error"},{"inputs":[],"name":"EasyAccessControl_InvalidZeroAddress","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"RecallablePayment_AllocationUnchanged","type":"error"},{"inputs":[],"name":"RecallablePayment_DistributionClaimingOpen","type":"error"},{"inputs":[],"name":"RecallablePayment_DistributionNotStarted","type":"error"},{"inputs":[],"name":"RecallablePayment_DistributionNotUnlocked","type":"error"},{"inputs":[],"name":"RecallablePayment_DividendsAlreadyClaimed","type":"error"},{"inputs":[],"name":"RecallablePayment_EmptyRecipients","type":"error"},{"inputs":[{"internalType":"uint256","name":"requested","type":"uint256"},{"internalType":"uint256","name":"available","type":"uint256"}],"name":"RecallablePayment_InsufficientDistributionFunds","type":"error"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"RecallablePayment_InvalidAmount","type":"error"},{"inputs":[],"name":"RecallablePayment_InvalidArrayLengths","type":"error"},{"inputs":[],"name":"RecallablePayment_InvalidFeeApplied","type":"error"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"RecallablePayment_InvalidRecipientAddress","type":"error"},{"inputs":[],"name":"RecallablePayment_InvalidReclaimerAddress","type":"error"},{"inputs":[],"name":"RecallablePayment_InvalidTimestamp","type":"error"},{"inputs":[],"name":"RecallablePayment_InvalidTokenAddress","type":"error"},{"inputs":[],"name":"RecallablePayment_InvalidTrustedForwarder","type":"error"},{"inputs":[],"name":"RecallablePayment_InvalidWalletAddress","type":"error"},{"inputs":[],"name":"RecallablePayment_NoAllocationsToFund","type":"error"},{"inputs":[],"name":"RecallablePayment_NoFundsToClaim","type":"error"},{"inputs":[],"name":"RecallablePayment_NoPositionToTransfer","type":"error"},{"inputs":[],"name":"RecallablePayment_NoRemainingUnclaimedBalance","type":"error"},{"inputs":[],"name":"RecallablePayment_NotEnoughFundsToClaim","type":"error"},{"inputs":[{"internalType":"uint256","name":"totalAllocated","type":"uint256"},{"internalType":"uint256","name":"totalFunds","type":"uint256"}],"name":"RecallablePayment_NotFullyFunded","type":"error"},{"inputs":[],"name":"RecallablePayment_ReclaimerAddressUnchanged","type":"error"},{"inputs":[],"name":"RecallablePayment_SameWallet","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"scheduled","type":"uint256"}],"name":"RecallablePayment_UnlockTimeConflict","type":"error"},{"inputs":[{"internalType":"uint256","name":"requested","type":"uint256"},{"internalType":"uint256","name":"current","type":"uint256"}],"name":"RecallablePayment_UnlockTimeNotApplicableAfterStart","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"admin","type":"address"}],"name":"AllocationUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalAllocated","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalFunds","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unlockedAtTs","type":"uint256"}],"name":"DistributionStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unlockedAtTs","type":"uint256"}],"name":"DistributionUnlockTimeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"DividendClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"},{"indexed":true,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"DividendForceClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"},{"indexed":false,"internalType":"address","name":"newWallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"allocatedAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"claimedAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reclaimedAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"admin","type":"address"}],"name":"DividendForceTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payer","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"DividendFunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"DividendReclaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"},{"indexed":true,"internalType":"address","name":"previousReclaimer","type":"address"},{"indexed":true,"internalType":"address","name":"newReclaimer","type":"address"}],"name":"ReclaimerAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"accessControl","outputs":[{"internalType":"contract IAccessControl","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"address","name":"recipient_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"allocatedBalanceAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256[]","name":"timestamps_","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts_","type":"uint256[]"}],"name":"batchClaimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"address","name":"wallet_","type":"address"},{"internalType":"uint256[]","name":"timestamps_","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts_","type":"uint256[]"}],"name":"batchForceClaimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"address","name":"recipient_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"claimedBalanceAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"},{"internalType":"address[]","name":"recipients_","type":"address[]"},{"internalType":"uint256[]","name":"amounts_","type":"uint256[]"}],"name":"createDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"address","name":"wallet_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"forceClaimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"},{"internalType":"address","name":"oldWallet_","type":"address"},{"internalType":"address","name":"newWallet_","type":"address"}],"name":"forceTransferDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"uint256","name":"timestamp_","type":"uint256"},{"internalType":"uint256","name":"unlockedAtTs_","type":"uint256"}],"name":"fundDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"fundDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"fundsAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"isClaimable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"isStarted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"shouldPause_","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"address","name":"targetAddress_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"reclaimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"reclaimSurplus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"reclaimTotalDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"address","name":"recipient_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"reclaimedBalanceAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reclaimerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"restrictedLockupToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newReclaimerAddress","type":"address"}],"name":"setReclaimerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"},{"internalType":"uint256","name":"unlockedAtTs_","type":"uint256"}],"name":"setUnlockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"tokensAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"totalAllocatedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"address","name":"recipient_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"totalAwardedBalanceAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"address","name":"recipient_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"unclaimedBalanceAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"unlockTimeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60c03461010057601f61223138819003918201601f19168301916001600160401b0383118484101761010557808492606094604052833981010312610100576100478161011b565b61005f60406100586020850161011b565b930161011b565b60016000556080839052916001600160a01b038216156100ef576001600160a01b0316156100de5760018054610100600160a81b03191660089290921b610100600160a81b031691909117905560a05260405161210190816101308239608051818181610aa301528181610bf8015261201a015260a051816108c40152f35b634748e35560e11b60005260046000fd5b63122c6df560e11b60005260046000fd5b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036101005756fe6080604052600436101561001257600080fd5b60003560e01c806302329a291461161c57806302fceedc1461146657806313007d55146114395780631ae3fdc8146113675780631d36f08b146113195780632addc86a146110df5780632f26c87e1461108e578063302102fa14610fb55780633afc9bb714610e725780633e638f8014610e21578063408e5df614610dca5780634acb16d614610c2c578063572b6c0514610bd857806358442f6014610b82578063593b643914610b205780635c975abb14610afd5780636ec9d56f14610ad25780637da0a87714610a8d578063809c187514610a3c57806382aaea451461097f5780638f72f6aa1461091c57806391dd34f2146108f3578063a2e266161461073e578063a605353e146108ae578063adaaef921461078c578063b0fbd7911461073e578063b6ae736414610685578063ccc7a5a314610644578063e228acfe14610516578063ecd158cf146101d85763f462a8651461017157600080fd5b346101d35760403660031901126101d35761018a6118c8565b60243580156101c257600052600360205260406000209060018060a01b03166000526020526020600460406000200154604051908152f35b634ce995af60e11b60005260046000fd5b600080fd5b346101d3576101e636611949565b916101ef611d2f565b6101f7611c07565b6101ff611bea565b82156101c2576001600160a01b03169081156105055780156104ef57826000526003602052604080600020600090848252602052206001810154156104de5760ff60058201541615806104d6575b6104a8575b61025d8282546119b1565b905582826001600160a01b03610271612017565b167f34e311bf98e8d39b5dbfa3058c1ff5c05baab0ccf69cf23e1becb1e596064ee06020604051868152a46040516370a0823160e01b815230600482015290602082602481865afa91821561046857600092610474575b506103156102d4612017565b6040516323b872dd60e01b60208201526001600160a01b0390911660248201523060448201526064808201849052815261030f608482611a80565b84612070565b6040516370a0823160e01b815230600482015290602082602481875afa91821561046857600092610432575b5061034c91926119b1565b03610421578160005260036020526040806000206000908382526020522060058101805460ff81161580610414575b80610405575b61038d575b6001600055005b60019060ff19161790557ffe2213afbde31c5ce0c709e94d82efad9a8a0edf6366f05a3158986c7fb28b9f6060600483018054156103fd575b6103ce612017565b90600185015494549054906040519586526020860152604085015260018060a01b031692a48080808080610386565b4281556103c6565b50825460018401541115610381565b506001830154151561037b565b63f0001dbf60e01b60005260046000fd5b91506020823d602011610460575b8161044d60209383611a80565b810103126101d35761034c915191610341565b3d9150610440565b6040513d6000823e3d90fd5b9091506020813d6020116104a0575b8161049060209383611a80565b810103126101d3575190846102c8565b3d9150610483565b600481018054806104bd575060009055610252565b633fe8af7560e21b600052600060045260245260446000fd5b50600061024d565b631cd4434f60e11b60005260046000fd5b630201ce0960e21b600052600060045260246000fd5b630135a78360e21b60005260046000fd5b346101d35760803660031901126101d35761052f6118c8565b602435906001600160a01b038216908183036101d35760443567ffffffffffffffff81116101d3576105659036906004016118de565b9260643567ffffffffffffffff81116101d3576105869036906004016118de565b9091610590611c07565b610598611bea565b818603610633576000959195918115948515935b8281106105b557005b6105c08184846119d4565b35906105cd818b896119d4565b35916105d7611d2f565b6105df611c07565b6105e7611bea565b80156101c257888761062a575b61061a5760019281610609610610938d611d51565b8d8c611f1b565b81600055016105ac565b62c8245d60e81b60005260046000fd5b503086146105f4565b63313fca0f60e21b60005260046000fd5b346101d35761065236611949565b9061065b611d2f565b610663611bea565b80156101c257826106778261038695611d51565b61067f612017565b90611e1c565b346101d35760203660031901126101d35761069e6118c8565b6106a6611ae9565b6002546001600160a01b039182169181169082158015610735575b61072457818314610713576001600160a01b03191682176002556001600160a01b036106eb612017565b167f99419767e126bf4981859b28bbf70d2e00bf7fbb26773243dbf8b339a956f090600080a4005b63347c24eb60e01b60005260046000fd5b634873e4c960e11b60005260046000fd5b503083146106c1565b346101d35761074c3661190f565b80929192156101c25760009081526004602090815260408083206001600160a01b0394851684528252808320949093168252928352819020549051908152f35b346101d35761079a36611949565b90916107a4611d2f565b6107ac611c07565b6107b4611bea565b81156101c2576002546001600160a01b03161561072457829180600052600360205260408060002060009060018060a01b03851682526020522080549460018201548087111561089d5761080890876119fa565b9015610895575b84116108845761082284610386966119fa565b905561082c612017565b6040805185815260208101939093526001600160a01b039384169384933093909116917f396e89d9c954ab7537e2ff1d4808d0bfbfa53984d0b0a70f8136f19af6bb00bd91a46002546001600160a01b031690611dd9565b6313544bad60e31b60005260046000fd5b93508361080f565b6336b9704160e01b60005260046000fd5b346101d35760003660031901126101d3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101d35760003660031901126101d3576002546040516001600160a01b039091168152602090f35b346101d35761092a36611973565b91610933611d2f565b61093b611c07565b610943611bea565b81156101c2576001600160a01b0381168015908115610975575b5061061a57836109708361038696611d51565b611f1b565b905030148561095d565b346101d35761098d36611949565b9091610997611d2f565b61099f611c07565b6109a7611bea565b81156101c2576002546001600160a01b03161561072457829180600052600360205260408060002060009060018060a01b038516825260205220600281015415801590610a2f575b610a1e57805494851561089d5715610a16575b8484116108845761082284610386966119fa565b849350610a02565b632c3bdd9d60e01b60005260046000fd5b50600381015415156109ef565b346101d357610a4a3661190f565b80929192156101c25760009081526004602090815260408083206001600160a01b0394851684528252808320949093168252928352819020600101549051908152f35b346101d35760003660031901126101d3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101d357610ae03661190f565b80929192156101c257602092610af592611a07565b604051908152f35b346101d35760003660031901126101d357602060ff600154166040519015158152f35b346101d35760403660031901126101d357610b396118c8565b6024359081156101c2576040610af591602093600052600384528160002060009160018060a01b031682528452206003610b7982546002840154906119fa565b910154906119fa565b346101d35760403660031901126101d357610b9b6118c8565b60243580156101c257600052600360205260406000209060018060a01b0316600052602052602060ff600560406000200154166040519015158152f35b346101d35760203660031901126101d3576020610bf36118c8565b6040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169216919091148152f35b346101d357610c3a36611973565b9192610c44611d2f565b610c4c611c07565b610c54611bea565b81156101c2576002546001600160a01b0316156107245782610c768383611d51565b60008381526004602090815260408083206001600160a01b0386811685529083528184209089168452909152902090610cae82611dc3565b908115610db95715610db1575b84116108845782600052600360205260408060002060009060018060a01b03851682526020522090610d036003610cf884546002860154906119fa565b9301928354906119fa565b808611610d99575091604093916002610386979401610d238782546119b1565b9055610d308682546119b1565b90557f396e89d9c954ab7537e2ff1d4808d0bfbfa53984d0b0a70f8136f19af6bb00bd6001600160a01b03610d63612017565b865188815260208101959095526001600160a01b039384169687969094169491169290a46002546001600160a01b031690611dd9565b85638b11303160e01b60005260045260245260446000fd5b935083610cbb565b630702c55d60e01b60005260046000fd5b346101d35760403660031901126101d357610de36118c8565b60243580156101c257600052600360205260406000209060018060a01b03166000526020526020610e176040600020611ce6565b6040519015158152f35b346101d35760403660031901126101d357610e3a6118c8565b60243580156101c257600052600360205260406000209060018060a01b03166000526020526020600160406000200154604051908152f35b346101d35760803660031901126101d357610e8b6118c8565b602435906044359160643591610e9f611d2f565b610ea7611c07565b610eaf611bea565b83156101c25760008481526003602090815260408083206001600160a01b03851684529091529020600581015460ff1680610fa7575b610f8957506001600160a01b03169182156105055781156104ef5783600052600360205260408060002060009085825260205220906001820154156104de5760ff6005830154161580610f80575b610f44575b5061025d8282546119b1565b60048201805480610f585750555b84610f38565b828193925003610f69575050610f52565b633fe8af7560e21b60005260045260245260446000fd5b50801515610f33565b6004849101549063b8afff4560e01b60005260045260245260446000fd5b506004810154841415610ee5565b346101d357610fc336611949565b9091610fcd611c07565b82156101c25781836000526003602052604060002060018060a01b038316600052602052604060002060ff6005820154161561107d5760040190815442101561106c5715611064575b8290557f7a1374c606fc1e27234a53e10bf4b3b69b23e303e31d64835bdafaa62305109b60206001600160a01b0361104c612017565b6040519586526001600160a01b0390941694931692a4005b429250611016565b63b91981df60e01b60005260046000fd5b63eef9fc6b60e01b60005260046000fd5b346101d35761109c3661190f565b80929192156101c25760009081526004602090815260408083206001600160a01b0394851684528252808320949093168252928352819020600201549051908152f35b346101d35760803660031901126101d3576110f86118c8565b60243560443567ffffffffffffffff81116101d35761111b9036906004016118de565b9260643567ffffffffffffffff81116101d35761113c9036906004016118de565b939091611147611c07565b61114f611bea565b81156101c2576001600160a01b0316918215610505578515611308578486036106335781600052600360205260406000208360005260205260406000209261119684611ce6565b61106c5782600095949552600460205260406000208160005260205260406000209460016111c2612017565b910180549890976001600160a01b03909216919060005b8181106111e5578a8a55005b6111f081838a6119d4565b356001600160a01b03811691908290036101d35761120f8185896119d4565b3591801580156112ff575b6112ea57604060008281528c602052209c8d548085146112d557848b939282828c948111600014611295579061124f916119fa565b611258916119b1565b9f6001967f6859131b863b32927da3b8c6aeba719a2a58c25cfcf23d4e250cde6ead6fd918926040925b5581519081528a6020820152a4016111d9565b61129e916119fa565b6112a7916119fa565b9f6001967f6859131b863b32927da3b8c6aeba719a2a58c25cfcf23d4e250cde6ead6fd91892604092611282565b83631da626fd60e01b60005260045260246000fd5b50637d594ec360e11b60005260045260246000fd5b5030811461121a565b633b66417b60e21b60005260046000fd5b346101d35760403660031901126101d3576113326118c8565b60243580156101c257600052600360205260406000209060018060a01b03166000526020526020604060002054604051908152f35b346101d35760603660031901126101d3576113806118c8565b60243567ffffffffffffffff81116101d3576113a09036906004016118de565b909160443567ffffffffffffffff81116101d3576113c29036906004016118de565b9290936113cd611bea565b8382036106335760005b8281106113e057005b6113eb8184846119d4565b35906113f88187896119d4565b3591611402611d2f565b61140a611bea565b80156101c2576001928161142161142f9389611d51565b611429612017565b88611e1c565b81600055016113d7565b346101d35760003660031901126101d35760015460405160089190911c6001600160a01b03168152602090f35b346101d35760803660031901126101d35761147f6118c8565b6044356001600160a01b03811691602435918390036101d3576064356001600160a01b03811691908290036101d3576114b6611ae9565b82156101c2576001600160a01b03169081156105055783158015611614575b801561160b575b61061a578084146115fa5782600052600460205260406000208260005260205260408060002060009086825260205220805491600182019283549360028401948554918315806115f2575b806115ea575b6115d9577fef0e4a171812f49fa21e6f03b3b1f9fe24f04f8abe9d969410ea5fc35af7a97f96600080928160a0998d82526004602052604082208d83526020526002604080842084908d8252602052206115888b82546119b1565b8155600181016115998a82546119b1565b9055016115a78982546119b1565b90555555556115b4612017565b92604051948552602085015260408401526060830152600180841b03166080820152a4005b633860f18d60e11b60005260046000fd5b50821561152d565b508115611527565b6324f33a6560e21b60005260046000fd5b503081146114dc565b5080156114d5565b346101d35760203660031901126101d35760043580151581036101d35760015490600882901c6001600160a01b0316611653612017565b604051630ed0198960e11b8152602081600481865afa8015610468576116b2926020926000926118a9575b506040516395a8c58d60e01b81526001600160a01b03909116600482015260ff909116602482015291829081906044820190565b0381855afa9081156104685760009161188a575b501590816117a1575b50611778571561172c57506116e2611bea565b600160ff19815416176001557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020611719612017565b6040516001600160a01b039091168152a1005b60ff8116156117675760ff19166001557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020611719612017565b638dfc202b60e01b60005260046000fd5b611780612017565b6361b0927b60e11b60009081526001600160a01b0391909116600452602490fd5b90506117ab612017565b604051630d146f5d60e31b81529091602082600481845afa908115610468576118119360209360009361185b575b506040516395a8c58d60e01b81526001600160a01b03909116600482015260ff90921660248301529092839190829081906044820190565b03915afa9081156104685760009161182c575b5015836116cf565b61184e915060203d602011611854575b6118468183611a80565b810190611ad1565b83611824565b503d61183c565b61187c919350843d8611611883575b6118748183611a80565b810190611ab8565b91876117d9565b503d61186a565b6118a3915060203d602011611854576118468183611a80565b846116c6565b6118c1919250833d8511611883576118748183611a80565b908761167e565b600435906001600160a01b03821682036101d357565b9181601f840112156101d35782359167ffffffffffffffff83116101d3576020808501948460051b0101116101d357565b60609060031901126101d3576004356001600160a01b03811681036101d357906024356001600160a01b03811681036101d3579060443590565b60609060031901126101d3576004356001600160a01b03811681036101d357906024359060443590565b60809060031901126101d3576004356001600160a01b03811681036101d357906024356001600160a01b03811681036101d357906044359060643590565b919082018092116119be57565b634e487b7160e01b600052601160045260246000fd5b91908110156119e45760051b0190565b634e487b7160e01b600052603260045260246000fd5b919082039182116119be57565b9091806000526003602052604060002060018060a01b038316600052602052611a336040600020611ce6565b15611a7857600052600460205260406000209060018060a01b031660005260205260406000209060018060a01b0316600052602052611a756040600020611dc3565b90565b505050600090565b90601f8019910116810190811067ffffffffffffffff821117611aa257604052565b634e487b7160e01b600052604160045260246000fd5b908160209103126101d3575160ff811681036101d35790565b908160209103126101d3575180151581036101d35790565b60015460081c6001600160a01b0316611b00612017565b604051630ed0198960e11b81529091602082600481845afa90811561046857611b6593602093600093611bcb57506040516395a8c58d60e01b81526001600160a01b03909116600482015260ff90921660248301529092839190829081906044820190565b03915afa90811561046857600091611bac575b5015611b8057565b611b88612017565b60016212a1d960e01b031960009081526001600160a01b0391909116600452602490fd5b611bc5915060203d602011611854576118468183611a80565b38611b78565b611be3919350843d8611611883576118748183611a80565b91386117d9565b60ff60015416611bf657565b63d93c066560e01b60005260046000fd5b60015460081c6001600160a01b0316611c1e612017565b604051630d146f5d60e31b81529091602082600481845afa90811561046857611c8393602093600093611bcb57506040516395a8c58d60e01b81526001600160a01b03909116600482015260ff90921660248301529092839190829081906044820190565b03915afa90811561046857600091611cc7575b5015611c9e57565b611ca6612017565b630b7b41c360e11b60009081526001600160a01b0391909116600452602490fd5b611ce0915060203d602011611854576118468183611a80565b38611c96565b60ff6005820154169081611d21575b81611d12575b81611d04575090565b905060018154910154111590565b60048101544210159150611cfb565b600181015415159150611cf5565b600260005414611d40576002600055565b633ee5aeb560e01b60005260046000fd5b60409160005260036020528160002060009160018060a01b031682526020522060ff6005820154161561107d5760048101544210611db25760018154910154808210611d9b575050565b631018f44b60e01b60005260045260245260446000fd5b6342a4226960e11b60005260046000fd5b611a75906002610b7982546001840154906119fa565b60405163a9059cbb60e01b60208201526001600160a01b03929092166024830152604480830193909352918152611e1a91611e15606483611a80565b612070565b565b60008381526004602090815260408083206001600160a01b03808616855290835281842090861684529091528120909594939190611e5981611dc3565b8015611f0c578515611f04575b8511611ef557956001611e1a969701611e808682546119b1565b905582815260036020526040812060018060a01b038316825260205260026040822001611eae8682546119b1565b9055506040518481526001600160a01b0391821692918391908516907ff1077fb91af1db37416df258bb3f2ea2ecf9020c9be34430c2b5a25c743b7e5890602090a4611dd9565b6313544bad60e31b8752600487fd5b945084611e66565b630702c55d60e01b8852600488fd5b60008381526004602090815260408083206001600160a01b038086168552908352818420908616845290915290209392611f5485611dc3565b8015610db957841561200f575b8411610884576001611e1a9501611f798582546119b1565b9055806000526003602052604060002060018060a01b0383166000526020526002604060002001611fab8582546119b1565b90556001600160a01b03611fbd612017565b604080516001600160a01b0386811682526020820189905287169392909216917f3dab96d25667e7aa70a376ac267be0ae05cfc747ad698785873306795fb74fbf9190a46001600160a01b0316611dd9565b935083611f61565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612065575b156120615760131936013681116119be573560601c90565b3390565b506014361015612049565b906000602091828151910182855af115610468576000513d6120c257506001600160a01b0381163b155b6120a15750565b635274afe760e01b60009081526001600160a01b0391909116600452602490fd5b6001141561209a56fea26469706673582212200cef6d866d37186ac90861f374b0df031b0b4dee55b92dd4b44ab3289af4cb6d64736f6c634300081c0033","deployedBytecode":null,"immutableReferences":{}}
@@ -0,0 +1 @@
1
+ {"abi":[{"inputs":[{"internalType":"address","name":"contractAdmin_","type":"address"},{"internalType":"address","name":"reserveAdmin_","type":"address"},{"internalType":"address","name":"transferAdmin_","type":"address"},{"internalType":"address","name":"trustedForwarder_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"EasyAccessControl_AlreadyHasRole","type":"error"},{"inputs":[],"name":"EasyAccessControl_ArraysMustBeSameLength","type":"error"},{"inputs":[],"name":"EasyAccessControl_AtLeastOneContractAdminRequired","type":"error"},{"inputs":[],"name":"EasyAccessControl_CannotRevokeRole","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"EasyAccessControl_DoesNotHaveContractAdminRole","type":"error"},{"inputs":[],"name":"EasyAccessControl_InvalidRole","type":"error"},{"inputs":[],"name":"EasyAccessControl_InvalidZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"grantor","type":"address"},{"indexed":true,"internalType":"address","name":"grantee","type":"address"},{"indexed":false,"internalType":"uint8","name":"role","type":"uint8"},{"indexed":true,"internalType":"bool","name":"status","type":"bool"}],"name":"RoleChange","type":"event"},{"inputs":[],"name":"CONTRACT_ADMIN_ROLE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINT_ADMIN_ROLE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESERVE_ADMIN_ROLE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SOFT_BURN_ADMIN_ROLE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRANSFER_ADMIN_ROLE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WALLETS_ADMIN_ROLE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint8[]","name":"roles_","type":"uint8[]"}],"name":"batchGrantRoles","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint8[]","name":"roles_","type":"uint8[]"}],"name":"batchRevokeRoles","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractAdminCount","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint8","name":"role","type":"uint8"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint8","name":"role","type":"uint8"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint8","name":"role","type":"uint8"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"roles","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60a03461038657600090610d793881900390601f8201601f191683016001600160401b03811184821017610372579180849260809460405283398101031261036e5761004a8161038b565b906100576020820161038b565b61006f60606100686040850161038b565b930161038b565b6001600160a01b0390931693841561035f57506000938085528460205260018060408720541614610350578085528460205260016040862054161580610348575b61030f575b808552602085905260408520805460ff19811660ff91909116176001908117909155906001600160a01b036100e861039f565b16600080516020610d598339815191526020604051858152a460808390526001600160a01b0316908115610300576001600160a01b0316918215610300576001600160a01b0316156102f15780835282602052600280604085205416146102e25780835282602052600160408420541615806102db575b6102a2575b808352602083905260408320805460ff19811660ff919091161760021790556001906001600160a01b0361019661039f565b16600080516020610d59833981519152602060405160028152a4808252816020526008806040842054161461029357808252816020526001604083205416158061028c575b610253575b80825260208290526040909120805460ff19811660ff919091161760081790556001906001600160a01b0361021361039f565b16600080516020610d59833981519152602060405160088152a460405161096890816103f1823960805181818161032c0152818161039701526108bc0152f35b60015460ff811660ff81146102785760ff19909116600191820160ff161790556101e0565b634e487b7160e01b84526011600452602484fd5b50816101db565b63750f2ef960e01b8252600482fd5b60015460ff811660ff81146102c75760ff19909116600191820160ff16179055610164565b634e487b7160e01b85526011600452602485fd5b508261015f565b63750f2ef960e01b8352600483fd5b63122c6df560e11b8352600483fd5b63122c6df560e11b8452600484fd5b60015460ff811660ff81146103345760ff19909116600191820160ff161790556100b5565b634e487b7160e01b87526011600452602487fd5b5060016100b0565b63750f2ef960e01b8552600485fd5b63122c6df560e11b8152600490fd5b5080fd5b634e487b7160e01b85526041600452602485fd5b600080fd5b51906001600160a01b038216820361038657565b6080516001600160a01b03163314806103e5575b156103e15760131936013681116103cb573560601c90565b634e487b7160e01b600052601160045260246000fd5b3390565b5060143610156103b356fe6080604052600436101561001257600080fd5b60003560e01c80630312d1ba146105f0578063077d3c03146105085780631da03312146104ec57806338cb57e8146104d05780633d74a49d146104b45780633e840236146103cb578063572b6c051461037757806368a37ae81461035b5780637da0a877146103165780637ea319b71461017e57806385a712af146101635780638e64eac51461014257806395a8c58d1461011f57806399374642146100e25763ca706c46146100c157600080fd5b346100dd5760003660031901126100dd57602060405160108152f35b600080fd5b346100dd5760203660031901126100dd576001600160a01b0361010361078b565b166000526000602052602060ff60406000205416604051908152f35b346100dd576020610138610132366107a1565b90610819565b6040519015158152f35b346100dd5760003660031901126100dd57602060ff60015416604051908152f35b346100dd5760003660031901126100dd576020604051818152f35b346100dd5761018c36610739565b909261019661085d565b8183036103065760005b8381106101a957005b6101bc6101b78286856107d1565b6107f7565b906101d06101cb8286896107d1565b61080b565b9160ff831692831580156102fc575b6102eb576001600160a01b0382169182156102da57816102069161020161085d565b610819565b6102c95781600052600060205260016040600020541615806102bd575b61027c575b90600193849282600052600060205260ff60406000209181835416171660ff198254161790556000805160206109138339815191526020848060a01b0361026d6108b9565b1692604051908152a4016101a0565b906001549360ff85169260ff84146102a75760ff19909516600193840160ff16179092559092610228565b634e487b7160e01b600052601160045260246000fd5b50600181161515610223565b63750f2ef960e01b60005260046000fd5b63122c6df560e11b60005260046000fd5b63762160bf60e11b60005260046000fd5b50603f84116101df565b627b626760e91b60005260046000fd5b346100dd5760003660031901126100dd576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100dd5760003660031901126100dd57602060405160088152f35b346100dd5760203660031901126100dd57602061039261078b565b6040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169216919091148152f35b346100dd576103d9366107a1565b9060ff8216801580156104aa575b6102eb576001600160a01b0382169182156102da57836104099161020161085d565b6102c957816000526000602052600160406000205416158061049e575b610478575b60019282600052600060205260ff60406000209181835416171660ff198254161790556000805160206109138339815191526020848060a01b0361046d6108b9565b1692604051908152a4005b6001549260ff84169360ff85146102a75760ff1916600194850160ff161790935561042b565b50600183161515610426565b50603f81116103e7565b346100dd5760003660031901126100dd57602060405160048152f35b346100dd5760003660031901126100dd57602060405160028152f35b346100dd5760003660031901126100dd57602060405160018152f35b346100dd57610516366107a1565b9060ff8216801580156105e6575b6102eb576001600160a01b0382169182156102da57836105469161020161085d565b156105d55760018316610594575b6000928284528360205260ff604085209181835416181660ff19825416179055600080516020610913833981519152602060018060a01b0361046d6108b9565b6001549260ff841693600185146105c45784156102a75760ff191660001990940160ff1693909317600155610554565b635b1f8af160e11b60005260046000fd5b632478c9fd60e11b60005260046000fd5b50603f8111610524565b346100dd576105fe36610739565b909261060861085d565b8183036103065760005b83811061061b57005b6106296101b78286856107d1565b906106386101cb8286896107d1565b9160ff831692831580156106fe575b6102eb576001600160a01b0382169182156102da57816106699161020161085d565b156105d557600181166106c9575b906001936000928284528360205260ff604085209181835416181660ff198254161790556000805160206109138339815191526020868060a01b036106ba6108b9565b1692604051908152a401610612565b906001549360ff851692600184146105c45783156102a75760ff1990951660001990930160ff16929092176001559092610677565b50603f8411610647565b9181601f840112156100dd5782359167ffffffffffffffff83116100dd576020808501948460051b0101116100dd57565b60406003198201126100dd5760043567ffffffffffffffff81116100dd578161076491600401610708565b929092916024359067ffffffffffffffff82116100dd5761078791600401610708565b9091565b600435906001600160a01b03821682036100dd57565b60409060031901126100dd576004356001600160a01b03811681036100dd579060243560ff811681036100dd5790565b91908110156107e15760051b0190565b634e487b7160e01b600052603260045260246000fd5b356001600160a01b03811681036100dd5790565b3560ff811681036100dd5790565b9060ff81169182158015610853575b6102eb576001600160a01b03169081156102da5760ff91600052600060205260406000205416161490565b50603f8311610828565b6108656108b9565b6001600160a01b031680156102da576000526000602052600180604060002054160361088d57565b6108956108b9565b60016212a1d960e01b031960009081526001600160a01b0391909116600452602490fd5b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480610907575b156109035760131936013681116102a7573560601c90565b3390565b5060143610156108eb56fe7e9e87d17fbf2950f3379a6331b75b6e997a147bbd3eaedc68c30c62186c68cba26469706673582212208e78f7705da3f8094703043c29159b616f6b608e9a5ba633a8cdb3783ea29f3264736f6c634300081c00337e9e87d17fbf2950f3379a6331b75b6e997a147bbd3eaedc68c30c62186c68cb","deployedBytecode":null,"immutableReferences":{}}
@@ -0,0 +1 @@
1
+ {"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint48","name":"deadline","type":"uint48"}],"name":"ERC2771CustomForwarder_ExpiredRequest","type":"error"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"address","name":"from","type":"address"}],"name":"ERC2771CustomForwarder_InvalidSigner","type":"error"},{"inputs":[{"internalType":"uint256","name":"requestedValue","type":"uint256"},{"internalType":"uint256","name":"msgValue","type":"uint256"}],"name":"ERC2771CustomForwarder_MismatchedValue","type":"error"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address","name":"forwarder","type":"address"}],"name":"ERC2771CustomForwarder_UntrustfulTarget","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"InsufficientBalance","type":"error"},{"inputs":[],"name":"InvalidShortString","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"Nonces_InvalidAccountNonce","type":"error"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"name":"StringTooLong","type":"error"},{"anonymous":false,"inputs":[],"name":"EIP712DomainChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"signer","type":"address"},{"indexed":false,"internalType":"uint256","name":"nonce","type":"uint256"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"}],"name":"ExecutedForwardRequest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"NonceUsed","type":"event"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint48","name":"deadline","type":"uint48"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct ERC2771CustomForwarder.ForwardRequestData","name":"request","type":"tuple"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint48","name":"deadline","type":"uint48"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct ERC2771CustomForwarder.ForwardRequestData[]","name":"requests","type":"tuple[]"},{"internalType":"address payable","name":"refundReceiver","type":"address"}],"name":"executeBatch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"uint256","name":"nonce_","type":"uint256"}],"name":"isNonceValid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint48","name":"deadline","type":"uint48"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct ERC2771CustomForwarder.ForwardRequestData","name":"request","type":"tuple"}],"name":"verify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x61016080604052346101895761144d803803809161001d82856101a4565b8339810190602081830312610189578051906001600160401b03821161018957019080601f83011215610189578151916001600160401b03831161018e5760405192610073601f8201601f1916602001856101a4565b8084526020840192602082840101116101895782602061009393016101c7565b6040918251916100a384846101a4565b600183526020830191603160f81b83526100bc816101ea565b610120526100c98461038f565b61014052519020918260e05251902080610100524660a05282519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f84528483015260608201524660808201523060a082015260a0815261013060c0826101a4565b5190206080523060c05251610f7b90816104d2823960805181610dcd015260a05181610e8a015260c05181610d97015260e05181610e1c01526101005181610e42015261012051816102050152610140518161022e0152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b601f909101601f19168101906001600160401b0382119082101761018e57604052565b60005b8381106101da5750506000910152565b81810151838201526020016101ca565b90815160208110600014610265575090601f815111610226576020815191015160208210610216571790565b6000198260200360031b1b161790565b6044604051809263305a27a960e01b82526020600483015261025781518092816024860152602086860191016101c7565b601f01601f19168101030190fd5b6001600160401b03811161018e57600054600181811c91168015610385575b602082101461036f57601f811161033a575b50602092601f82116001146102d657928192936000926102cb575b50508160011b916000199060031b1c19161760005560ff90565b0151905038806102b1565b601f1982169360008052806000209160005b8681106103225750836001959610610309575b505050811b0160005560ff90565b015160001960f88460031b161c191690553880806102fb565b919260206001819286850151815501940192016102e8565b60008052601f6020600020910160051c810190601f830160051c015b8181106103635750610296565b60008155600101610356565b634e487b7160e01b600052602260045260246000fd5b90607f1690610284565b908151602081106000146103bb575090601f815111610226576020815191015160208210610216571790565b6001600160401b03811161018e57600154600181811c911680156104c7575b602082101461036f57601f8111610491575b50602092601f821160011461042c5792819293600092610421575b50508160011b916000199060031b1c19161760015560ff90565b015190503880610407565b601f198216936001600052806000209160005b8681106104795750836001959610610460575b505050811b0160015560ff90565b015160001960f88460031b161c19169055388080610452565b9192602060018192868501518155019401920161043f565b6001600052601f6020600020910160051c810190601f830160051c015b8181106104bb57506103ec565b600081556001016104ae565b90607f16906103da56fe6080604052600436101561001257600080fd5b60003560e01c80633dbfe077146100675780634104b5791461006257806382f6471a1461005d57806384b0196e146100585763bd11257c1461005357600080fd5b6102ed565b6101ec565b610144565b6100f1565b610070366100b7565b60408101359081340361009e57610086906106a8565b1561008d57005b63d6bda27560e01b60005260046000fd5b506362c7bced60e11b6000526004523460245260446000fd5b60206003198201126100ec576004359067ffffffffffffffff82116100ec576101009082900360031901126100ec5760040190565b600080fd5b346100ec576020610109610104366100b7565b6107df565b50908261012b575b5081610123575b506040519015158152f35b905038610118565b915038610111565b6001600160a01b038116036100ec57565b60403660031901126100ec5760043567ffffffffffffffff81116100ec57366023820112156100ec5780600401359067ffffffffffffffff82116100ec573660248360051b830101116100ec576101a99160248035926101a384610133565b01610398565b005b919082519283825260005b8481106101d7575050826000602080949584010152601f8019910116010190565b806020809284010151828286010152016101b6565b346100ec5760003660031901126100ec576102926102297f0000000000000000000000000000000000000000000000000000000000000000610b4d565b6102527f0000000000000000000000000000000000000000000000000000000000000000610c34565b6020604051610261828261060b565b60008152816102a081830194601f198301368737604051978897600f60f81b895260e0858a015260e08901906101ab565b9087820360408901526101ab565b91466060870152306080870152600060a087015285830360c0870152519182815201929160005b8281106102d657505050500390f35b8351855286955093810193928101926001016102c7565b346100ec5760403660031901126100ec5760043561030a81610133565b6001600160a01b03166000908152600260209081526040808320602435845282529182902054915160ff90921615825290f35b919081101561035f5760051b8101359060fe19813603018212156100ec570190565b634e487b7160e01b600052603260045260246000fd5b9190820180921161038257565b634e487b7160e01b600052601160045260246000fd5b600091829182916001600160a01b03861615915b8184106103ec57505050503481036103d35750806103c8575050565b6103d191610968565b565b6362c7bced60e11b6000526004523460245260445b6000fd5b9091929361040990604061040187868661033d565b013590610375565b9361041581848461033d565b600085610421836107df565b9361055c575b82610554575b508161054c575b5061046b575b501590505b61044f575b6001019291906103ac565b94610463600191604061040189878761033d565b959050610444565b905061047682610632565b9061048660a084013580936109e5565b600080606085013561049a60208701610632565b60408701356104ac60c0890189610652565b6104de6104bb8b959395610632565b916104d0604051938492602084019889610685565b03601f19810183528261060b565b5193f1923d806000803e8415610542575b508361043f9493926105227f842fb24a83793558587a3dab2be7674da4a51d09c5542d6dd354e5d0ea70813c935a610a8e565b6040805194855291151560208501526001600160a01b031692a23861043a565b80156104ef576000fd5b905038610434565b91503861042d565b82156105c657811561059c5780610427576103e88461057a88610632565b636e55e4fd60e11b6000526001600160a01b0391821660045216602452604490565b6103e86105ab6080880161063f565b632c2ca14d60e21b60005265ffffffffffff16600452602490565b6103e86105d560208801610632565b631f834c2b60e21b6000526001600160a01b031660045230602452604490565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff82111761062d57604052565b6105f5565b3561063c81610133565b90565b3565ffffffffffff811681036100ec5790565b903590601e19813603018212156100ec570180359067ffffffffffffffff82116100ec576020019181360383136100ec57565b826014949392823701906bffffffffffffffffffffffff199060601b1681520190565b906000916106b5816107df565b92919082156107d05781156107c15780156107b457826107ac575b50816107a4575b506106e0575050565b9092506106ec83610632565b906106fc60a085013580936109e5565b600080606086013561071060208801610632565b604088013561072260c08a018a610652565b6107316104bb8c959395610632565b5193f180943d806000803e8215610794575b50916107707f842fb24a83793558587a3dab2be7674da4a51d09c5542d6dd354e5d0ea70813c935a610a8e565b6040805194855291151560208501526001600160a01b03169290819081015b0390a2565b809192506103e857908591610743565b9050386106d7565b9150386106d0565b6103e88461057a87610632565b6103e86105ab6080870161063f565b6103e86105d560208701610632565b906108fa8235916107ef83610133565b6108356109056108ff6108e66108d0602089019761080c89610632565b6108c860408c0135916104d08d60608101359060a0810135610847610840608084019e8f61063f565b9360c0810190610652565b3691610aa0565b6020815191012092604051978896602088019a8b9365ffffffffffff9360e096929998979361010087019a7f7f96328b83274ebc7c1cf4f7a3abda602b51a78b7fa1d86a2ce353d75e587cac885260018060a01b0316602088015260018060a01b031660408701526060860152608085015260a08401521660c08201520152565b519020610cf0565b6108e061084060e08b018b610652565b90610d16565b506108f381979297610ad7565b1596610632565b610af7565b9161063f565b948461091f575b509365ffffffffffff4291161015929190565b61093a91945061092e90610632565b6001600160a01b031690565b6001600160a01b03831614923861090c565b67ffffffffffffffff811161062d57601f01601f191660200190565b8147106109cc576000918291829182916001600160a01b03165af13d156109c4573d906109948261094c565b916109a2604051938461060b565b82523d6000602084013e5b156109b55750565b80511561008d57805190602001fd5b6060906109ad565b504763cf47918160e01b60005260045260245260446000fd5b60018060a01b03169081600052600260205260406000208160005260205260ff60406000205416610a765761078f7f2af71f10069c28afc67c3752e87e0e4616a97948d33c8f404a856c0c334b3e0191836000526002602052610a66610a5982604060002090600052602052604060002090565b805460ff19166001179055565b6040519081529081906020820190565b9063cb85762760e01b60005260045260245260446000fd5b906060603f9101350411610a9e57565bfe5b929192610aac8261094c565b91610aba604051938461060b565b8294818452818301116100ec578281602093846000960137010152565b60041115610ae157565b634e487b7160e01b600052602160045260246000fd5b60006020916040518381019063572b6c0560e01b825230602482015260248152610b2260448261060b565b51915afa6000513d82610b41575b5081610b3a575090565b9050151590565b60201115915038610b30565b60ff8114610b5e5761063c90610d52565b5060405160008054908160011c9160018116908115610c2a575b602084108214610c165783855284929160208401918115610bfd5750600114610ba9575b5061063c9250038261060b565b600080805291507f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b848310610be6575061063c93500138610b9c565b805482840152859350602090920191600101610bd2565b60ff191682525061063c93151560051b01905038610b9c565b634e487b7160e01b83526022600452602483fd5b92607f1692610b78565b60ff8114610c455761063c90610d52565b506040516000600154908160011c9160018116908115610ce6575b602084108214610c165783855284929160208401918115610bfd5750600114610c90575061063c9250038261060b565b6001600090815291507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b848310610ccf575061063c93500138610b9c565b805482840152859350602090920191600101610cbb565b92607f1692610c60565b604290610cfb610d94565b906040519161190160f01b8352600283015260228201522090565b8151919060418303610d4757610d4092506020820151906060604084015193015160001a90610eb0565b9192909190565b505060009160029190565b60ff811690601f8211610d83576040805192610d6e828561060b565b6020808552840191601f190136833783525290565b632cd44ac360e21b60005260046000fd5b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480610e87575b15610def577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152610e8160c08261060b565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614610dc6565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411610f39579160209360809260ff60009560405194855216868401526040830152606082015282805260015afa15610f2d576000516001600160a01b03811615610f215790600090600090565b50600090600190600090565b6040513d6000823e3d90fd5b5050506000916003919056fea2646970667358221220cbcb295c80e1255aa32f60eb1b3601cf4c4170d4c040682dc064e0ded33227ac64736f6c634300081c0033","deployedBytecode":null,"immutableReferences":{}}
@@ -0,0 +1 @@
1
+ {"abi":[{"inputs":[{"internalType":"address","name":"contractAdmin_","type":"address"},{"internalType":"address","name":"walletsAdmin_","type":"address"},{"internalType":"address","name":"trustedForwarder_","type":"address"},{"internalType":"uint256","name":"amlKycValidityDuration_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"EasyAccessControl_AlreadyHasRole","type":"error"},{"inputs":[],"name":"EasyAccessControl_ArraysMustBeSameLength","type":"error"},{"inputs":[],"name":"EasyAccessControl_AtLeastOneContractAdminRequired","type":"error"},{"inputs":[],"name":"EasyAccessControl_CannotRevokeRole","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"EasyAccessControl_DoesNotHaveContractAdminRole","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"EasyAccessControl_DoesNotHaveWalletsAdminRole","type":"error"},{"inputs":[],"name":"EasyAccessControl_InvalidRole","type":"error"},{"inputs":[],"name":"EasyAccessControl_InvalidZeroAddress","type":"error"},{"inputs":[],"name":"IdentityRegistry_AlreadyHasSameAmlKycValidityDuration","type":"error"},{"inputs":[],"name":"IdentityRegistry_EmptyRegionsArray","type":"error"},{"inputs":[],"name":"IdentityRegistry_InvalidAmlKycValidityDuration","type":"error"},{"inputs":[],"name":"IdentityRegistry_InvalidRegion","type":"error"},{"inputs":[],"name":"IdentityRegistry_InvalidTrustedForwarder","type":"error"},{"inputs":[],"name":"IdentityRegistry_InvalidWalletsAdmin","type":"error"},{"inputs":[],"name":"IdentityRegistry_RegionsExceedsMaxCount","type":"error"},{"inputs":[],"name":"IdentityRegistry_TimestampInTheFuture","type":"error"},{"inputs":[],"name":"IdentityRegistry_WalletAlreadyHasNoAccreditation","type":"error"},{"inputs":[],"name":"IdentityRegistry_WalletAlreadyHasRegion","type":"error"},{"inputs":[],"name":"IdentityRegistry_WalletAlreadyHasSameAccreditationLevel","type":"error"},{"inputs":[],"name":"IdentityRegistry_WalletAlreadyHasSameAmlKycStatus","type":"error"},{"inputs":[],"name":"IdentityRegistry_WalletAlreadyHasSameRegions","type":"error"},{"inputs":[],"name":"IdentityRegistry_WalletDoesNotHaveRegion","type":"error"},{"inputs":[],"name":"IdentityRegistry_WalletHasNoIdentityToRemove","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"authority","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"newAccreditationLevel","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accreditationTimestamp","type":"uint256"}],"name":"AccreditationGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"authority","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"revokedAccreditationLevel","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accreditationTimestamp","type":"uint256"}],"name":"AccreditationRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"authority","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amlKycTimestamp","type":"uint256"}],"name":"AmlKycFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"authority","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amlKycTimestamp","type":"uint256"}],"name":"AmlKycPassed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"authority","type":"address"},{"indexed":false,"internalType":"uint256","name":"oldAmlKycValidityDuration","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newAmlKycValidityDuration","type":"uint256"}],"name":"AmlKycValidityDurationSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"authority","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"}],"name":"IdentityCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"authority","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"}],"name":"IdentityRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"authority","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"region","type":"uint256"}],"name":"RegionAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"authority","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"region","type":"uint256"}],"name":"RegionRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"authority","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"regions","type":"uint256[]"}],"name":"RegionsSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"grantor","type":"address"},{"indexed":true,"internalType":"address","name":"grantee","type":"address"},{"indexed":false,"internalType":"uint8","name":"role","type":"uint8"},{"indexed":true,"internalType":"bool","name":"status","type":"bool"}],"name":"RoleChange","type":"event"},{"inputs":[],"name":"CONTRACT_ADMIN_ROLE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INTERFACE_ID","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINT_ADMIN_ROLE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESERVE_ADMIN_ROLE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SOFT_BURN_ADMIN_ROLE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRANSFER_ADMIN_ROLE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WALLETS_ADMIN_ROLE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"accreditationType","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"region","type":"uint256"}],"name":"addRegion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"amlKycValidityDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint8[]","name":"roles_","type":"uint8[]"}],"name":"batchGrantRoles","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint8[]","name":"roles_","type":"uint8[]"}],"name":"batchRevokeRoles","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"components":[{"internalType":"uint256[]","name":"regions","type":"uint256[]"},{"internalType":"uint256","name":"accreditationType","type":"uint256"},{"internalType":"uint256","name":"lastAmlKycChangeTimestamp","type":"uint256"},{"internalType":"uint256","name":"lastAccreditationChangeTimestamp","type":"uint256"},{"internalType":"bool","name":"amlKycPassed","type":"bool"}],"internalType":"struct IIdentityRegistry.IdentityInfo","name":"info","type":"tuple"}],"name":"batchSetIdentity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractAdminCount","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"_accreditationType","type":"uint256"},{"internalType":"uint256","name":"accreditationTimestamp","type":"uint256"}],"name":"grantAccreditation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amlKycTimestamp","type":"uint256"}],"name":"grantAmlKyc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint8","name":"role","type":"uint8"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"region","type":"uint256"}],"name":"hasRegion","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint8","name":"role","type":"uint8"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"identity","outputs":[{"components":[{"internalType":"uint256[]","name":"regions","type":"uint256[]"},{"internalType":"uint256","name":"accreditationType","type":"uint256"},{"internalType":"uint256","name":"lastAmlKycChangeTimestamp","type":"uint256"},{"internalType":"uint256","name":"lastAccreditationChangeTimestamp","type":"uint256"},{"internalType":"bool","name":"amlKycPassed","type":"bool"}],"internalType":"struct IIdentityRegistry.IdentityInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"isAmlKycPassed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"regions","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"removeIdentity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"region","type":"uint256"}],"name":"removeRegion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"accreditationTimestamp","type":"uint256"}],"name":"revokeAccreditation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amlKycTimestamp","type":"uint256"}],"name":"revokeAmlKyc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint8","name":"role","type":"uint8"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"roles","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amlKycValidityDuration_","type":"uint256"}],"name":"setAmlKycValidityDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"components":[{"internalType":"uint256[]","name":"regions","type":"uint256[]"},{"internalType":"uint256","name":"accreditationType","type":"uint256"},{"internalType":"uint256","name":"lastAmlKycChangeTimestamp","type":"uint256"},{"internalType":"uint256","name":"lastAccreditationChangeTimestamp","type":"uint256"},{"internalType":"bool","name":"amlKycPassed","type":"bool"}],"internalType":"struct IIdentityRegistry.IdentityInfo","name":"info","type":"tuple"}],"name":"setIdentity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256[]","name":"newRegions","type":"uint256[]"}],"name":"setRegions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60c03461031c57600061231a3881900390601f8201601f191684016001600160401b0381118582101761030857918085926080946040528339810103126103055761004982610321565b9161005660208201610321565b606061006460408401610321565b920151936001600160a01b03169283156102f6575060009280845283602052600180604086205416146102e75780845283602052600160408520541615806102df575b6102a6575b808452602084905260408420805460ff19811660ff91909116176001908117909155906001600160a01b036100df610335565b166000805160206122fa8339815191526020604051858152a460808290526001600160a01b0316908115610297576001600160a01b03161561028857638df9be3160e01b60a0528082528160205260048060408420541614610279578082528160205260016040832054161580610272575b610239575b808252602082905260408220805460ff19811660ff919091161760041790556001906001600160a01b03610188610335565b166000805160206122fa833981519152602060405160048152a463bbf81e00821161022a57507fde3795c64f30dfff45460f405d8c2478ea26a2c986010352086d613d6dd02a8860406003548360035560018060a01b036101e7610335565b169382519182526020820152a2604051611f739081610387823960805181818161094901528181610b700152611e87015260a051818181610f11015261116b0152f35b632ef7f53b60e21b8152600490fd5b60015460ff811660ff811461025e5760ff19909116600191820160ff16179055610156565b634e487b7160e01b84526011600452602484fd5b5081610151565b63750f2ef960e01b8252600482fd5b630dd2785160e31b8252600482fd5b635b256d1160e01b8352600483fd5b60015460ff811660ff81146102cb5760ff19909116600191820160ff161790556100ac565b634e487b7160e01b86526011600452602486fd5b5060016100a7565b63750f2ef960e01b8452600484fd5b63122c6df560e11b8152600490fd5b80fd5b634e487b7160e01b84526041600452602484fd5b600080fd5b51906001600160a01b038216820361031c57565b6080516001600160a01b031633148061037b575b15610377576013193601368111610361573560601c90565b634e487b7160e01b600052601160045260246000fd5b3390565b50601436101561034956fe6080604052600436101561001257600080fd5b60003560e01c8062181381146111b957806301ffc9a7146111415780630312d1ba14611029578063077d3c0314610f4157806309b862b914610efb5780631da0331214610edf5780632a18f91f14610eb257806330f2e76c14610e6857806338cb57e814610e4c5780633b3f378014610ce85780633d74a49d14610ccc5780633e84023614610be357806340eb9f6c14610ba4578063572b6c0514610b5057806362f0deb814610b1357806368a37ae814610af757806370210246146109db5780637b00dbb7146109785780637da0a877146109335780637ea319b71461079b57806385a712af146107805780638e64eac51461075f5780638e7758851461071657806395a8c58d146106f357806399374642146106b65780639a5ea8011461061d5780639efbbf98146105d8578063aca31ef8146105ba578063bb394e6c14610575578063c1f2f1aa14610405578063c200305c14610369578063ca706c461461034d578063eb5f9c4c146102a45763f0eb5e541461019157600080fd5b3461029f57602036600319011261029f576101aa611410565b600060806040516101ba816113ba565b60608152826020820152826040820152826060820152015260018060a01b031660005260026020526040600020604051906101f4826113ba565b6101fd81611638565b82526001810154602083019081526002820154916040840192835260ff60046003830154926060870193845201541690608085019115158252604051936020855260c0850195519360a060208701528451809752602060e0870195016000975b80891061028757505085965051604086015251606085015251608084015251151560a08301520390f35b9095602080600192895181520197019801979061025d565b600080fd5b3461029f57602036600319011261029f576102bd611410565b60035460009190806103095750602091506001905b6001600160a01b0316600090815260028352604090206004015460ff169081610301575b506040519015158152f35b9050826102f6565b6001600160a01b0382168352600260208190526040842001549081019081106103395760209250421115906102d2565b634e487b7160e01b83526011600452602483fd5b3461029f57600036600319011261029f57602060405160108152f35b3461029f57602036600319011261029f5760043561038561173a565b6003548082146103f45763bbf81e0082116103e35760038290557fde3795c64f30dfff45460f405d8c2478ea26a2c986010352086d613d6dd02a88906040906001600160a01b036103d4611e84565b169382519182526020820152a2005b632ef7f53b60e21b60005260046000fd5b636915cd9d60e01b60005260046000fd5b3461029f57602036600319011261029f5761041e611410565b6104266116e1565b6001600160a01b03166000818152600260205260409081902090519061044b826113ba565b61045481611638565b9182815260018201549081602082015260028301549182604083015260ff600460038601549586606086015201541615916080831591015215938461056b575b5083610563575b508261055a575b5081610551575b5061054057806000526002602052604060002080546000825580610519575b506004816000600181940155826002820155826003820155015560018060a01b036104f1611e84565b167f59d6590e225b81befe259af056324092801080acbb7feab310eb34678871f327600080a3005b816000526020600020908101905b81811061053457506104c8565b60008155600101610527565b630ac478f560e21b60005260046000fd5b905015826104a9565b159150836104a2565b92508461049b565b5115935085610494565b3461029f57604036600319011261029f576105a2610591611410565b6105996116e1565b60243590611bea565b156105a957005b63bb726e9160e01b60005260046000fd5b3461029f57600036600319011261029f576020600354604051908152f35b3461029f57604036600319011261029f576106056105f4611410565b6105fc6116e1565b60243590611871565b1561060c57005b63a491e3c760e01b60005260046000fd5b3461029f57604036600319011261029f57610636611410565b602435906106426116e1565b60018060a01b031690816000526002602052610662816040600020611ddf565b156106a5577f060afe8139b4251fa46f07b16f229d4237d4c2c148d219df4ed62338238bc60b60206001600160a01b0361069a611e84565b1692604051908152a3005b631713fdd560e01b60005260046000fd5b3461029f57602036600319011261029f576001600160a01b036106d7611410565b166000526000602052602060ff60406000205416604051908152f35b3461029f57602061070c61070636611572565b9061169d565b6040519015158152f35b3461029f57606036600319011261029f57610747610732611410565b61073a6116e1565b6044359060243590611cb0565b1561074e57005b631e4c9a9f60e11b60005260046000fd5b3461029f57600036600319011261029f57602060ff60015416604051908152f35b3461029f57600036600319011261029f576020604051818152f35b3461029f576107a936611520565b90926107b361173a565b8183036109235760005b8381106107c657005b6107d96107d4828685611606565b611616565b906107ed6107e8828689611606565b61162a565b9160ff83169283158015610919575b610908576001600160a01b0382169182156108f757816108239161081e61173a565b61169d565b6108e65781600052600060205260016040600020541615806108da575b610899575b90600193849282600052600060205260ff60406000209181835416171660ff19825416179055600080516020611f1e8339815191526020848060a01b0361088a611e84565b1692604051908152a4016107bd565b906001549360ff85169260ff84146108c45760ff19909516600193840160ff16179092559092610845565b634e487b7160e01b600052601160045260246000fd5b50600181161515610840565b63750f2ef960e01b60005260046000fd5b63122c6df560e11b60005260046000fd5b63762160bf60e11b60005260046000fd5b50603f84116107fc565b627b626760e91b60005260046000fd5b3461029f57600036600319011261029f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461029f57604036600319011261029f57610991611410565b6024359067ffffffffffffffff821161029f576109b56109c3923690600401611426565b906109be6116e1565b611a52565b156109ca57005b636621e7ed60e01b60005260046000fd5b3461029f57604036600319011261029f576109f4611410565b60243590610a006116e1565b60018060a01b031690816000526002602052610a2881610a236040600020611638565b611da9565b610ae657816000526002602052600a6040600020541015610ad55781600052600260205260406000208054600160401b811015610abf57610a7381610a8c9360018694018155611685565b90919082549060031b91821b91600019901b1916179055565b7fecd48f64283876bda21405e8d6f5e417b8db7773eb78b73d6c95a0265c7bca6260206001600160a01b0361069a611e84565b634e487b7160e01b600052604160045260246000fd5b63195fe0bb60e11b60005260046000fd5b637ceb0c1f60e11b60005260046000fd5b3461029f57600036600319011261029f57602060405160088152f35b3461029f57602036600319011261029f576001600160a01b03610b34611410565b1660005260026020526020600160406000200154604051908152f35b3461029f57602036600319011261029f576020610b6b611410565b6040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169216919091148152f35b3461029f57604036600319011261029f576001600160a01b03610bc5611410565b166000526002602052602061070c602435610a236040600020611638565b3461029f57610bf136611572565b9060ff821680158015610cc2575b610908576001600160a01b0382169182156108f75783610c219161081e61173a565b6108e6578160005260006020526001604060002054161580610cb6575b610c90575b60019282600052600060205260ff60406000209181835416171660ff19825416179055600080516020611f1e8339815191526020848060a01b03610c85611e84565b1692604051908152a4005b6001549260ff84169360ff85146108c45760ff1916600194850160ff1617909355610c43565b50600183161515610c3e565b50603f8111610bff565b3461029f57600036600319011261029f57602060405160048152f35b3461029f57604036600319011261029f57610d01611410565b6024359067ffffffffffffffff821161029f57610d25610deb923690600401611483565b610d2d6116e1565b6001600160a01b03821660008181526002602052604090819020905190610d53826113ba565b610d5c81611638565b80835260018201549283602082015260028301549182604083015260ff600460038601549586606086015201541615916080831591015251159384610e43575b5083610e3b575b5082610e32575b5081610e29575b50610ded575b50610dc3815183611a52565b50610dda6080820151151560408301519084611943565b506060602082015191015191611cb0565b005b6001600160a01b03610dfd611e84565b167f45afe31e3a48a54e27da1d1f2ec6c6e272ce5838616e0d61071b223bceb5c690600080a383610db7565b90501585610db1565b15915086610daa565b925087610da3565b15935088610d9c565b3461029f57600036600319011261029f57602060405160028152f35b3461029f57602036600319011261029f576001600160a01b03610e89611410565b166000526002602052610eae610ea26040600020611638565b604051918291826115a2565b0390f35b3461029f57604036600319011261029f57610605610ece611410565b610ed66116e1565b60243590611796565b3461029f57600036600319011261029f57602060405160018152f35b3461029f57600036600319011261029f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160e01b0319168152602090f35b3461029f57610f4f36611572565b9060ff82168015801561101f575b610908576001600160a01b0382169182156108f75783610f7f9161081e61173a565b1561100e5760018316610fcd575b6000928284528360205260ff604085209181835416181660ff19825416179055600080516020611f1e833981519152602060018060a01b03610c85611e84565b6001549260ff84169360018514610ffd5784156108c45760ff191660001990940160ff1693909317600155610f8d565b635b1f8af160e11b60005260046000fd5b632478c9fd60e11b60005260046000fd5b50603f8111610f5d565b3461029f5761103736611520565b909261104161173a565b8183036109235760005b83811061105457005b6110626107d4828685611606565b906110716107e8828689611606565b9160ff83169283158015611137575b610908576001600160a01b0382169182156108f757816110a29161081e61173a565b1561100e5760018116611102575b906001936000928284528360205260ff604085209181835416181660ff19825416179055600080516020611f1e8339815191526020868060a01b036110f3611e84565b1692604051908152a40161104b565b906001549360ff85169260018414610ffd5783156108c45760ff1990951660001990930160ff169290921760015590926110b0565b50603f8411611080565b3461029f57602036600319011261029f5760043563ffffffff60e01b811680910361029f576020907f00000000000000000000000000000000000000000000000000000000000000006001600160e01b03191681149081156111a857506040519015158152f35b6301ffc9a760e01b149050826102f6565b3461029f57604036600319011261029f5760043567ffffffffffffffff811161029f573660238201121561029f5780600401356111f5816113f8565b9161120360405193846113d6565b8183526024602084019260051b8201019036821161029f57602401915b81831061139a578360243567ffffffffffffffff811161029f57611248903690600401611483565b906112516116e1565b60408201916080810190606081016020820160005b8551811015610deb576001906113366001600160a01b03611287838a6115dc565b51166112916116e1565b8060005260026020526040600020604051906112ac826113ba565b6112b581611638565b808352868201549283602082015260028301549182604083015260ff600460038601549586606086015201541615916080831591015251159384611391575b5083611389575b5082611380575b5081611377575b5061133d575b61131a875182611a52565b5061132b885115158b519083611943565b508451865191611cb0565b5001611266565b80848060a01b0361134c611e84565b167f45afe31e3a48a54e27da1d1f2ec6c6e272ce5838616e0d61071b223bceb5c690600080a361130f565b9050158b611309565b1591508c611302565b92508d6112fb565b1593508e6112f4565b82356001600160a01b038116810361029f57815260209283019201611220565b60a0810190811067ffffffffffffffff821117610abf57604052565b90601f8019910116810190811067ffffffffffffffff821117610abf57604052565b67ffffffffffffffff8111610abf5760051b60200190565b600435906001600160a01b038216820361029f57565b9080601f8301121561029f57813561143d816113f8565b9261144b60405194856113d6565b81845260208085019260051b82010192831161029f57602001905b8282106114735750505090565b8135815260209182019101611466565b919060a08382031261029f576040519061149c826113ba565b8193803567ffffffffffffffff811161029f576080926114bd918301611426565b8352602081013560208401526040810135604084015260608101356060840152013590811515820361029f5760800152565b9181601f8401121561029f5782359167ffffffffffffffff831161029f576020808501948460051b01011161029f57565b604060031982011261029f5760043567ffffffffffffffff811161029f578161154b916004016114ef565b929092916024359067ffffffffffffffff821161029f5761156e916004016114ef565b9091565b604090600319011261029f576004356001600160a01b038116810361029f579060243560ff8116810361029f5790565b602060408183019282815284518094520192019060005b8181106115c65750505090565b82518452602093840193909201916001016115b9565b80518210156115f05760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b91908110156115f05760051b0190565b356001600160a01b038116810361029f5790565b3560ff8116810361029f5790565b906040519182815491828252602082019060005260206000209260005b81811061166c57505061166a925003836113d6565b565b8454835260019485019487945060209093019201611655565b80548210156115f05760005260206000200190600090565b9060ff811691821580156116d7575b610908576001600160a01b03169081156108f75760ff91600052600060205260406000205416161490565b50603f83116116ac565b6116e9611e84565b6001600160a01b031680156108f7576000526000602052600480604060002054160361171157565b611719611e84565b6303b109ab60e01b60009081526001600160a01b0391909116600452602490fd5b611742611e84565b6001600160a01b031680156108f7576000526000602052600180604060002054160361176a57565b611772611e84565b60016212a1d960e01b031960009081526001600160a01b0391909116600452602490fd5b600091428111611862578061185c575042905b6001600160a01b03168083526002602052604083206004015490919060ff1615801590611843575b6117da57505090565b818352600260208181526040808620600401805460ff191690558486528282529094200181905590917f24eb2262aa5408d660566a8e867a5b8175fe9c9f30fc351108dbb9a1ef97fcaa906001600160a01b03611835611e84565b1692604051908152a3600190565b50818352600260205280600260408520015414156117d1565b906117a9565b63333aa88960e11b8352600483fd5b90428111611932578061192c575042905b6001600160a01b031660008181526002602052604090206004015490919060ff161515600114801590611911575b6118bb575050600090565b600082815260026020818152604090922060048101805460ff19166001179055018290557fe665d8e43d83c10743e100d8d50e9dc7b2b021c971a6a925a451804c37bf6032906001600160a01b03611835611e84565b508160005260026020528060026040600020015414156118b0565b90611882565b63333aa88960e11b60005260046000fd5b90914281116119325780611a4c575042905b6001600160a01b03166000818152600260205260409020600401549092908115159060ff1615158114801590611a31575b6119935750505050600090565b83600052600260205260046040600020019060ff80198354169116179055826000526002602052816002604060002001556000146119fe577fe665d8e43d83c10743e100d8d50e9dc7b2b021c971a6a925a451804c37bf603260206001600160a01b03611835611e84565b7f24eb2262aa5408d660566a8e867a5b8175fe9c9f30fc351108dbb9a1ef97fcaa60206001600160a01b03611835611e84565b50836000526002602052826002604060002001541415611986565b90611955565b91815115611bd957600a825111610ad5576000925b8251841015611ac457600184018085116108c4575b8351811015611ab957611a8f85856115dc565b51611a9a82866115dc565b5114611aa857600101611a7c565b63883eb7d160e01b60005260046000fd5b509260010192611a67565b90925060018060a01b031690816000526002602052611aef81611aea6040600020611638565b611edd565b15611afb575050600090565b816000526002602052604060002081519067ffffffffffffffff8211610abf57600160401b8211610abf578054828255808310611bb0575b506020830190600052602060002060005b838110611b9c57507fc186fc41bf08662e2c9edd4ec05766f81720da46dd2d71dc23ebd23b0a8f36fa9250611b9491506001600160a01b039050611b86611e84565b1692604051918291826115a2565b0390a3600190565b600190602084519401938184015501611b44565b8160005282602060002091820191015b818110611bcd5750611b33565b60008155600101611bc0565b63ac6ca07d60e01b60005260046000fd5b904281116119325780611caa575042905b6001600160a01b031660008181526002602052604090206001015490919015801590611c8f575b611c2d575050600090565b6000828152600260205260408082206001810180549390556003018390557f7a1c069a41076644476d2d858419a9373b6439affaf7be506f414a1440c29bcd916001600160a01b03611c7d611e84565b169382519182526020820152a3600190565b50816000526002602052806003604060002001541415611c22565b90611bfb565b90914281116119325780611da3575042905b6001600160a01b03166000818152600260205260409020600101549092908114801590611d88575b611cf657505050600090565b60008381526002602052604090206001810180549083905560039091018390559080611d5257507f7a1c069a41076644476d2d858419a9373b6439affaf7be506f414a1440c29bcd906040906001600160a01b03611c7d611e84565b7f5f186f7f6030f4be156f944b96d11b8e44b2a9b2bba0d5b156ad89d1dad3d5af91506040906001600160a01b03611c7d611e84565b50826000526002602052816003604060002001541415611cea565b90611cc2565b9060005b8251811015611dd75781611dc182856115dc565b5114611dcf57600101611dad565b505050600190565b505050600090565b60005b815480821015611e7b5783611df78385611685565b90549060031b1c14611e0c5750600101611de2565b91925060001982019182116108c457610a73611e2b611e399385611685565b90549060031b1c9184611685565b80548015611e65576000190190611e508282611685565b8154906000199060031b1b1916905555600190565b634e487b7160e01b600052603160045260246000fd5b50505050600090565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480611ed2575b15611ece5760131936013681116108c4573560601c90565b3390565b506014361015611eb6565b908151815103611f165760005b8251811015611dcf57611efd81846115dc565b51611f0882846115dc565b5103611dd757600101611eea565b505060009056fe7e9e87d17fbf2950f3379a6331b75b6e997a147bbd3eaedc68c30c62186c68cba2646970667358221220b0082d84ee89dfbff4cb808befc6e05f3052836db26f2eadd67f2776f6239a4064736f6c634300081c00337e9e87d17fbf2950f3379a6331b75b6e997a147bbd3eaedc68c30c62186c68cb","deployedBytecode":null,"immutableReferences":{}}