@superfluid-finance/ethereum-contracts 1.2.3-dev.f94fdbb.0 → 1.3.1-dev.b8455ea.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 (165) hide show
  1. package/build/contracts/AccessControl.json +3 -3
  2. package/build/contracts/AccessControlEnumerable.json +3 -3
  3. package/build/contracts/Address.json +5 -5
  4. package/build/contracts/AgreementBase.json +13 -13
  5. package/build/contracts/AgreementLibrary.json +7 -7
  6. package/build/contracts/BaseRelayRecipient.json +5 -5
  7. package/build/contracts/BatchLiquidator.json +179 -179
  8. package/build/contracts/BatchOperation.json +5 -5
  9. package/build/contracts/CFAv1Library.json +5 -5
  10. package/build/contracts/CallUtils.json +7 -7
  11. package/build/contracts/ClosingOnUpdateFlowTestApp.json +2107 -1917
  12. package/build/contracts/ConstantFlowAgreementV1.json +8 -8
  13. package/build/contracts/Context.json +3 -3
  14. package/build/contracts/ContextDefinitions.json +5 -5
  15. package/build/contracts/Create2.json +5 -5
  16. package/build/contracts/CustomSuperTokenBase.json +3 -3
  17. package/build/contracts/ERC165.json +3 -3
  18. package/build/contracts/ERC1820Implementer.json +5 -5
  19. package/build/contracts/ERC1820RegistryCompiled.json +7 -7
  20. package/build/contracts/ERC20.json +5 -5
  21. package/build/contracts/ERC20Burnable.json +3 -3
  22. package/build/contracts/ERC20Pausable.json +3 -3
  23. package/build/contracts/ERC20PresetMinterPauser.json +5 -5
  24. package/build/contracts/ERC20WithTokenInfo.json +3 -3
  25. package/build/contracts/ERC777Helper.json +7 -7
  26. package/build/contracts/ERC777RecipientDrainingGas.json +839 -839
  27. package/build/contracts/ERC777RecipientReverting.json +839 -839
  28. package/build/contracts/EnumerableSet.json +5 -5
  29. package/build/contracts/EventsEmitter.json +47 -47
  30. package/build/contracts/ExclusiveInflowTestApp.json +2107 -1917
  31. package/build/contracts/FixedSizeData.json +213 -213
  32. package/build/contracts/FlowExchangeTestApp.json +2107 -1917
  33. package/build/contracts/FlowOperatorDefinitions.json +5 -5
  34. package/build/contracts/FullUpgradableSuperTokenProxy.json +226 -312
  35. package/build/contracts/IAccessControl.json +3 -3
  36. package/build/contracts/IAccessControlEnumerable.json +3 -3
  37. package/build/contracts/IConstantFlowAgreementV1.json +451 -444
  38. package/build/contracts/IDAv1Library.json +5 -5
  39. package/build/contracts/IERC165.json +3 -3
  40. package/build/contracts/IERC1820Implementer.json +3 -3
  41. package/build/contracts/IERC1820Registry.json +3 -3
  42. package/build/contracts/IERC20.json +3 -3
  43. package/build/contracts/IERC20Metadata.json +3 -3
  44. package/build/contracts/IERC777.json +3 -3
  45. package/build/contracts/IERC777Recipient.json +3 -3
  46. package/build/contracts/IERC777Sender.json +3 -3
  47. package/build/contracts/IInstantDistributionAgreementV1.json +570 -559
  48. package/build/contracts/IMaticBridgedNativeSuperToken.json +71 -32
  49. package/build/contracts/IMaticBridgedNativeSuperTokenCustom.json +3 -3
  50. package/build/contracts/IMultiSigWallet.json +3 -3
  51. package/build/contracts/IPureSuperToken.json +71 -32
  52. package/build/contracts/IPureSuperTokenCustom.json +3 -3
  53. package/build/contracts/IRelayRecipient.json +3 -3
  54. package/build/contracts/IResolver.json +3 -3
  55. package/build/contracts/ISETH.json +71 -32
  56. package/build/contracts/ISETHCustom.json +3 -3
  57. package/build/contracts/ISuperAgreement.json +3 -3
  58. package/build/contracts/ISuperApp.json +179 -173
  59. package/build/contracts/ISuperToken.json +522 -483
  60. package/build/contracts/ISuperTokenFactory.json +3 -3
  61. package/build/contracts/ISuperfluid.json +633 -628
  62. package/build/contracts/ISuperfluidGovernance.json +134 -133
  63. package/build/contracts/ISuperfluidToken.json +403 -394
  64. package/build/contracts/ITOGAv1.json +1211 -1211
  65. package/build/contracts/ITOGAv2.json +1211 -1211
  66. package/build/contracts/Initializable.json +3 -3
  67. package/build/contracts/InstantDistributionAgreementV1.json +10 -10
  68. package/build/contracts/MaticBridgedNativeSuperTokenProxy.json +194 -194
  69. package/build/contracts/NonClosableOutflowTestApp.json +2107 -1917
  70. package/build/contracts/Ownable.json +3 -3
  71. package/build/contracts/Pausable.json +3 -3
  72. package/build/contracts/Proxy.json +3 -3
  73. package/build/contracts/PureSuperToken.json +91 -91
  74. package/build/contracts/Resolver.json +96 -96
  75. package/build/contracts/SETHProxy.json +199 -199
  76. package/build/contracts/SafeCast.json +5 -5
  77. package/build/contracts/SafeERC20.json +5 -5
  78. package/build/contracts/SafeMath.json +5 -5
  79. package/build/contracts/SelfDeletingFlowTestApp.json +2107 -1917
  80. package/build/contracts/SlotsBitmapLibrary.json +7 -7
  81. package/build/contracts/Strings.json +5 -5
  82. package/build/contracts/SuperAppBase.json +3 -3
  83. package/build/contracts/SuperAppDefinitions.json +5 -5
  84. package/build/contracts/SuperToken.json +2262 -2262
  85. package/build/contracts/SuperTokenFactory.json +582 -582
  86. package/build/contracts/SuperTokenFactoryBase.json +576 -576
  87. package/build/contracts/SuperTokenFactoryHelper.json +578 -578
  88. package/build/contracts/SuperUpgrader.json +687 -687
  89. package/build/contracts/Superfluid.json +6648 -6678
  90. package/build/contracts/SuperfluidFrameworkDeployer.json +526 -526
  91. package/build/contracts/SuperfluidGovernanceBase.json +13 -13
  92. package/build/contracts/SuperfluidGovernanceConfigs.json +5 -5
  93. package/build/contracts/SuperfluidGovernanceII.json +21 -21
  94. package/build/contracts/SuperfluidGovernanceIIProxy.json +20 -20
  95. package/build/contracts/SuperfluidLoader.json +147 -147
  96. package/build/contracts/SuperfluidToken.json +1269 -1269
  97. package/build/contracts/TOGA.json +1221 -1221
  98. package/build/contracts/TestGovernance.json +315 -315
  99. package/build/contracts/TestToken.json +475 -561
  100. package/build/contracts/TokenCustodian.json +220 -220
  101. package/build/contracts/TokenInfo.json +3 -3
  102. package/build/contracts/UUPSProxiable.json +136 -136
  103. package/build/contracts/UUPSProxy.json +87 -87
  104. package/build/contracts/UUPSUtils.json +43 -43
  105. package/build/contracts-sizes.txt +3 -3
  106. package/contracts/agreements/AgreementBase.sol +1 -1
  107. package/contracts/agreements/AgreementLibrary.sol +1 -1
  108. package/contracts/agreements/ConstantFlowAgreementV1.sol +1 -1
  109. package/contracts/agreements/InstantDistributionAgreementV1.sol +1 -1
  110. package/contracts/gov/SuperfluidGovernanceBase.sol +1 -1
  111. package/contracts/gov/SuperfluidGovernanceII.sol +1 -1
  112. package/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol +7 -10
  113. package/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol +11 -18
  114. package/contracts/interfaces/superfluid/ISuperApp.sol +7 -9
  115. package/contracts/interfaces/superfluid/ISuperToken.sol +36 -44
  116. package/contracts/interfaces/superfluid/ISuperfluid.sol +17 -21
  117. package/contracts/interfaces/superfluid/ISuperfluidGovernance.sol +1 -1
  118. package/contracts/interfaces/superfluid/ISuperfluidToken.sol +13 -14
  119. package/contracts/libs/BaseRelayRecipient.sol +1 -1
  120. package/contracts/libs/CallUtils.sol +1 -1
  121. package/contracts/libs/ERC1820RegistryCompiled.sol +1 -1
  122. package/contracts/libs/ERC777Helper.sol +1 -1
  123. package/contracts/libs/EventsEmitter.sol +2 -2
  124. package/contracts/libs/FixedSizeData.sol +2 -2
  125. package/contracts/libs/SlotsBitmapLibrary.sol +1 -1
  126. package/contracts/mocks/AgreementMock.sol +1 -1
  127. package/contracts/mocks/CFAAppMocks.sol +6 -6
  128. package/contracts/mocks/CFALibraryMock.sol +2 -2
  129. package/contracts/mocks/CallUtilsMock.sol +1 -1
  130. package/contracts/mocks/CallUtilsTester.sol +1 -1
  131. package/contracts/mocks/CustomSuperTokenMock.sol +1 -1
  132. package/contracts/mocks/ERC777SenderRecipientMock.sol +1 -1
  133. package/contracts/mocks/FakeSuperfluidMock.sol +1 -1
  134. package/contracts/mocks/ForwarderMock.sol +1 -1
  135. package/contracts/mocks/IDASuperAppTester.sol +2 -2
  136. package/contracts/mocks/IDAv1LibraryMock.sol +3 -3
  137. package/contracts/mocks/MockSmartWallet.sol +1 -1
  138. package/contracts/mocks/MultiFlowTesterApp.sol +2 -2
  139. package/contracts/mocks/SuperAppMocks.sol +15 -12
  140. package/contracts/mocks/SuperTokenFactoryMock.sol +1 -1
  141. package/contracts/mocks/SuperTokenMock.sol +1 -1
  142. package/contracts/mocks/SuperfluidDestructorMock.sol +1 -1
  143. package/contracts/mocks/SuperfluidGovernanceIIMock.sol +1 -1
  144. package/contracts/mocks/SuperfluidMock.sol +2 -2
  145. package/contracts/mocks/UUPSProxiableMock.sol +1 -1
  146. package/contracts/superfluid/FullUpgradableSuperTokenProxy.sol +2 -2
  147. package/contracts/superfluid/SuperToken.sol +1 -1
  148. package/contracts/superfluid/SuperTokenFactory.sol +1 -1
  149. package/contracts/superfluid/Superfluid.sol +4 -4
  150. package/contracts/superfluid/SuperfluidToken.sol +1 -1
  151. package/contracts/tokens/MaticBridgedNativeSuperToken.sol +1 -1
  152. package/contracts/tokens/PureSuperToken.sol +1 -1
  153. package/contracts/tokens/SETH.sol +1 -1
  154. package/contracts/upgradability/UUPSProxiable.sol +1 -1
  155. package/contracts/upgradability/UUPSProxy.sol +1 -1
  156. package/contracts/upgradability/UUPSUtils.sol +1 -1
  157. package/contracts/utils/BatchLiquidator.sol +1 -1
  158. package/contracts/utils/Resolver.sol +1 -1
  159. package/contracts/utils/SuperUpgrader.sol +6 -6
  160. package/contracts/utils/SuperfluidLoader.sol +1 -1
  161. package/contracts/utils/TOGA.sol +1 -1
  162. package/contracts/utils/TestGovernance.sol +2 -2
  163. package/contracts/utils/TestToken.sol +2 -2
  164. package/contracts/utils/TokenCustodian.sol +1 -1
  165. package/package.json +5 -3
@@ -399,9 +399,9 @@
399
399
  "type": "function"
400
400
  }
401
401
  ],
402
- "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"adminRole\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"backendAddr\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OptinAutoUpgrade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OptoutAutoUpgrade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BACKEND_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBackendAgents\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantBackendAgent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isBackendAgent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"yes\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"optinAutoUpgrades\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"optoutAutoUpgrades\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeBackendAgent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"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\":[{\"internalType\":\"address\",\"name\":\"superTokenAddr\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"upgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid NOTE: - User would need to first SuperToken.approve the `SuperUpgrader` for the job. - Using access control to allow multiple backend agent to upgrade tokens for the users - Risk taken by the user is that the underlying tokens are converted to the Super Tokens by the upgrader agents.\",\"kind\":\"dev\",\"methods\":{\"getBackendAgents()\":{\"details\":\"Get list of all members of BACKEND_ROLE\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantBackendAgent(address)\":{\"details\":\"Add account to BACKEND_ROLE \"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isBackendAgent(address)\":{\"details\":\"Test if account is member BACKEND_ROLE \"},\"optinAutoUpgrades()\":{\"details\":\"User signal that revoke opt-out from backend upgrades\"},\"optoutAutoUpgrades()\":{\"details\":\"User signal that opt-out from backend upgrades\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeBackendAgent(address)\":{\"details\":\"Remove account to BACKEND_ROLE \"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"upgrade(address,address,uint256)\":{\"details\":\"Execute upgrade function in the name of the user\",\"params\":{\"account\":\"User address that previous approved this contract.\",\"amount\":\"Amount value to be upgraded.\",\"superTokenAddr\":\"Super Token Address to upgrade \"}}},\"title\":\"Super upgrader contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"upgrade(address,address,uint256)\":{\"notice\":\"The user should ERC20.approve this contract.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/utils/SuperUpgrader.sol\":\"SuperUpgrader\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4a1a0ba12bf1a33f10d9fe226278cf59675c0b929d29e4da99658a079b27fb84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bda1319db846d6d6f92d8a57a9bdee8bde1dc39aa7546165791692c24dd6f30a\",\"dweb:/ipfs/Qma5oZ7DmbdAjd8mpiW7mx896PDtwsQtCQ2hj9Upf7b7JK\"]},\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\":{\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ee05f28f549a5d6515e152580716b87636ed4bfab9812499a6e3803df88288b\",\"dweb:/ipfs/QmeEnhdwY1t5Y3YU5a4ffzgXuToydH2PNdNxV9W7dEPRQJ\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dcc7b09bfa6e18aab262ca372f4a9b1fc82e294b430706a4e1378cf58e6a276\",\"dweb:/ipfs/QmT8oSAcesdctR15HMLhr2a1HRpXymxdjTfdtfTYJcj2N2\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbbc8ac883ac3c0078ce5ad3e288fbb3ffcc8a30c3a98c0fda0114d64fc44fca2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87a7a5d2f6f63f84598af02b8c50ca2df2631cb8ba2453e8d95fcb17e4be9824\",\"dweb:/ipfs/QmR76hqtAcRqoFj33tmNjcWTLrgNsAaakYwnKZ8zoJtKei\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xc3d946432c0ddbb1f846a0d3985be71299df331b91d06732152117f62f0be2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4632c341a06ba5c079b51ca5a915efab4e6ab57735b37839b3e8365ff806a43e\",\"dweb:/ipfs/QmTHT3xHYed2wajEoA5qu7ii2BxLpPhQZHwAhtLK5Z7ANK\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0xe4e0b7e3f0265ffaa565d26acd2d45f2633f19127ed625e5a05a9f201a87a667\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1762b5bc15a009b5f092ccf547b81e0827c8705884f18e0623e497658514a7ed\",\"dweb:/ipfs/QmTtmVQYuynan3j2uVjdjjRJS1mr7LPRgxSZNnfqC7oxkz\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a57d0854b2fdce6ebff933a48dca2445643d1eccfc27f00292e937f26c6a58\",\"dweb:/ipfs/QmW45rZooS9TqR4YXUbjRbtf2Bpb5ouSarBvfW1LdGprvV\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8179c356adb19e70d6b31a1eedc8c5c7f0c00e669e2540f4099e3844c6074d30\",\"dweb:/ipfs/QmWFbivarEobbqhS1go64ootVuHfVohBseerYy9FTEd1W2\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9772845c886f87a3aab315f8d6b68aa599027c20f441b131cd4afaf65b588900\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad2f29a9c17a4f746416c9e254e17671f43c409dbfa6e4d7d76c3e4a83212d31\",\"dweb:/ipfs/QmTqU65L6iu6yqmXKzcNLPioR8etzKPWycpDJCm17ifVdS\"]},\"project:/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x199095781e4221b6015d859558da09977f79199f38d342ab4899c2cecdf8cec1\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9fd3a5a8b16d8517e2af10e20390a9af5adbfa4e783e3a7dd89eb4588db98385\",\"dweb:/ipfs/QmPDtGR43DeMMVsHjUh7FYzMGsFKPpGriRkaahFpN5T5d3\"]},\"project:/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0xc3a6a907245116bcecc70fe4b207454012e8ce4fa190228fb8bbe39e0b1bc5cf\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://83c116bdae48685d20e5a27c942111e685ec1ef6334e7ff6f6d9af66edbd8025\",\"dweb:/ipfs/QmTnVuNTaRFiDmkAmDk7NFYdfQTW1kqgBZiY2exC6k8jDx\"]},\"project:/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x57f4203168992c940eb6b8c7cc75f854cb36a1f9323b3f39ddc5e4fbe819c043\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://888941dfa3e5004f678f215b98a85d1bf54e412317928a78e0a1cff090773d4c\",\"dweb:/ipfs/QmVe838upcAyqpy1d3oQNHJrbRyWCKHL51zWrMKruvLxFG\"]},\"project:/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x3cb0b7216007b942f7611d7b3d983c0df9408fdd4fd6b799c33fc9033e0abf8b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://17901a1fd3635f441671e14ece8ecc6806af20c5eb80cca3b7c6e53a51fef7b6\",\"dweb:/ipfs/QmUXXMfU6nmsyEnufyGEwyZ5M7pzpXNTr6vw32e3JjjoZp\"]},\"project:/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0x68a466c978557e47bd7385b1d7d78f1c8fb07462a870efc5a791008e33a4f535\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://d109879bdb7f022560a792af2ff481df729bf1b4b8e1831b8022f4d12892d41d\",\"dweb:/ipfs/QmRSWqHq8CP5XWgyV4mJpPxMg33s312s2K5ndHRHVqqZ8n\"]},\"project:/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0x2d9b845469a35b66f1166406149ac85e933dbe9156f57e4a4078948e6a6e71a4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://48e5cb11d4b90e42af521e23b33d57e12187c989d8d56be332b1649308168d45\",\"dweb:/ipfs/QmdaTW4HfpFfHjkHiJ3CmZUmCfLJyFCPTnCygwhiNhx3Tu\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x2166f766b7f61f9bb1376b0948efa0d0c0046b93dc301e51ce495203b145189b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://929630e6a15f523b142b2897783b2f7a54532ac5ae578bd17a0b7f25a6ca2bd8\",\"dweb:/ipfs/QmTu9ffH9qbQncJGEc24bmnoCGjifQ7BG47AYR8AzMLfXR\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x518b869178aafffde40c654a1e24b3b1a2b5e42e5e8f17562556f404db8b9434\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://458ce84666b418fa3a7569c0e109db4d920fb6d1cb67ebc4c497c9c71107d93b\",\"dweb:/ipfs/QmV9nqhRF7MDGkV6UW3WWcqeXov2vmqHuRcvbqaaV8yP6u\"]},\"project:/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x66708dae3fcd06e6fc0a46f2959fc2d1e6b9361f28598337339d26af8eb8c0f9\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://77b80718cec21b81ef190c19fb9fbe73913a95c71f7e6715f671bbe8a224dafc\",\"dweb:/ipfs/QmUdsc6DF2Bgih5VZm7sfaECjhGmwE7tAx8pMkzGQgVKQw\"]},\"project:/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x70e573644a0ff271c0ccef526809e9d9ab4950ec58755ca84e833cde3b8f3df0\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://aea3709687cc37ba625f4cc882fbdb149a7bf5be5afe2b030203c8719641a77b\",\"dweb:/ipfs/QmVpvfR6ZheE5wNUK9CobaVBgVvEnEPkvjWF9cfwyZr7eQ\"]},\"project:/contracts/utils/SuperUpgrader.sol\":{\"keccak256\":\"0x59d07db3a6a72fbd7ea2cd599f5f14b5692a4e1fbafbd1be8aa018d9f94ea159\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://4286bcd8f6d063a2f3e1a36e0cf3f320722255dd58d7b870ab7693d441c89a01\",\"dweb:/ipfs/QmWxdTspM5ARfz7CQ2AXrNgk6NScu7ePD4sF3u7WDFUc33\"]}},\"version\":1}",
403
- "bytecode": "0x60806040523480156200001157600080fd5b50604051620019a0380380620019a0833981016040819052620000349162000321565b6001600160a01b038216620000855760405162461bcd60e51b815260206004820152601260248201527161646d696e526f6c6520697320656d70747960701b60448201526064015b60405180910390fd5b6200009260008362000189565b60005b8151811015620001805760006001600160a01b0316828281518110620000bf57620000bf6200040a565b60200260200101516001600160a01b0316036200011f5760405162461bcd60e51b815260206004820152601560248201527f6261636b656e642063616e2774206265207a65726f000000000000000000000060448201526064016200007c565b6200016d7f25cf2b509f2a7f322675b2a5322b182f44ad2c03ac941a0af17c9b178f5d5d5f8383815181106200015957620001596200040a565b60200260200101516200018960201b60201c565b620001788162000420565b905062000095565b50505062000448565b62000195828262000199565b5050565b620001b08282620001dc60201b6200085c1760201c565b6000828152600160209081526040909120620001d7918390620008e06200027c821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000195576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620002383390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600062000293836001600160a01b0384166200029c565b90505b92915050565b6000818152600183016020526040812054620002e55750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000296565b50600062000296565b80516001600160a01b03811681146200030657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156200033557600080fd5b6200034083620002ee565b602084810151919350906001600160401b03808211156200036057600080fd5b818601915086601f8301126200037557600080fd5b8151818111156200038a576200038a6200030b565b8060051b604051601f19603f83011681018181108582111715620003b257620003b26200030b565b604052918252848201925083810185019189831115620003d157600080fd5b938501935b82851015620003fa57620003ea85620002ee565b84529385019392850192620003d6565b8096505050505050509250929050565b634e487b7160e01b600052603260045260246000fd5b6000600182016200044157634e487b7160e01b600052601160045260246000fd5b5060010190565b61154880620004586000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806361985da7116100a2578063a217fddf11610071578063a217fddf1461023a578063abcac5eb14610242578063ca15c87314610255578063d547741f14610268578063ec3282531461027b57600080fd5b806361985da7146101d45780639010d07c146101e757806391d148541461021257806392c2becc1461022557600080fd5b80632f2ff15d116100de5780632f2ff15d1461019357806336568abe146101a657806344e9d2fb146101b95780635d730c58146101cc57600080fd5b806301ffc9a7146101105780630f01a4a214610138578063248a9ca31461014d5780632a1972981461017e575b600080fd5b61012361011e366004611143565b610283565b60405190151581526020015b60405180910390f35b6101406102ae565b60405161012f919061116d565b61017061015b3660046111ba565b60009081526020819052604090206001015490565b60405190815260200161012f565b61019161018c3660046111e8565b610378565b005b6101916101a1366004611229565b610612565b6101916101b4366004611229565b61063d565b6101236101c7366004611259565b6106bb565b6101916106d5565b6101916101e2366004611259565b610714565b6101fa6101f5366004611276565b61077d565b6040516001600160a01b03909116815260200161012f565b610123610220366004611229565b61079c565b6101706000805160206114f383398151915281565b610170600081565b610191610250366004611259565b6107c5565b6101706102633660046111ba565b6107dd565b610191610276366004611229565b6107f4565b61019161081a565b60006001600160e01b03198216635a05180f60e01b14806102a857506102a8826108f5565b92915050565b606060006102c96000805160206114f38339815191526107dd565b905060008167ffffffffffffffff8111156102e6576102e6611298565b60405190808252806020026020018201604052801561030f578160200160208202803683370190505b50905060005b82811015610371576103356000805160206114f38339815191528261077d565b828281518110610347576103476112ae565b6001600160a01b039092166020928302919091019091015280610369816112da565b915050610315565b5092915050565b336001600160a01b03831614806103c757506103a26000805160206114f38339815191523361079c565b80156103c757506001600160a01b03821660009081526002602052604090205460ff16155b6104105760405162461bcd60e51b81526020600482015260156024820152741bdc195c985d1a5bdb881b9bdd08185b1b1bddd959605a1b60448201526064015b60405180910390fd5b60008390506000816001600160a01b031663ee719bc86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610455573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047991906112f3565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156104c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e79190611310565b90506104fe6001600160a01b03831686308761092a565b6105136001600160a01b03831684600061099b565b6105276001600160a01b038316848661099b565b6040516370a0823160e01b81523060048201526001600160a01b0380851691635b9d09cc91889185918716906370a0823190602401602060405180830381865afa158015610579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059d9190611310565b6105a79190611329565b604080516000815260208101918290526001600160e01b031960e086901b169091526105d892919060248101611398565b600060405180830381600087803b1580156105f257600080fd5b505af1158015610606573d6000803e3d6000fd5b50505050505050505050565b60008281526020819052604090206001015461062e8133610ab0565b6106388383610b14565b505050565b6001600160a01b03811633146106ad5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610407565b6106b78282610b36565b5050565b60006102a86000805160206114f38339815191528361079c565b33600081815260026020526040808220805460ff19169055517fde802370a7a9557e8d50bffe30a1bbd3d327beb1964088485a5465325bc5fb7a9190a2565b6001600160a01b0381166107625760405162461bcd60e51b81526020600482015260156024820152741bdc195c985d1a5bdb881b9bdd08185b1b1bddd959605a1b6044820152606401610407565b61077a6000805160206114f383398151915282610612565b50565b60008281526001602052604081206107959083610b58565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61077a6000805160206114f3833981519152826107f4565b60008181526001602052604081206102a890610b64565b6000828152602081905260409020600101546108108133610ab0565b6106388383610b36565b33600081815260026020526040808220805460ff19166001179055517fd07f586f18c37aa8ec13ebc5523e50304e2aa7711505bfa7242fcb7152eaee259190a2565b610866828261079c565b6106b7576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561089c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610795836001600160a01b038416610b6e565b60006001600160e01b03198216637965db0b60e01b14806102a857506301ffc9a760e01b6001600160e01b03198316146102a8565b6040516001600160a01b03808516602483015283166044820152606481018290526109959085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610bbd565b50505050565b801580610a155750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156109ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a139190611310565b155b610a805760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610407565b6040516001600160a01b03831660248201526044810182905261063890849063095ea7b360e01b9060640161095e565b610aba828261079c565b6106b757610ad2816001600160a01b03166014610c8f565b610add836020610c8f565b604051602001610aee9291906113c8565b60408051601f198184030181529082905262461bcd60e51b82526104079160040161143d565b610b1e828261085c565b600082815260016020526040902061063890826108e0565b610b408282610e2b565b60008281526001602052604090206106389082610e90565b60006107958383610ea5565b60006102a8825490565b6000818152600183016020526040812054610bb5575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556102a8565b5060006102a8565b6000610c12826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610ecf9092919063ffffffff16565b8051909150156106385780806020019051810190610c309190611450565b6106385760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610407565b60606000610c9e836002611472565b610ca9906002611491565b67ffffffffffffffff811115610cc157610cc1611298565b6040519080825280601f01601f191660200182016040528015610ceb576020820181803683370190505b509050600360fc1b81600081518110610d0657610d066112ae565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610d3557610d356112ae565b60200101906001600160f81b031916908160001a9053506000610d59846002611472565b610d64906001611491565b90505b6001811115610ddc576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110610d9857610d986112ae565b1a60f81b828281518110610dae57610dae6112ae565b60200101906001600160f81b031916908160001a90535060049490941c93610dd5816114a9565b9050610d67565b5083156107955760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610407565b610e35828261079c565b156106b7576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610795836001600160a01b038416610ee6565b6000826000018281548110610ebc57610ebc6112ae565b9060005260206000200154905092915050565b6060610ede8484600085610fd9565b949350505050565b60008181526001830160205260408120548015610fcf576000610f0a600183611329565b8554909150600090610f1e90600190611329565b9050818114610f83576000866000018281548110610f3e57610f3e6112ae565b9060005260206000200154905080876000018481548110610f6157610f616112ae565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080610f9457610f946114c0565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506102a8565b60009150506102a8565b60608247101561103a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610407565b6001600160a01b0385163b6110915760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610407565b600080866001600160a01b031685876040516110ad91906114d6565b60006040518083038185875af1925050503d80600081146110ea576040519150601f19603f3d011682016040523d82523d6000602084013e6110ef565b606091505b50915091506110ff82828661110a565b979650505050505050565b60608315611119575081610795565b8251156111295782518084602001fd5b8160405162461bcd60e51b8152600401610407919061143d565b60006020828403121561115557600080fd5b81356001600160e01b03198116811461079557600080fd5b6020808252825182820181905260009190848201906040850190845b818110156111ae5783516001600160a01b031683529284019291840191600101611189565b50909695505050505050565b6000602082840312156111cc57600080fd5b5035919050565b6001600160a01b038116811461077a57600080fd5b6000806000606084860312156111fd57600080fd5b8335611208816111d3565b92506020840135611218816111d3565b929592945050506040919091013590565b6000806040838503121561123c57600080fd5b82359150602083013561124e816111d3565b809150509250929050565b60006020828403121561126b57600080fd5b8135610795816111d3565b6000806040838503121561128957600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016112ec576112ec6112c4565b5060010190565b60006020828403121561130557600080fd5b8151610795816111d3565b60006020828403121561132257600080fd5b5051919050565b60008282101561133b5761133b6112c4565b500390565b60005b8381101561135b578181015183820152602001611343565b838111156109955750506000910152565b60008151808452611384816020860160208601611340565b601f01601f19169290920160200192915050565b60018060a01b03841681528260208201526060604082015260006113bf606083018461136c565b95945050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611400816017850160208801611340565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611431816028840160208801611340565b01602801949350505050565b602081526000610795602083018461136c565b60006020828403121561146257600080fd5b8151801515811461079557600080fd5b600081600019048311821515161561148c5761148c6112c4565b500290565b600082198211156114a4576114a46112c4565b500190565b6000816114b8576114b86112c4565b506000190190565b634e487b7160e01b600052603160045260246000fd5b600082516114e8818460208701611340565b919091019291505056fe25cf2b509f2a7f322675b2a5322b182f44ad2c03ac941a0af17c9b178f5d5d5fa26469706673582212201bb3411bbcb083342ff454e2b557cbd47905edc48df69589fad0a467c735dd4e64736f6c634300080d0033",
404
- "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806361985da7116100a2578063a217fddf11610071578063a217fddf1461023a578063abcac5eb14610242578063ca15c87314610255578063d547741f14610268578063ec3282531461027b57600080fd5b806361985da7146101d45780639010d07c146101e757806391d148541461021257806392c2becc1461022557600080fd5b80632f2ff15d116100de5780632f2ff15d1461019357806336568abe146101a657806344e9d2fb146101b95780635d730c58146101cc57600080fd5b806301ffc9a7146101105780630f01a4a214610138578063248a9ca31461014d5780632a1972981461017e575b600080fd5b61012361011e366004611143565b610283565b60405190151581526020015b60405180910390f35b6101406102ae565b60405161012f919061116d565b61017061015b3660046111ba565b60009081526020819052604090206001015490565b60405190815260200161012f565b61019161018c3660046111e8565b610378565b005b6101916101a1366004611229565b610612565b6101916101b4366004611229565b61063d565b6101236101c7366004611259565b6106bb565b6101916106d5565b6101916101e2366004611259565b610714565b6101fa6101f5366004611276565b61077d565b6040516001600160a01b03909116815260200161012f565b610123610220366004611229565b61079c565b6101706000805160206114f383398151915281565b610170600081565b610191610250366004611259565b6107c5565b6101706102633660046111ba565b6107dd565b610191610276366004611229565b6107f4565b61019161081a565b60006001600160e01b03198216635a05180f60e01b14806102a857506102a8826108f5565b92915050565b606060006102c96000805160206114f38339815191526107dd565b905060008167ffffffffffffffff8111156102e6576102e6611298565b60405190808252806020026020018201604052801561030f578160200160208202803683370190505b50905060005b82811015610371576103356000805160206114f38339815191528261077d565b828281518110610347576103476112ae565b6001600160a01b039092166020928302919091019091015280610369816112da565b915050610315565b5092915050565b336001600160a01b03831614806103c757506103a26000805160206114f38339815191523361079c565b80156103c757506001600160a01b03821660009081526002602052604090205460ff16155b6104105760405162461bcd60e51b81526020600482015260156024820152741bdc195c985d1a5bdb881b9bdd08185b1b1bddd959605a1b60448201526064015b60405180910390fd5b60008390506000816001600160a01b031663ee719bc86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610455573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047991906112f3565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156104c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e79190611310565b90506104fe6001600160a01b03831686308761092a565b6105136001600160a01b03831684600061099b565b6105276001600160a01b038316848661099b565b6040516370a0823160e01b81523060048201526001600160a01b0380851691635b9d09cc91889185918716906370a0823190602401602060405180830381865afa158015610579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059d9190611310565b6105a79190611329565b604080516000815260208101918290526001600160e01b031960e086901b169091526105d892919060248101611398565b600060405180830381600087803b1580156105f257600080fd5b505af1158015610606573d6000803e3d6000fd5b50505050505050505050565b60008281526020819052604090206001015461062e8133610ab0565b6106388383610b14565b505050565b6001600160a01b03811633146106ad5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610407565b6106b78282610b36565b5050565b60006102a86000805160206114f38339815191528361079c565b33600081815260026020526040808220805460ff19169055517fde802370a7a9557e8d50bffe30a1bbd3d327beb1964088485a5465325bc5fb7a9190a2565b6001600160a01b0381166107625760405162461bcd60e51b81526020600482015260156024820152741bdc195c985d1a5bdb881b9bdd08185b1b1bddd959605a1b6044820152606401610407565b61077a6000805160206114f383398151915282610612565b50565b60008281526001602052604081206107959083610b58565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61077a6000805160206114f3833981519152826107f4565b60008181526001602052604081206102a890610b64565b6000828152602081905260409020600101546108108133610ab0565b6106388383610b36565b33600081815260026020526040808220805460ff19166001179055517fd07f586f18c37aa8ec13ebc5523e50304e2aa7711505bfa7242fcb7152eaee259190a2565b610866828261079c565b6106b7576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561089c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610795836001600160a01b038416610b6e565b60006001600160e01b03198216637965db0b60e01b14806102a857506301ffc9a760e01b6001600160e01b03198316146102a8565b6040516001600160a01b03808516602483015283166044820152606481018290526109959085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610bbd565b50505050565b801580610a155750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156109ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a139190611310565b155b610a805760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610407565b6040516001600160a01b03831660248201526044810182905261063890849063095ea7b360e01b9060640161095e565b610aba828261079c565b6106b757610ad2816001600160a01b03166014610c8f565b610add836020610c8f565b604051602001610aee9291906113c8565b60408051601f198184030181529082905262461bcd60e51b82526104079160040161143d565b610b1e828261085c565b600082815260016020526040902061063890826108e0565b610b408282610e2b565b60008281526001602052604090206106389082610e90565b60006107958383610ea5565b60006102a8825490565b6000818152600183016020526040812054610bb5575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556102a8565b5060006102a8565b6000610c12826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610ecf9092919063ffffffff16565b8051909150156106385780806020019051810190610c309190611450565b6106385760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610407565b60606000610c9e836002611472565b610ca9906002611491565b67ffffffffffffffff811115610cc157610cc1611298565b6040519080825280601f01601f191660200182016040528015610ceb576020820181803683370190505b509050600360fc1b81600081518110610d0657610d066112ae565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610d3557610d356112ae565b60200101906001600160f81b031916908160001a9053506000610d59846002611472565b610d64906001611491565b90505b6001811115610ddc576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110610d9857610d986112ae565b1a60f81b828281518110610dae57610dae6112ae565b60200101906001600160f81b031916908160001a90535060049490941c93610dd5816114a9565b9050610d67565b5083156107955760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610407565b610e35828261079c565b156106b7576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610795836001600160a01b038416610ee6565b6000826000018281548110610ebc57610ebc6112ae565b9060005260206000200154905092915050565b6060610ede8484600085610fd9565b949350505050565b60008181526001830160205260408120548015610fcf576000610f0a600183611329565b8554909150600090610f1e90600190611329565b9050818114610f83576000866000018281548110610f3e57610f3e6112ae565b9060005260206000200154905080876000018481548110610f6157610f616112ae565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080610f9457610f946114c0565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506102a8565b60009150506102a8565b60608247101561103a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610407565b6001600160a01b0385163b6110915760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610407565b600080866001600160a01b031685876040516110ad91906114d6565b60006040518083038185875af1925050503d80600081146110ea576040519150601f19603f3d011682016040523d82523d6000602084013e6110ef565b606091505b50915091506110ff82828661110a565b979650505050505050565b60608315611119575081610795565b8251156111295782518084602001fd5b8160405162461bcd60e51b8152600401610407919061143d565b60006020828403121561115557600080fd5b81356001600160e01b03198116811461079557600080fd5b6020808252825182820181905260009190848201906040850190845b818110156111ae5783516001600160a01b031683529284019291840191600101611189565b50909695505050505050565b6000602082840312156111cc57600080fd5b5035919050565b6001600160a01b038116811461077a57600080fd5b6000806000606084860312156111fd57600080fd5b8335611208816111d3565b92506020840135611218816111d3565b929592945050506040919091013590565b6000806040838503121561123c57600080fd5b82359150602083013561124e816111d3565b809150509250929050565b60006020828403121561126b57600080fd5b8135610795816111d3565b6000806040838503121561128957600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016112ec576112ec6112c4565b5060010190565b60006020828403121561130557600080fd5b8151610795816111d3565b60006020828403121561132257600080fd5b5051919050565b60008282101561133b5761133b6112c4565b500390565b60005b8381101561135b578181015183820152602001611343565b838111156109955750506000910152565b60008151808452611384816020860160208601611340565b601f01601f19169290920160200192915050565b60018060a01b03841681528260208201526060604082015260006113bf606083018461136c565b95945050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611400816017850160208801611340565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611431816028840160208801611340565b01602801949350505050565b602081526000610795602083018461136c565b60006020828403121561146257600080fd5b8151801515811461079557600080fd5b600081600019048311821515161561148c5761148c6112c4565b500290565b600082198211156114a4576114a46112c4565b500190565b6000816114b8576114b86112c4565b506000190190565b634e487b7160e01b600052603160045260246000fd5b600082516114e8818460208701611340565b919091019291505056fe25cf2b509f2a7f322675b2a5322b182f44ad2c03ac941a0af17c9b178f5d5d5fa26469706673582212201bb3411bbcb083342ff454e2b557cbd47905edc48df69589fad0a467c735dd4e64736f6c634300080d0033",
402
+ "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"adminRole\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"backendAddr\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OptinAutoUpgrade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OptoutAutoUpgrade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BACKEND_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBackendAgents\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantBackendAgent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isBackendAgent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"yes\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"optinAutoUpgrades\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"optoutAutoUpgrades\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeBackendAgent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"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\":[{\"internalType\":\"address\",\"name\":\"superTokenAddr\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"upgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid NOTE: - User would need to first SuperToken.approve the `SuperUpgrader` for the job. - Using access control to allow multiple backend agent to upgrade tokens for the users - Risk taken by the user is that the underlying tokens are converted to the Super Tokens by the upgrader agents.\",\"kind\":\"dev\",\"methods\":{\"getBackendAgents()\":{\"details\":\"Get list of all members of BACKEND_ROLE\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantBackendAgent(address)\":{\"details\":\"Add account to BACKEND_ROLE\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isBackendAgent(address)\":{\"details\":\"Test if account is member BACKEND_ROLE\"},\"optinAutoUpgrades()\":{\"details\":\"User signal that revoke opt-out from backend upgrades\"},\"optoutAutoUpgrades()\":{\"details\":\"User signal that opt-out from backend upgrades\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeBackendAgent(address)\":{\"details\":\"Remove account to BACKEND_ROLE\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"upgrade(address,address,uint256)\":{\"details\":\"Execute upgrade function in the name of the user\",\"params\":{\"account\":\"User address that previous approved this contract.\",\"amount\":\"Amount value to be upgraded.\",\"superTokenAddr\":\"Super Token Address to upgrade\"}}},\"title\":\"Super upgrader contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"upgrade(address,address,uint256)\":{\"notice\":\"The user should ERC20.approve this contract.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/utils/SuperUpgrader.sol\":\"SuperUpgrader\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4a1a0ba12bf1a33f10d9fe226278cf59675c0b929d29e4da99658a079b27fb84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bda1319db846d6d6f92d8a57a9bdee8bde1dc39aa7546165791692c24dd6f30a\",\"dweb:/ipfs/Qma5oZ7DmbdAjd8mpiW7mx896PDtwsQtCQ2hj9Upf7b7JK\"]},\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\":{\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ee05f28f549a5d6515e152580716b87636ed4bfab9812499a6e3803df88288b\",\"dweb:/ipfs/QmeEnhdwY1t5Y3YU5a4ffzgXuToydH2PNdNxV9W7dEPRQJ\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dcc7b09bfa6e18aab262ca372f4a9b1fc82e294b430706a4e1378cf58e6a276\",\"dweb:/ipfs/QmT8oSAcesdctR15HMLhr2a1HRpXymxdjTfdtfTYJcj2N2\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbbc8ac883ac3c0078ce5ad3e288fbb3ffcc8a30c3a98c0fda0114d64fc44fca2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87a7a5d2f6f63f84598af02b8c50ca2df2631cb8ba2453e8d95fcb17e4be9824\",\"dweb:/ipfs/QmR76hqtAcRqoFj33tmNjcWTLrgNsAaakYwnKZ8zoJtKei\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xc3d946432c0ddbb1f846a0d3985be71299df331b91d06732152117f62f0be2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4632c341a06ba5c079b51ca5a915efab4e6ab57735b37839b3e8365ff806a43e\",\"dweb:/ipfs/QmTHT3xHYed2wajEoA5qu7ii2BxLpPhQZHwAhtLK5Z7ANK\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0xe4e0b7e3f0265ffaa565d26acd2d45f2633f19127ed625e5a05a9f201a87a667\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1762b5bc15a009b5f092ccf547b81e0827c8705884f18e0623e497658514a7ed\",\"dweb:/ipfs/QmTtmVQYuynan3j2uVjdjjRJS1mr7LPRgxSZNnfqC7oxkz\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a57d0854b2fdce6ebff933a48dca2445643d1eccfc27f00292e937f26c6a58\",\"dweb:/ipfs/QmW45rZooS9TqR4YXUbjRbtf2Bpb5ouSarBvfW1LdGprvV\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8179c356adb19e70d6b31a1eedc8c5c7f0c00e669e2540f4099e3844c6074d30\",\"dweb:/ipfs/QmWFbivarEobbqhS1go64ootVuHfVohBseerYy9FTEd1W2\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9772845c886f87a3aab315f8d6b68aa599027c20f441b131cd4afaf65b588900\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad2f29a9c17a4f746416c9e254e17671f43c409dbfa6e4d7d76c3e4a83212d31\",\"dweb:/ipfs/QmTqU65L6iu6yqmXKzcNLPioR8etzKPWycpDJCm17ifVdS\"]},\"project:/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x199095781e4221b6015d859558da09977f79199f38d342ab4899c2cecdf8cec1\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9fd3a5a8b16d8517e2af10e20390a9af5adbfa4e783e3a7dd89eb4588db98385\",\"dweb:/ipfs/QmPDtGR43DeMMVsHjUh7FYzMGsFKPpGriRkaahFpN5T5d3\"]},\"project:/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0xc3a6a907245116bcecc70fe4b207454012e8ce4fa190228fb8bbe39e0b1bc5cf\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://83c116bdae48685d20e5a27c942111e685ec1ef6334e7ff6f6d9af66edbd8025\",\"dweb:/ipfs/QmTnVuNTaRFiDmkAmDk7NFYdfQTW1kqgBZiY2exC6k8jDx\"]},\"project:/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x42b604992cf67321cc12e8bed16543df0db4eaf125b8c1c82c330ebbeb20c014\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7c18b00caf7b8be7e11f75284fb96263ce48a3984d56f2a91ec44cae4413d2fc\",\"dweb:/ipfs/QmWVzdW9KnkwAVe9g5zRuMoqCf7N89AoBfzzRr8puw5d8a\"]},\"project:/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0xcff22ed43df0f34a645e6cbe0d7c5fd08f204d769e9095bc59d7c2fe6d11b7d6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://944b8c5a37839b40ec8ee1ccfecbaf007808a61ea16c7b1351a7184606772032\",\"dweb:/ipfs/QmbUKZqZtVfqZMKYnQUygE4svatKuN9kT2ibrnxMuWXR7n\"]},\"project:/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0x68a466c978557e47bd7385b1d7d78f1c8fb07462a870efc5a791008e33a4f535\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://d109879bdb7f022560a792af2ff481df729bf1b4b8e1831b8022f4d12892d41d\",\"dweb:/ipfs/QmRSWqHq8CP5XWgyV4mJpPxMg33s312s2K5ndHRHVqqZ8n\"]},\"project:/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xf16efd1ba72322e77e0d936b723c0e71eb14c23e11cf69efae8c7caa407012cf\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://ff4bb321b72dc3332984346e5b66ad131c6132101658fe6707d7a9d043f981ab\",\"dweb:/ipfs/QmXmVD2mZ3LRb7wQZ2VcrpYhtjm21zUe5hPDDDJA1WXbFz\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0xea33d20751ffea4f4446bc04f6c10194fb4da0803a988586d41d49cf4859731c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7716b1f5eec0a7ac8780d82de4f0274ecd7059be4eec46c82b0b7adce110f10b\",\"dweb:/ipfs/QmWRQafvdCBsyfDYnevXSav1AAz8uZRRBwh2be5Z3vSfVN\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x3eec5a3bf337cd319c1918fd1b16f350cf5f6850ac71f6859066fbf86e734ff4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cda19a2f5ca18e79c1e2300c8efac84c718df76c4fb313f59f84264a4c6b398a\",\"dweb:/ipfs/QmfQiwgDH5Q64w5ufBnDzVaeWv6WCZ6fLTrYu1FSYfBGhq\"]},\"project:/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x66708dae3fcd06e6fc0a46f2959fc2d1e6b9361f28598337339d26af8eb8c0f9\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://77b80718cec21b81ef190c19fb9fbe73913a95c71f7e6715f671bbe8a224dafc\",\"dweb:/ipfs/QmUdsc6DF2Bgih5VZm7sfaECjhGmwE7tAx8pMkzGQgVKQw\"]},\"project:/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x70e573644a0ff271c0ccef526809e9d9ab4950ec58755ca84e833cde3b8f3df0\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://aea3709687cc37ba625f4cc882fbdb149a7bf5be5afe2b030203c8719641a77b\",\"dweb:/ipfs/QmVpvfR6ZheE5wNUK9CobaVBgVvEnEPkvjWF9cfwyZr7eQ\"]},\"project:/contracts/utils/SuperUpgrader.sol\":{\"keccak256\":\"0xe0b11180fac43c46f078644650795d8f7d95ce48e9793084471f36ce433b7c8e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://1c404c8a77bdd242573bbdfe75e9438e732053ec3d2bd3bdad0a47a793677030\",\"dweb:/ipfs/QmXRxU3qBZbUm1rdUAUtgcVFi7iJj9eZ7hijxfNGuu4uU1\"]}},\"version\":1}",
403
+ "bytecode": "0x60806040523480156200001157600080fd5b50604051620019a0380380620019a0833981016040819052620000349162000321565b6001600160a01b038216620000855760405162461bcd60e51b815260206004820152601260248201527161646d696e526f6c6520697320656d70747960701b60448201526064015b60405180910390fd5b6200009260008362000189565b60005b8151811015620001805760006001600160a01b0316828281518110620000bf57620000bf6200040a565b60200260200101516001600160a01b0316036200011f5760405162461bcd60e51b815260206004820152601560248201527f6261636b656e642063616e2774206265207a65726f000000000000000000000060448201526064016200007c565b6200016d7f25cf2b509f2a7f322675b2a5322b182f44ad2c03ac941a0af17c9b178f5d5d5f8383815181106200015957620001596200040a565b60200260200101516200018960201b60201c565b620001788162000420565b905062000095565b50505062000448565b62000195828262000199565b5050565b620001b08282620001dc60201b6200085c1760201c565b6000828152600160209081526040909120620001d7918390620008e06200027c821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000195576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620002383390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600062000293836001600160a01b0384166200029c565b90505b92915050565b6000818152600183016020526040812054620002e55750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000296565b50600062000296565b80516001600160a01b03811681146200030657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156200033557600080fd5b6200034083620002ee565b602084810151919350906001600160401b03808211156200036057600080fd5b818601915086601f8301126200037557600080fd5b8151818111156200038a576200038a6200030b565b8060051b604051601f19603f83011681018181108582111715620003b257620003b26200030b565b604052918252848201925083810185019189831115620003d157600080fd5b938501935b82851015620003fa57620003ea85620002ee565b84529385019392850192620003d6565b8096505050505050509250929050565b634e487b7160e01b600052603260045260246000fd5b6000600182016200044157634e487b7160e01b600052601160045260246000fd5b5060010190565b61154880620004586000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806361985da7116100a2578063a217fddf11610071578063a217fddf1461023a578063abcac5eb14610242578063ca15c87314610255578063d547741f14610268578063ec3282531461027b57600080fd5b806361985da7146101d45780639010d07c146101e757806391d148541461021257806392c2becc1461022557600080fd5b80632f2ff15d116100de5780632f2ff15d1461019357806336568abe146101a657806344e9d2fb146101b95780635d730c58146101cc57600080fd5b806301ffc9a7146101105780630f01a4a214610138578063248a9ca31461014d5780632a1972981461017e575b600080fd5b61012361011e366004611143565b610283565b60405190151581526020015b60405180910390f35b6101406102ae565b60405161012f919061116d565b61017061015b3660046111ba565b60009081526020819052604090206001015490565b60405190815260200161012f565b61019161018c3660046111e8565b610378565b005b6101916101a1366004611229565b610612565b6101916101b4366004611229565b61063d565b6101236101c7366004611259565b6106bb565b6101916106d5565b6101916101e2366004611259565b610714565b6101fa6101f5366004611276565b61077d565b6040516001600160a01b03909116815260200161012f565b610123610220366004611229565b61079c565b6101706000805160206114f383398151915281565b610170600081565b610191610250366004611259565b6107c5565b6101706102633660046111ba565b6107dd565b610191610276366004611229565b6107f4565b61019161081a565b60006001600160e01b03198216635a05180f60e01b14806102a857506102a8826108f5565b92915050565b606060006102c96000805160206114f38339815191526107dd565b905060008167ffffffffffffffff8111156102e6576102e6611298565b60405190808252806020026020018201604052801561030f578160200160208202803683370190505b50905060005b82811015610371576103356000805160206114f38339815191528261077d565b828281518110610347576103476112ae565b6001600160a01b039092166020928302919091019091015280610369816112da565b915050610315565b5092915050565b336001600160a01b03831614806103c757506103a26000805160206114f38339815191523361079c565b80156103c757506001600160a01b03821660009081526002602052604090205460ff16155b6104105760405162461bcd60e51b81526020600482015260156024820152741bdc195c985d1a5bdb881b9bdd08185b1b1bddd959605a1b60448201526064015b60405180910390fd5b60008390506000816001600160a01b031663ee719bc86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610455573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047991906112f3565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156104c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e79190611310565b90506104fe6001600160a01b03831686308761092a565b6105136001600160a01b03831684600061099b565b6105276001600160a01b038316848661099b565b6040516370a0823160e01b81523060048201526001600160a01b0380851691635b9d09cc91889185918716906370a0823190602401602060405180830381865afa158015610579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059d9190611310565b6105a79190611329565b604080516000815260208101918290526001600160e01b031960e086901b169091526105d892919060248101611398565b600060405180830381600087803b1580156105f257600080fd5b505af1158015610606573d6000803e3d6000fd5b50505050505050505050565b60008281526020819052604090206001015461062e8133610ab0565b6106388383610b14565b505050565b6001600160a01b03811633146106ad5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610407565b6106b78282610b36565b5050565b60006102a86000805160206114f38339815191528361079c565b33600081815260026020526040808220805460ff19169055517fde802370a7a9557e8d50bffe30a1bbd3d327beb1964088485a5465325bc5fb7a9190a2565b6001600160a01b0381166107625760405162461bcd60e51b81526020600482015260156024820152741bdc195c985d1a5bdb881b9bdd08185b1b1bddd959605a1b6044820152606401610407565b61077a6000805160206114f383398151915282610612565b50565b60008281526001602052604081206107959083610b58565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61077a6000805160206114f3833981519152826107f4565b60008181526001602052604081206102a890610b64565b6000828152602081905260409020600101546108108133610ab0565b6106388383610b36565b33600081815260026020526040808220805460ff19166001179055517fd07f586f18c37aa8ec13ebc5523e50304e2aa7711505bfa7242fcb7152eaee259190a2565b610866828261079c565b6106b7576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561089c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610795836001600160a01b038416610b6e565b60006001600160e01b03198216637965db0b60e01b14806102a857506301ffc9a760e01b6001600160e01b03198316146102a8565b6040516001600160a01b03808516602483015283166044820152606481018290526109959085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610bbd565b50505050565b801580610a155750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156109ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a139190611310565b155b610a805760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610407565b6040516001600160a01b03831660248201526044810182905261063890849063095ea7b360e01b9060640161095e565b610aba828261079c565b6106b757610ad2816001600160a01b03166014610c8f565b610add836020610c8f565b604051602001610aee9291906113c8565b60408051601f198184030181529082905262461bcd60e51b82526104079160040161143d565b610b1e828261085c565b600082815260016020526040902061063890826108e0565b610b408282610e2b565b60008281526001602052604090206106389082610e90565b60006107958383610ea5565b60006102a8825490565b6000818152600183016020526040812054610bb5575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556102a8565b5060006102a8565b6000610c12826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610ecf9092919063ffffffff16565b8051909150156106385780806020019051810190610c309190611450565b6106385760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610407565b60606000610c9e836002611472565b610ca9906002611491565b67ffffffffffffffff811115610cc157610cc1611298565b6040519080825280601f01601f191660200182016040528015610ceb576020820181803683370190505b509050600360fc1b81600081518110610d0657610d066112ae565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610d3557610d356112ae565b60200101906001600160f81b031916908160001a9053506000610d59846002611472565b610d64906001611491565b90505b6001811115610ddc576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110610d9857610d986112ae565b1a60f81b828281518110610dae57610dae6112ae565b60200101906001600160f81b031916908160001a90535060049490941c93610dd5816114a9565b9050610d67565b5083156107955760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610407565b610e35828261079c565b156106b7576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610795836001600160a01b038416610ee6565b6000826000018281548110610ebc57610ebc6112ae565b9060005260206000200154905092915050565b6060610ede8484600085610fd9565b949350505050565b60008181526001830160205260408120548015610fcf576000610f0a600183611329565b8554909150600090610f1e90600190611329565b9050818114610f83576000866000018281548110610f3e57610f3e6112ae565b9060005260206000200154905080876000018481548110610f6157610f616112ae565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080610f9457610f946114c0565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506102a8565b60009150506102a8565b60608247101561103a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610407565b6001600160a01b0385163b6110915760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610407565b600080866001600160a01b031685876040516110ad91906114d6565b60006040518083038185875af1925050503d80600081146110ea576040519150601f19603f3d011682016040523d82523d6000602084013e6110ef565b606091505b50915091506110ff82828661110a565b979650505050505050565b60608315611119575081610795565b8251156111295782518084602001fd5b8160405162461bcd60e51b8152600401610407919061143d565b60006020828403121561115557600080fd5b81356001600160e01b03198116811461079557600080fd5b6020808252825182820181905260009190848201906040850190845b818110156111ae5783516001600160a01b031683529284019291840191600101611189565b50909695505050505050565b6000602082840312156111cc57600080fd5b5035919050565b6001600160a01b038116811461077a57600080fd5b6000806000606084860312156111fd57600080fd5b8335611208816111d3565b92506020840135611218816111d3565b929592945050506040919091013590565b6000806040838503121561123c57600080fd5b82359150602083013561124e816111d3565b809150509250929050565b60006020828403121561126b57600080fd5b8135610795816111d3565b6000806040838503121561128957600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016112ec576112ec6112c4565b5060010190565b60006020828403121561130557600080fd5b8151610795816111d3565b60006020828403121561132257600080fd5b5051919050565b60008282101561133b5761133b6112c4565b500390565b60005b8381101561135b578181015183820152602001611343565b838111156109955750506000910152565b60008151808452611384816020860160208601611340565b601f01601f19169290920160200192915050565b60018060a01b03841681528260208201526060604082015260006113bf606083018461136c565b95945050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611400816017850160208801611340565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611431816028840160208801611340565b01602801949350505050565b602081526000610795602083018461136c565b60006020828403121561146257600080fd5b8151801515811461079557600080fd5b600081600019048311821515161561148c5761148c6112c4565b500290565b600082198211156114a4576114a46112c4565b500190565b6000816114b8576114b86112c4565b506000190190565b634e487b7160e01b600052603160045260246000fd5b600082516114e8818460208701611340565b919091019291505056fe25cf2b509f2a7f322675b2a5322b182f44ad2c03ac941a0af17c9b178f5d5d5fa2646970667358221220a17927c1664b06d304dfff632ddb4ad439fb330a658ceacf03711f176ebedc1864736f6c634300080e0033",
404
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806361985da7116100a2578063a217fddf11610071578063a217fddf1461023a578063abcac5eb14610242578063ca15c87314610255578063d547741f14610268578063ec3282531461027b57600080fd5b806361985da7146101d45780639010d07c146101e757806391d148541461021257806392c2becc1461022557600080fd5b80632f2ff15d116100de5780632f2ff15d1461019357806336568abe146101a657806344e9d2fb146101b95780635d730c58146101cc57600080fd5b806301ffc9a7146101105780630f01a4a214610138578063248a9ca31461014d5780632a1972981461017e575b600080fd5b61012361011e366004611143565b610283565b60405190151581526020015b60405180910390f35b6101406102ae565b60405161012f919061116d565b61017061015b3660046111ba565b60009081526020819052604090206001015490565b60405190815260200161012f565b61019161018c3660046111e8565b610378565b005b6101916101a1366004611229565b610612565b6101916101b4366004611229565b61063d565b6101236101c7366004611259565b6106bb565b6101916106d5565b6101916101e2366004611259565b610714565b6101fa6101f5366004611276565b61077d565b6040516001600160a01b03909116815260200161012f565b610123610220366004611229565b61079c565b6101706000805160206114f383398151915281565b610170600081565b610191610250366004611259565b6107c5565b6101706102633660046111ba565b6107dd565b610191610276366004611229565b6107f4565b61019161081a565b60006001600160e01b03198216635a05180f60e01b14806102a857506102a8826108f5565b92915050565b606060006102c96000805160206114f38339815191526107dd565b905060008167ffffffffffffffff8111156102e6576102e6611298565b60405190808252806020026020018201604052801561030f578160200160208202803683370190505b50905060005b82811015610371576103356000805160206114f38339815191528261077d565b828281518110610347576103476112ae565b6001600160a01b039092166020928302919091019091015280610369816112da565b915050610315565b5092915050565b336001600160a01b03831614806103c757506103a26000805160206114f38339815191523361079c565b80156103c757506001600160a01b03821660009081526002602052604090205460ff16155b6104105760405162461bcd60e51b81526020600482015260156024820152741bdc195c985d1a5bdb881b9bdd08185b1b1bddd959605a1b60448201526064015b60405180910390fd5b60008390506000816001600160a01b031663ee719bc86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610455573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047991906112f3565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156104c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e79190611310565b90506104fe6001600160a01b03831686308761092a565b6105136001600160a01b03831684600061099b565b6105276001600160a01b038316848661099b565b6040516370a0823160e01b81523060048201526001600160a01b0380851691635b9d09cc91889185918716906370a0823190602401602060405180830381865afa158015610579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059d9190611310565b6105a79190611329565b604080516000815260208101918290526001600160e01b031960e086901b169091526105d892919060248101611398565b600060405180830381600087803b1580156105f257600080fd5b505af1158015610606573d6000803e3d6000fd5b50505050505050505050565b60008281526020819052604090206001015461062e8133610ab0565b6106388383610b14565b505050565b6001600160a01b03811633146106ad5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610407565b6106b78282610b36565b5050565b60006102a86000805160206114f38339815191528361079c565b33600081815260026020526040808220805460ff19169055517fde802370a7a9557e8d50bffe30a1bbd3d327beb1964088485a5465325bc5fb7a9190a2565b6001600160a01b0381166107625760405162461bcd60e51b81526020600482015260156024820152741bdc195c985d1a5bdb881b9bdd08185b1b1bddd959605a1b6044820152606401610407565b61077a6000805160206114f383398151915282610612565b50565b60008281526001602052604081206107959083610b58565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61077a6000805160206114f3833981519152826107f4565b60008181526001602052604081206102a890610b64565b6000828152602081905260409020600101546108108133610ab0565b6106388383610b36565b33600081815260026020526040808220805460ff19166001179055517fd07f586f18c37aa8ec13ebc5523e50304e2aa7711505bfa7242fcb7152eaee259190a2565b610866828261079c565b6106b7576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561089c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610795836001600160a01b038416610b6e565b60006001600160e01b03198216637965db0b60e01b14806102a857506301ffc9a760e01b6001600160e01b03198316146102a8565b6040516001600160a01b03808516602483015283166044820152606481018290526109959085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610bbd565b50505050565b801580610a155750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156109ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a139190611310565b155b610a805760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610407565b6040516001600160a01b03831660248201526044810182905261063890849063095ea7b360e01b9060640161095e565b610aba828261079c565b6106b757610ad2816001600160a01b03166014610c8f565b610add836020610c8f565b604051602001610aee9291906113c8565b60408051601f198184030181529082905262461bcd60e51b82526104079160040161143d565b610b1e828261085c565b600082815260016020526040902061063890826108e0565b610b408282610e2b565b60008281526001602052604090206106389082610e90565b60006107958383610ea5565b60006102a8825490565b6000818152600183016020526040812054610bb5575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556102a8565b5060006102a8565b6000610c12826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610ecf9092919063ffffffff16565b8051909150156106385780806020019051810190610c309190611450565b6106385760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610407565b60606000610c9e836002611472565b610ca9906002611491565b67ffffffffffffffff811115610cc157610cc1611298565b6040519080825280601f01601f191660200182016040528015610ceb576020820181803683370190505b509050600360fc1b81600081518110610d0657610d066112ae565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610d3557610d356112ae565b60200101906001600160f81b031916908160001a9053506000610d59846002611472565b610d64906001611491565b90505b6001811115610ddc576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110610d9857610d986112ae565b1a60f81b828281518110610dae57610dae6112ae565b60200101906001600160f81b031916908160001a90535060049490941c93610dd5816114a9565b9050610d67565b5083156107955760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610407565b610e35828261079c565b156106b7576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610795836001600160a01b038416610ee6565b6000826000018281548110610ebc57610ebc6112ae565b9060005260206000200154905092915050565b6060610ede8484600085610fd9565b949350505050565b60008181526001830160205260408120548015610fcf576000610f0a600183611329565b8554909150600090610f1e90600190611329565b9050818114610f83576000866000018281548110610f3e57610f3e6112ae565b9060005260206000200154905080876000018481548110610f6157610f616112ae565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080610f9457610f946114c0565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506102a8565b60009150506102a8565b60608247101561103a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610407565b6001600160a01b0385163b6110915760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610407565b600080866001600160a01b031685876040516110ad91906114d6565b60006040518083038185875af1925050503d80600081146110ea576040519150601f19603f3d011682016040523d82523d6000602084013e6110ef565b606091505b50915091506110ff82828661110a565b979650505050505050565b60608315611119575081610795565b8251156111295782518084602001fd5b8160405162461bcd60e51b8152600401610407919061143d565b60006020828403121561115557600080fd5b81356001600160e01b03198116811461079557600080fd5b6020808252825182820181905260009190848201906040850190845b818110156111ae5783516001600160a01b031683529284019291840191600101611189565b50909695505050505050565b6000602082840312156111cc57600080fd5b5035919050565b6001600160a01b038116811461077a57600080fd5b6000806000606084860312156111fd57600080fd5b8335611208816111d3565b92506020840135611218816111d3565b929592945050506040919091013590565b6000806040838503121561123c57600080fd5b82359150602083013561124e816111d3565b809150509250929050565b60006020828403121561126b57600080fd5b8135610795816111d3565b6000806040838503121561128957600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016112ec576112ec6112c4565b5060010190565b60006020828403121561130557600080fd5b8151610795816111d3565b60006020828403121561132257600080fd5b5051919050565b60008282101561133b5761133b6112c4565b500390565b60005b8381101561135b578181015183820152602001611343565b838111156109955750506000910152565b60008151808452611384816020860160208601611340565b601f01601f19169290920160200192915050565b60018060a01b03841681528260208201526060604082015260006113bf606083018461136c565b95945050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611400816017850160208801611340565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611431816028840160208801611340565b01602801949350505050565b602081526000610795602083018461136c565b60006020828403121561146257600080fd5b8151801515811461079557600080fd5b600081600019048311821515161561148c5761148c6112c4565b500290565b600082198211156114a4576114a46112c4565b500190565b6000816114b8576114b86112c4565b506000190190565b634e487b7160e01b600052603160045260246000fd5b600082516114e8818460208701611340565b919091019291505056fe25cf2b509f2a7f322675b2a5322b182f44ad2c03ac941a0af17c9b178f5d5d5fa2646970667358221220a17927c1664b06d304dfff632ddb4ad439fb330a658ceacf03711f176ebedc1864736f6c634300080e0033",
405
405
  "immutableReferences": {},
406
406
  "generatedSources": [
407
407
  {
@@ -10179,9 +10179,9 @@
10179
10179
  "name": "#utility.yul"
10180
10180
  }
10181
10181
  ],
10182
- "sourceMap": "645:3544:98:-:0;;;1018:382;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1097:23:98;;1089:54;;;;-1:-1:-1;;;1089:54:98;;1749:2:105;1089:54:98;;;1731:21:105;1788:2;1768:18;;;1761:30;-1:-1:-1;;;1807:18:105;;;1800:48;1865:18;;1089:54:98;;;;;;;;;1153:41;2072:4:0;1184:9:98;1153:10;:41::i;:::-;1209:9;1204:190;1228:11;:18;1224:1;:22;1204:190;;;1301:1;-1:-1:-1;;;;;1275:28:98;:11;1287:1;1275:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1275:28:98;;1267:62;;;;-1:-1:-1;;;1267:62:98;;2228:2:105;1267:62:98;;;2210:21:105;2267:2;2247:18;;;2240:30;2306:23;2286:18;;;2279:51;2347:18;;1267:62:98;2026:345:105;1267:62:98;1343:40;830:25;1368:11;1380:1;1368:14;;;;;;;;:::i;:::-;;;;;;;1343:10;;;:40;;:::i;:::-;1248:3;;;:::i;:::-;;;1204:190;;;;1018:382;;645:3544;;6257:110:0;6335:25;6346:4;6352:7;6335:10;:25::i;:::-;6257:110;;:::o;1978:166:1:-;2065:31;2082:4;2088:7;2065:16;;;;;:31;;:::i;:::-;2106:18;;;;:12;:18;;;;;;;;:31;;2129:7;;2106:22;;;;;:31;;:::i;:::-;;1978:166;;:::o;6861:233:0:-;2995:4;3018:12;;;;;;;;;;;-1:-1:-1;;;;;3018:29:0;;;;;;;;;;;;6939:149;;6982:6;:12;;;;;;;;;;;-1:-1:-1;;;;;6982:29:0;;;;;;;;;:36;;-1:-1:-1;;6982:36:0;7014:4;6982:36;;;7064:12;719:10:19;;640:96;7064:12:0;-1:-1:-1;;;;;7037:40:0;7055:7;-1:-1:-1;;;;;7037:40:0;7049:4;7037:40;;;;;;;;;;6861:233;;:::o;7612:150:29:-;7682:4;7705:50;7710:3;-1:-1:-1;;;;;7730:23:29;;7705:4;:50::i;:::-;7698:57;;7612:150;;;;;:::o;1697:404::-;1760:4;3834:19;;;:12;;;:19;;;;;;1776:319;;-1:-1:-1;1818:23:29;;;;;;;;:11;:23;;;;;;;;;;;;;1998:18;;1976:19;;;:12;;;:19;;;;;;:40;;;;2030:11;;1776:319;-1:-1:-1;2079:5:29;2072:12;;14:177:105;93:13;;-1:-1:-1;;;;;135:31:105;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:127::-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:1214;432:6;440;493:2;481:9;472:7;468:23;464:32;461:52;;;509:1;506;499:12;461:52;532:40;562:9;532:40;:::i;:::-;591:2;622:18;;;616:25;522:50;;-1:-1:-1;591:2:105;-1:-1:-1;;;;;690:14:105;;;687:34;;;717:1;714;707:12;687:34;755:6;744:9;740:22;730:32;;800:7;793:4;789:2;785:13;781:27;771:55;;822:1;819;812:12;771:55;851:2;845:9;873:2;869;866:10;863:36;;;879:18;;:::i;:::-;925:2;922:1;918:10;957:2;951:9;1020:2;1016:7;1011:2;1007;1003:11;999:25;991:6;987:38;1075:6;1063:10;1060:22;1055:2;1043:10;1040:18;1037:46;1034:72;;;1086:18;;:::i;:::-;1122:2;1115:22;1172:18;;;1206:15;;;;-1:-1:-1;1248:11:105;;;1244:20;;;1276:19;;;1273:39;;;1308:1;1305;1298:12;1273:39;1332:11;;;;1352:159;1368:6;1363:3;1360:15;1352:159;;;1434:34;1464:3;1434:34;:::i;:::-;1422:47;;1385:12;;;;1489;;;;1352:159;;;1530:6;1520:16;;;;;;;;328:1214;;;;;:::o;1894:127::-;1955:10;1950:3;1946:20;1943:1;1936:31;1986:4;1983:1;1976:15;2010:4;2007:1;2000:15;2376:232;2415:3;2436:17;;;2433:140;;2495:10;2490:3;2486:20;2483:1;2476:31;2530:4;2527:1;2520:15;2558:4;2555:1;2548:15;2433:140;-1:-1:-1;2600:1:105;2589:13;;2376:232::o;:::-;645:3544:98;;;;;;",
10183
- "deployedSourceMap": "645:3544:98:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;634:212:1;;;;;;:::i;:::-;;:::i;:::-;;;470:14:105;;463:22;445:41;;433:2;418:18;634:212:1;;;;;;;;3412:356:98;;;:::i;:::-;;;;;;;:::i;4008:129:0:-;;;;;;:::i;:::-;4082:7;4108:12;;;;;;;;;;:22;;;;4008:129;;;;1491:25:105;;;1479:2;1464:18;4008:129:0;1345:177:105;1727:886:98;;;;;;:::i;:::-;;:::i;:::-;;4387:145:0;;;;;;:::i;:::-;;:::i;5404:214::-;;;;;;:::i;:::-;;:::i;2687:127:98:-;;;;;;:::i;:::-;;:::i;4063:124::-;;;:::i;2877:229::-;;;;;;:::i;:::-;;:::i;1431:151:1:-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;3113:32:105;;;3095:51;;3083:2;3068:18;1431:151:1;2949:203:105;2909:145:0;;;;;;:::i;:::-;;:::i;791:64:98:-;;-1:-1:-1;;;;;;;;;;;791:64:98;;2027:49:0;;2072:4;2027:49;;3172:166:98;;;;;;:::i;:::-;;:::i;1750:140:1:-;;;;;;:::i;:::-;;:::i;4766:147:0:-;;;;;;:::i;:::-;;:::i;3849:126:98:-;;;:::i;634:212:1:-;719:4;-1:-1:-1;;;;;;742:57:1;;-1:-1:-1;;;742:57:1;;:97;;;803:36;827:11;803:23;:36::i;:::-;735:104;634:212;-1:-1:-1;;634:212:1:o;3412:356:98:-;3462:16;3490:23;3516:32;-1:-1:-1;;;;;;;;;;;3516:18:98;:32::i;:::-;3490:58;;3558:24;3599:15;3585:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3585:30:98;;3558:57;;3629:9;3625:113;3648:15;3644:1;:19;3625:113;;;3697:30;-1:-1:-1;;;;;;;;;;;3725:1:98;3697:13;:30::i;:::-;3684:7;3692:1;3684:10;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3684:43:98;;;:10;;;;;;;;;;;:43;3665:3;;;;:::i;:::-;;;;3625:113;;;-1:-1:-1;3754:7:98;3412:356;-1:-1:-1;;3412:356:98:o;1727:886::-;1866:10;-1:-1:-1;;;;;1866:21:98;;;;:106;;;1905:33;-1:-1:-1;;;;;;;;;;;1927:10:98;1905:7;:33::i;:::-;:66;;;;-1:-1:-1;;;;;;1955:16:98;;;;;;:7;:16;;;;;;;;1954:17;1905:66;1858:149;;;;-1:-1:-1;;;1858:149:98;;4077:2:105;1858:149:98;;;4059:21:105;4116:2;4096:18;;;4089:30;-1:-1:-1;;;4135:18:105;;;4128:51;4196:18;;1858:149:98;;;;;;;;;2049:22;2086:14;2049:52;;2143:12;2165:10;-1:-1:-1;;;;;2165:29:98;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2231:30;;-1:-1:-1;;;2231:30:98;;2255:4;2231:30;;;3095:51:105;2143:54:98;;-1:-1:-1;2207:21:98;;-1:-1:-1;;;;;2231:15:98;;;;;3068:18:105;;2231:30:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2207:54;-1:-1:-1;2271:54:98;-1:-1:-1;;;;;2271:22:98;;2294:7;2311:4;2318:6;2271:22;:54::i;:::-;2335:41;-1:-1:-1;;;;;2335:17:98;;2361:10;2374:1;2335:17;:41::i;:::-;2386:46;-1:-1:-1;;;;;2386:17:98;;2412:10;2425:6;2386:17;:46::i;:::-;2545:30;;-1:-1:-1;;;2545:30:98;;2569:4;2545:30;;;3095:51:105;-1:-1:-1;;;;;2490:20:98;;;;;;2524:7;;2578:13;;2545:15;;;;;3068:18:105;;2545:30:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;;;:::i;:::-;2593:12;;;2603:1;2593:12;;;;;;;;;-1:-1:-1;;;;;;2490:116:98;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1848:765;;;1727:886;;;:::o;4387:145:0:-;4082:7;4108:12;;;;;;;;;;:22;;;2505:30;2516:4;719:10:19;2505::0;:30::i;:::-;4500:25:::1;4511:4;4517:7;4500:10;:25::i;:::-;4387:145:::0;;;:::o;5404:214::-;-1:-1:-1;;;;;5499:23:0;;719:10:19;5499:23:0;5491:83;;;;-1:-1:-1;;;5491:83:0;;5917:2:105;5491:83:0;;;5899:21:105;5956:2;5936:18;;;5929:30;5995:34;5975:18;;;5968:62;-1:-1:-1;;;6046:18:105;;;6039:45;6101:19;;5491:83:0;5715:411:105;5491:83:0;5585:26;5597:4;5603:7;5585:11;:26::i;:::-;5404:214;;:::o;2687:127:98:-;2750:8;2777:30;-1:-1:-1;;;;;;;;;;;2799:7:98;2777;:30::i;4063:124::-;4126:10;4118:19;;;;:7;:19;;;;;;4111:26;;-1:-1:-1;;4111:26:98;;;4152:28;;;4118:19;4152:28;4063:124::o;2877:229::-;-1:-1:-1;;;;;2948:21:98;;2940:55;;;;-1:-1:-1;;;2940:55:98;;4077:2:105;2940:55:98;;;4059:21:105;4116:2;4096:18;;;4089:30;-1:-1:-1;;;4135:18:105;;;4128:51;4196:18;;2940:55:98;3875:345:105;2940:55:98;3067:32;-1:-1:-1;;;;;;;;;;;3091:7:98;3067:9;:32::i;:::-;2877:229;:::o;1431:151:1:-;1521:7;1547:18;;;:12;:18;;;;;:28;;1569:5;1547:21;:28::i;:::-;1540:35;1431:151;-1:-1:-1;;;1431:151:1:o;2909:145:0:-;2995:4;3018:12;;;;;;;;;;;-1:-1:-1;;;;;3018:29:0;;;;;;;;;;;;;;;2909:145::o;3172:166:98:-;3298:33;-1:-1:-1;;;;;;;;;;;3323:7:98;3298:10;:33::i;1750:140:1:-;1830:7;1856:18;;;:12;:18;;;;;:27;;:25;:27::i;4766:147:0:-;4082:7;4108:12;;;;;;;;;;:22;;;2505:30;2516:4;719:10:19;2505::0;:30::i;:::-;4880:26:::1;4892:4;4898:7;4880:11;:26::i;3849:126:98:-:0;3906:10;3898:19;;;;:7;:19;;;;;;:26;;-1:-1:-1;;3898:26:98;3920:4;3898:26;;;3939:29;;;3898:19;3939:29;3849:126::o;6861:233:0:-;6944:22;6952:4;6958:7;6944;:22::i;:::-;6939:149;;6982:6;:12;;;;;;;;;;;-1:-1:-1;;;;;6982:29:0;;;;;;;;;:36;;-1:-1:-1;;6982:36:0;7014:4;6982:36;;;7064:12;719:10:19;;640:96;7064:12:0;-1:-1:-1;;;;;7037:40:0;7055:7;-1:-1:-1;;;;;7037:40:0;7049:4;7037:40;;;;;;;;;;6861:233;;:::o;7612:150:29:-;7682:4;7705:50;7710:3;-1:-1:-1;;;;;7730:23:29;;7705:4;:50::i;2620:202:0:-;2705:4;-1:-1:-1;;;;;;2728:47:0;;-1:-1:-1;;;2728:47:0;;:87;;-1:-1:-1;;;;;;;;;;937:40:22;;;2779:36:0;829:155:22;912:241:14;1077:68;;-1:-1:-1;;;;;6389:15:105;;;1077:68:14;;;6371:34:105;6441:15;;6421:18;;;6414:43;6473:18;;;6466:34;;;1050:96:14;;1070:5;;-1:-1:-1;;;1100:27:14;6306:18:105;;1077:68:14;;;;-1:-1:-1;;1077:68:14;;;;;;;;;;;;;;-1:-1:-1;;;;;1077:68:14;-1:-1:-1;;;;;;1077:68:14;;;;;;;;;;1050:19;:96::i;:::-;912:241;;;;:::o;1413:603::-;1768:10;;;1767:62;;-1:-1:-1;1784:39:14;;-1:-1:-1;;;1784:39:14;;1808:4;1784:39;;;6723:34:105;-1:-1:-1;;;;;6793:15:105;;;6773:18;;;6766:43;1784:15:14;;;;;6658:18:105;;1784:39:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;1767:62;1746:163;;;;-1:-1:-1;;;1746:163:14;;7022:2:105;1746:163:14;;;7004:21:105;7061:2;7041:18;;;7034:30;7100:34;7080:18;;;7073:62;-1:-1:-1;;;7151:18:105;;;7144:52;7213:19;;1746:163:14;6820:418:105;1746:163:14;1946:62;;-1:-1:-1;;;;;7435:32:105;;1946:62:14;;;7417:51:105;7484:18;;;7477:34;;;1919:90:14;;1939:5;;-1:-1:-1;;;1969:22:14;7390:18:105;;1946:62:14;7243:274:105;3335:492:0;3423:22;3431:4;3437:7;3423;:22::i;:::-;3418:403;;3606:41;3634:7;-1:-1:-1;;;;;3606:41:0;3644:2;3606:19;:41::i;:::-;3718:38;3746:4;3753:2;3718:19;:38::i;:::-;3513:265;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;3513:265:0;;;;;;;;;;-1:-1:-1;;;3461:349:0;;;;;;;:::i;1978:166:1:-;2065:31;2082:4;2088:7;2065:16;:31::i;:::-;2106:18;;;;:12;:18;;;;;:31;;2129:7;2106:22;:31::i;2233:171::-;2321:32;2339:4;2345:7;2321:17;:32::i;:::-;2363:18;;;;:12;:18;;;;;:34;;2389:7;2363:25;:34::i;8870:156:29:-;8944:7;8994:22;8998:3;9010:5;8994:3;:22::i;8413:115::-;8476:7;8502:19;8510:3;4028:18;;3946:107;1697:404;1760:4;3834:19;;;:12;;;:19;;;;;;1776:319;;-1:-1:-1;1818:23:29;;;;;;;;:11;:23;;;;;;;;;;;;;1998:18;;1976:19;;;:12;;;:19;;;;;;:40;;;;2030:11;;1776:319;-1:-1:-1;2079:5:29;2072:12;;3207:706:14;3626:23;3652:69;3680:4;3652:69;;;;;;;;;;;;;;;;;3660:5;-1:-1:-1;;;;;3652:27:14;;;:69;;;;;:::i;:::-;3735:17;;3626:95;;-1:-1:-1;3735:21:14;3731:176;;3830:10;3819:30;;;;;;;;;;;;:::i;:::-;3811:85;;;;-1:-1:-1;;;3811:85:14;;9021:2:105;3811:85:14;;;9003:21:105;9060:2;9040:18;;;9033:30;9099:34;9079:18;;;9072:62;-1:-1:-1;;;9150:18:105;;;9143:40;9200:19;;3811:85:14;8819:406:105;1588:441:21;1663:13;1688:19;1720:10;1724:6;1720:1;:10;:::i;:::-;:14;;1733:1;1720:14;:::i;:::-;1710:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1710:25:21;;1688:47;;-1:-1:-1;;;1745:6:21;1752:1;1745:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1745:15:21;;;;;;;;;-1:-1:-1;;;1770:6:21;1777:1;1770:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1770:15:21;;;;;;;;-1:-1:-1;1800:9:21;1812:10;1816:6;1812:1;:10;:::i;:::-;:14;;1825:1;1812:14;:::i;:::-;1800:26;;1795:132;1832:1;1828;:5;1795:132;;;-1:-1:-1;;;1879:5:21;1887:3;1879:11;1866:25;;;;;;;:::i;:::-;;;;1854:6;1861:1;1854:9;;;;;;;;:::i;:::-;;;;:37;-1:-1:-1;;;;;1854:37:21;;;;;;;;-1:-1:-1;1915:1:21;1905:11;;;;;1835:3;;;:::i;:::-;;;1795:132;;;-1:-1:-1;1944:10:21;;1936:55;;;;-1:-1:-1;;;1936:55:21;;9879:2:105;1936:55:21;;;9861:21:105;;;9898:18;;;9891:30;9957:34;9937:18;;;9930:62;10009:18;;1936:55:21;9677:356:105;7219:234:0;7302:22;7310:4;7316:7;7302;:22::i;:::-;7298:149;;;7372:5;7340:12;;;;;;;;;;;-1:-1:-1;;;;;7340:29:0;;;;;;;;;;:37;;-1:-1:-1;;7340:37:0;;;7396:40;719:10:19;;7340:12:0;;7396:40;;7372:5;7396:40;7219:234;;:::o;7930:156:29:-;8003:4;8026:53;8034:3;-1:-1:-1;;;;;8054:23:29;;8026:7;:53::i;4395:118::-;4462:7;4488:3;:11;;4500:5;4488:18;;;;;;;;:::i;:::-;;;;;;;;;4481:25;;4395:118;;;;:::o;3861:223:18:-;3994:12;4025:52;4047:6;4055:4;4061:1;4064:12;4025:21;:52::i;:::-;4018:59;3861:223;-1:-1:-1;;;;3861:223:18:o;2269:1388:29:-;2335:4;2472:19;;;:12;;;:19;;;;;;2506:15;;2502:1149;;2875:21;2899:14;2912:1;2899:10;:14;:::i;:::-;2947:18;;2875:38;;-1:-1:-1;2927:17:29;;2947:22;;2968:1;;2947:22;:::i;:::-;2927:42;;3001:13;2988:9;:26;2984:398;;3034:17;3054:3;:11;;3066:9;3054:22;;;;;;;;:::i;:::-;;;;;;;;;3034:42;;3205:9;3176:3;:11;;3188:13;3176:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;3288:23;;;:12;;;:23;;;;;:36;;;2984:398;3460:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3552:3;:12;;:19;3565:5;3552:19;;;;;;;;;;;3545:26;;;3593:4;3586:11;;;;;;;2502:1149;3635:5;3628:12;;;;;4948:499:18;5113:12;5170:5;5145:21;:30;;5137:81;;;;-1:-1:-1;;;5137:81:18;;10372:2:105;5137:81:18;;;10354:21:105;10411:2;10391:18;;;10384:30;10450:34;10430:18;;;10423:62;-1:-1:-1;;;10501:18:105;;;10494:36;10547:19;;5137:81:18;10170:402:105;5137:81:18;-1:-1:-1;;;;;1465:19:18;;;5228:60;;;;-1:-1:-1;;;5228:60:18;;10779:2:105;5228:60:18;;;10761:21:105;10818:2;10798:18;;;10791:30;10857:31;10837:18;;;10830:59;10906:18;;5228:60:18;10577:353:105;5228:60:18;5300:12;5314:23;5341:6;-1:-1:-1;;;;;5341:11:18;5360:5;5367:4;5341:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5299:73;;;;5389:51;5406:7;5415:10;5427:12;5389:16;:51::i;:::-;5382:58;4948:499;-1:-1:-1;;;;;;;4948:499:18:o;7561:692::-;7707:12;7735:7;7731:516;;;-1:-1:-1;7765:10:18;7758:17;;7731:516;7876:17;;:21;7872:365;;8070:10;8064:17;8130:15;8117:10;8113:2;8109:19;8102:44;7872:365;8209:12;8202:20;;-1:-1:-1;;;8202:20:18;;;;;;;;:::i;14:286:105:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:105;;209:43;;199:71;;266:1;263;256:12;497:658;668:2;720:21;;;790:13;;693:18;;;812:22;;;639:4;;668:2;891:15;;;;865:2;850:18;;;639:4;934:195;948:6;945:1;942:13;934:195;;;1013:13;;-1:-1:-1;;;;;1009:39:105;997:52;;1104:15;;;;1069:12;;;;1045:1;963:9;934:195;;;-1:-1:-1;1146:3:105;;497:658;-1:-1:-1;;;;;;497:658:105:o;1160:180::-;1219:6;1272:2;1260:9;1251:7;1247:23;1243:32;1240:52;;;1288:1;1285;1278:12;1240:52;-1:-1:-1;1311:23:105;;1160:180;-1:-1:-1;1160:180:105:o;1527:131::-;-1:-1:-1;;;;;1602:31:105;;1592:42;;1582:70;;1648:1;1645;1638:12;1663:456;1740:6;1748;1756;1809:2;1797:9;1788:7;1784:23;1780:32;1777:52;;;1825:1;1822;1815:12;1777:52;1864:9;1851:23;1883:31;1908:5;1883:31;:::i;:::-;1933:5;-1:-1:-1;1990:2:105;1975:18;;1962:32;2003:33;1962:32;2003:33;:::i;:::-;1663:456;;2055:7;;-1:-1:-1;;;2109:2:105;2094:18;;;;2081:32;;1663:456::o;2124:315::-;2192:6;2200;2253:2;2241:9;2232:7;2228:23;2224:32;2221:52;;;2269:1;2266;2259:12;2221:52;2305:9;2292:23;2282:33;;2365:2;2354:9;2350:18;2337:32;2378:31;2403:5;2378:31;:::i;:::-;2428:5;2418:15;;;2124:315;;;;;:::o;2444:247::-;2503:6;2556:2;2544:9;2535:7;2531:23;2527:32;2524:52;;;2572:1;2569;2562:12;2524:52;2611:9;2598:23;2630:31;2655:5;2630:31;:::i;2696:248::-;2764:6;2772;2825:2;2813:9;2804:7;2800:23;2796:32;2793:52;;;2841:1;2838;2831:12;2793:52;-1:-1:-1;;2864:23:105;;;2934:2;2919:18;;;2906:32;;-1:-1:-1;2696:248:105:o;3339:127::-;3400:10;3395:3;3391:20;3388:1;3381:31;3431:4;3428:1;3421:15;3455:4;3452:1;3445:15;3471:127;3532:10;3527:3;3523:20;3520:1;3513:31;3563:4;3560:1;3553:15;3587:4;3584:1;3577:15;3603:127;3664:10;3659:3;3655:20;3652:1;3645:31;3695:4;3692:1;3685:15;3719:4;3716:1;3709:15;3735:135;3774:3;3795:17;;;3792:43;;3815:18;;:::i;:::-;-1:-1:-1;3862:1:105;3851:13;;3735:135::o;4225:251::-;4295:6;4348:2;4336:9;4327:7;4323:23;4319:32;4316:52;;;4364:1;4361;4354:12;4316:52;4396:9;4390:16;4415:31;4440:5;4415:31;:::i;4481:184::-;4551:6;4604:2;4592:9;4583:7;4579:23;4575:32;4572:52;;;4620:1;4617;4610:12;4572:52;-1:-1:-1;4643:16:105;;4481:184;-1:-1:-1;4481:184:105:o;4670:125::-;4710:4;4738:1;4735;4732:8;4729:34;;;4743:18;;:::i;:::-;-1:-1:-1;4780:9:105;;4670:125::o;4800:258::-;4872:1;4882:113;4896:6;4893:1;4890:13;4882:113;;;4972:11;;;4966:18;4953:11;;;4946:39;4918:2;4911:10;4882:113;;;5013:6;5010:1;5007:13;5004:48;;;-1:-1:-1;;5048:1:105;5030:16;;5023:27;4800:258::o;5063:257::-;5104:3;5142:5;5136:12;5169:6;5164:3;5157:19;5185:63;5241:6;5234:4;5229:3;5225:14;5218:4;5211:5;5207:16;5185:63;:::i;:::-;5302:2;5281:15;-1:-1:-1;;5277:29:105;5268:39;;;;5309:4;5264:50;;5063:257;-1:-1:-1;;5063:257:105:o;5325:385::-;5557:1;5553;5548:3;5544:11;5540:19;5532:6;5528:32;5517:9;5510:51;5597:6;5592:2;5581:9;5577:18;5570:34;5640:2;5635;5624:9;5620:18;5613:30;5491:4;5660:44;5700:2;5689:9;5685:18;5677:6;5660:44;:::i;:::-;5652:52;5325:385;-1:-1:-1;;;;;5325:385:105:o;7522:786::-;7933:25;7928:3;7921:38;7903:3;7988:6;7982:13;8004:62;8059:6;8054:2;8049:3;8045:12;8038:4;8030:6;8026:17;8004:62;:::i;:::-;-1:-1:-1;;;8125:2:105;8085:16;;;8117:11;;;8110:40;8175:13;;8197:63;8175:13;8246:2;8238:11;;8231:4;8219:17;;8197:63;:::i;:::-;8280:17;8299:2;8276:26;;7522:786;-1:-1:-1;;;;7522:786:105:o;8313:219::-;8462:2;8451:9;8444:21;8425:4;8482:44;8522:2;8511:9;8507:18;8499:6;8482:44;:::i;8537:277::-;8604:6;8657:2;8645:9;8636:7;8632:23;8628:32;8625:52;;;8673:1;8670;8663:12;8625:52;8705:9;8699:16;8758:5;8751:13;8744:21;8737:5;8734:32;8724:60;;8780:1;8777;8770:12;9230:168;9270:7;9336:1;9332;9328:6;9324:14;9321:1;9318:21;9313:1;9306:9;9299:17;9295:45;9292:71;;;9343:18;;:::i;:::-;-1:-1:-1;9383:9:105;;9230:168::o;9403:128::-;9443:3;9474:1;9470:6;9467:1;9464:13;9461:39;;;9480:18;;:::i;:::-;-1:-1:-1;9516:9:105;;9403:128::o;9536:136::-;9575:3;9603:5;9593:39;;9612:18;;:::i;:::-;-1:-1:-1;;;9648:18:105;;9536:136::o;10038:127::-;10099:10;10094:3;10090:20;10087:1;10080:31;10130:4;10127:1;10120:15;10154:4;10151:1;10144:15;10935:274;11064:3;11102:6;11096:13;11118:53;11164:6;11159:3;11152:4;11144:6;11140:17;11118:53;:::i;:::-;11187:16;;;;;10935:274;-1:-1:-1;;10935:274:105:o",
10184
- "source": "// SPDX-License-Identifier: AGPLv3\npragma solidity 0.8.13;\n\nimport \"@openzeppelin/contracts/access/AccessControlEnumerable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport {\n ISuperToken,\n IERC20\n} from \"../interfaces/superfluid/ISuperfluid.sol\";\n\n/**\n * @title Super upgrader contract\n * @author Superfluid\n * NOTE:\n * - User would need to first SuperToken.approve the `SuperUpgrader` for the job.\n * - Using access control to allow multiple backend agent to upgrade tokens for the users\n * - Risk taken by the user is that the underlying tokens are converted to the Super Tokens by the upgrader agents.\n */\ncontract SuperUpgrader is AccessControlEnumerable {\n\n using SafeERC20 for IERC20;\n // Create a new role identifier for the backend role\n bytes32 public constant BACKEND_ROLE = keccak256(\"BACKEND_ROLE\");\n\n event OptoutAutoUpgrade(address indexed account);\n event OptinAutoUpgrade(address indexed account);\n\n mapping(address => bool) internal _optout;\n\n constructor(address adminRole, address[] memory backendAddr) {\n require(adminRole != address(0), \"adminRole is empty\");\n _setupRole(DEFAULT_ADMIN_ROLE, adminRole);\n for (uint256 i = 0; i < backendAddr.length; ++i) {\n require(backendAddr[i] != address(0), \"backend can't be zero\");\n _setupRole(BACKEND_ROLE, backendAddr[i]);\n }\n }\n\n /**\n * @notice The user should ERC20.approve this contract.\n * @dev Execute upgrade function in the name of the user\n * @param superTokenAddr Super Token Address to upgrade \n * @param account User address that previous approved this contract.\n * @param amount Amount value to be upgraded.\n */\n function upgrade(\n address superTokenAddr,\n address account,\n uint256 amount\n )\n external\n {\n require(msg.sender == account || \n (hasRole(BACKEND_ROLE, msg.sender) &&\n !_optout[account])\n , \"operation not allowed\");\n // get underlying token\n ISuperToken superToken = ISuperToken(superTokenAddr);\n // get tokens from user\n IERC20 token = IERC20(superToken.getUnderlyingToken());\n uint256 beforeBalance = token.balanceOf(address(this));\n token.safeTransferFrom(account, address(this), amount);\n token.safeApprove(address(superToken), 0);\n token.safeApprove(address(superToken), amount);\n // upgrade tokens and send back to user\n superToken.upgradeTo(\n account,\n token.balanceOf(address(this)) - beforeBalance, new bytes(0));\n }\n\n /**\n * @dev Test if account is member BACKEND_ROLE \n */\n function isBackendAgent(address account) external view returns(bool yes) {\n return hasRole(BACKEND_ROLE, account);\n }\n\n /**\n * @dev Add account to BACKEND_ROLE \n */\n function grantBackendAgent(address account) external {\n require(account != address(0), \"operation not allowed\");\n // grantRole will check if sender is adminRole member\n grantRole(BACKEND_ROLE, account);\n }\n\n /**\n * @dev Remove account to BACKEND_ROLE \n */\n function revokeBackendAgent(address account) external {\n // grantRole will check if sender is adminRole member\n revokeRole(BACKEND_ROLE, account);\n }\n\n /**\n * @dev Get list of all members of BACKEND_ROLE\n */\n function getBackendAgents() external view returns(address[] memory) {\n uint256 numberOfMembers = getRoleMemberCount(BACKEND_ROLE);\n address[] memory members = new address[](numberOfMembers);\n for(uint256 i = 0; i < numberOfMembers; i++) {\n members[i] = getRoleMember(BACKEND_ROLE, i);\n }\n return members;\n }\n\n /**\n * @dev User signal that opt-out from backend upgrades\n */\n function optoutAutoUpgrades() external {\n _optout[msg.sender] = true;\n emit OptoutAutoUpgrade(msg.sender);\n }\n\n /**\n * @dev User signal that revoke opt-out from backend upgrades\n */\n function optinAutoUpgrades() external {\n delete _optout[msg.sender];\n emit OptinAutoUpgrade(msg.sender);\n }\n}\n",
10182
+ "sourceMap": "645:3539:98:-:0;;;1018:382;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1097:23:98;;1089:54;;;;-1:-1:-1;;;1089:54:98;;1749:2:105;1089:54:98;;;1731:21:105;1788:2;1768:18;;;1761:30;-1:-1:-1;;;1807:18:105;;;1800:48;1865:18;;1089:54:98;;;;;;;;;1153:41;2072:4:0;1184:9:98;1153:10;:41::i;:::-;1209:9;1204:190;1228:11;:18;1224:1;:22;1204:190;;;1301:1;-1:-1:-1;;;;;1275:28:98;:11;1287:1;1275:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1275:28:98;;1267:62;;;;-1:-1:-1;;;1267:62:98;;2228:2:105;1267:62:98;;;2210:21:105;2267:2;2247:18;;;2240:30;2306:23;2286:18;;;2279:51;2347:18;;1267:62:98;2026:345:105;1267:62:98;1343:40;830:25;1368:11;1380:1;1368:14;;;;;;;;:::i;:::-;;;;;;;1343:10;;;:40;;:::i;:::-;1248:3;;;:::i;:::-;;;1204:190;;;;1018:382;;645:3539;;6257:110:0;6335:25;6346:4;6352:7;6335:10;:25::i;:::-;6257:110;;:::o;1978:166:1:-;2065:31;2082:4;2088:7;2065:16;;;;;:31;;:::i;:::-;2106:18;;;;:12;:18;;;;;;;;:31;;2129:7;;2106:22;;;;;:31;;:::i;:::-;;1978:166;;:::o;6861:233:0:-;2995:4;3018:12;;;;;;;;;;;-1:-1:-1;;;;;3018:29:0;;;;;;;;;;;;6939:149;;6982:6;:12;;;;;;;;;;;-1:-1:-1;;;;;6982:29:0;;;;;;;;;:36;;-1:-1:-1;;6982:36:0;7014:4;6982:36;;;7064:12;719:10:19;;640:96;7064:12:0;-1:-1:-1;;;;;7037:40:0;7055:7;-1:-1:-1;;;;;7037:40:0;7049:4;7037:40;;;;;;;;;;6861:233;;:::o;7612:150:29:-;7682:4;7705:50;7710:3;-1:-1:-1;;;;;7730:23:29;;7705:4;:50::i;:::-;7698:57;;7612:150;;;;;:::o;1697:404::-;1760:4;3834:19;;;:12;;;:19;;;;;;1776:319;;-1:-1:-1;1818:23:29;;;;;;;;:11;:23;;;;;;;;;;;;;1998:18;;1976:19;;;:12;;;:19;;;;;;:40;;;;2030:11;;1776:319;-1:-1:-1;2079:5:29;2072:12;;14:177:105;93:13;;-1:-1:-1;;;;;135:31:105;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:127::-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:1214;432:6;440;493:2;481:9;472:7;468:23;464:32;461:52;;;509:1;506;499:12;461:52;532:40;562:9;532:40;:::i;:::-;591:2;622:18;;;616:25;522:50;;-1:-1:-1;591:2:105;-1:-1:-1;;;;;690:14:105;;;687:34;;;717:1;714;707:12;687:34;755:6;744:9;740:22;730:32;;800:7;793:4;789:2;785:13;781:27;771:55;;822:1;819;812:12;771:55;851:2;845:9;873:2;869;866:10;863:36;;;879:18;;:::i;:::-;925:2;922:1;918:10;957:2;951:9;1020:2;1016:7;1011:2;1007;1003:11;999:25;991:6;987:38;1075:6;1063:10;1060:22;1055:2;1043:10;1040:18;1037:46;1034:72;;;1086:18;;:::i;:::-;1122:2;1115:22;1172:18;;;1206:15;;;;-1:-1:-1;1248:11:105;;;1244:20;;;1276:19;;;1273:39;;;1308:1;1305;1298:12;1273:39;1332:11;;;;1352:159;1368:6;1363:3;1360:15;1352:159;;;1434:34;1464:3;1434:34;:::i;:::-;1422:47;;1385:12;;;;1489;;;;1352:159;;;1530:6;1520:16;;;;;;;;328:1214;;;;;:::o;1894:127::-;1955:10;1950:3;1946:20;1943:1;1936:31;1986:4;1983:1;1976:15;2010:4;2007:1;2000:15;2376:232;2415:3;2436:17;;;2433:140;;2495:10;2490:3;2486:20;2483:1;2476:31;2530:4;2527:1;2520:15;2558:4;2555:1;2548:15;2433:140;-1:-1:-1;2600:1:105;2589:13;;2376:232::o;:::-;645:3539:98;;;;;;",
10183
+ "deployedSourceMap": "645:3539:98:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;634:212:1;;;;;;:::i;:::-;;:::i;:::-;;;470:14:105;;463:22;445:41;;433:2;418:18;634:212:1;;;;;;;;3407:356:98;;;:::i;:::-;;;;;;;:::i;4008:129:0:-;;;;;;:::i;:::-;4082:7;4108:12;;;;;;;;;;:22;;;;4008:129;;;;1491:25:105;;;1479:2;1464:18;4008:129:0;1345:177:105;1726:885:98;;;;;;:::i;:::-;;:::i;:::-;;4387:145:0;;;;;;:::i;:::-;;:::i;5404:214::-;;;;;;:::i;:::-;;:::i;2684:127:98:-;;;;;;:::i;:::-;;:::i;4058:124::-;;;:::i;2873:229::-;;;;;;:::i;:::-;;:::i;1431:151:1:-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;3113:32:105;;;3095:51;;3083:2;3068:18;1431:151:1;2949:203:105;2909:145:0;;;;;;:::i;:::-;;:::i;791:64:98:-;;-1:-1:-1;;;;;;;;;;;791:64:98;;2027:49:0;;2072:4;2027:49;;3167:166:98;;;;;;:::i;:::-;;:::i;1750:140:1:-;;;;;;:::i;:::-;;:::i;4766:147:0:-;;;;;;:::i;:::-;;:::i;3844:126:98:-;;;:::i;634:212:1:-;719:4;-1:-1:-1;;;;;;742:57:1;;-1:-1:-1;;;742:57:1;;:97;;;803:36;827:11;803:23;:36::i;:::-;735:104;634:212;-1:-1:-1;;634:212:1:o;3407:356:98:-;3457:16;3485:23;3511:32;-1:-1:-1;;;;;;;;;;;3511:18:98;:32::i;:::-;3485:58;;3553:24;3594:15;3580:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3580:30:98;;3553:57;;3624:9;3620:113;3643:15;3639:1;:19;3620:113;;;3692:30;-1:-1:-1;;;;;;;;;;;3720:1:98;3692:13;:30::i;:::-;3679:7;3687:1;3679:10;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3679:43:98;;;:10;;;;;;;;;;;:43;3660:3;;;;:::i;:::-;;;;3620:113;;;-1:-1:-1;3749:7:98;3407:356;-1:-1:-1;;3407:356:98:o;1726:885::-;1865:10;-1:-1:-1;;;;;1865:21:98;;;;:105;;;1903:33;-1:-1:-1;;;;;;;;;;;1925:10:98;1903:7;:33::i;:::-;:66;;;;-1:-1:-1;;;;;;1953:16:98;;;;;;:7;:16;;;;;;;;1952:17;1903:66;1857:148;;;;-1:-1:-1;;;1857:148:98;;4077:2:105;1857:148:98;;;4059:21:105;4116:2;4096:18;;;4089:30;-1:-1:-1;;;4135:18:105;;;4128:51;4196:18;;1857:148:98;;;;;;;;;2047:22;2084:14;2047:52;;2141:12;2163:10;-1:-1:-1;;;;;2163:29:98;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2229:30;;-1:-1:-1;;;2229:30:98;;2253:4;2229:30;;;3095:51:105;2141:54:98;;-1:-1:-1;2205:21:98;;-1:-1:-1;;;;;2229:15:98;;;;;3068:18:105;;2229:30:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2205:54;-1:-1:-1;2269:54:98;-1:-1:-1;;;;;2269:22:98;;2292:7;2309:4;2316:6;2269:22;:54::i;:::-;2333:41;-1:-1:-1;;;;;2333:17:98;;2359:10;2372:1;2333:17;:41::i;:::-;2384:46;-1:-1:-1;;;;;2384:17:98;;2410:10;2423:6;2384:17;:46::i;:::-;2543:30;;-1:-1:-1;;;2543:30:98;;2567:4;2543:30;;;3095:51:105;-1:-1:-1;;;;;2488:20:98;;;;;;2522:7;;2576:13;;2543:15;;;;;3068:18:105;;2543:30:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;;;:::i;:::-;2591:12;;;2601:1;2591:12;;;;;;;;;-1:-1:-1;;;;;;2488:116:98;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1847:764;;;1726:885;;;:::o;4387:145:0:-;4082:7;4108:12;;;;;;;;;;:22;;;2505:30;2516:4;719:10:19;2505::0;:30::i;:::-;4500:25:::1;4511:4;4517:7;4500:10;:25::i;:::-;4387:145:::0;;;:::o;5404:214::-;-1:-1:-1;;;;;5499:23:0;;719:10:19;5499:23:0;5491:83;;;;-1:-1:-1;;;5491:83:0;;5917:2:105;5491:83:0;;;5899:21:105;5956:2;5936:18;;;5929:30;5995:34;5975:18;;;5968:62;-1:-1:-1;;;6046:18:105;;;6039:45;6101:19;;5491:83:0;5715:411:105;5491:83:0;5585:26;5597:4;5603:7;5585:11;:26::i;:::-;5404:214;;:::o;2684:127:98:-;2747:8;2774:30;-1:-1:-1;;;;;;;;;;;2796:7:98;2774;:30::i;4058:124::-;4121:10;4113:19;;;;:7;:19;;;;;;4106:26;;-1:-1:-1;;4106:26:98;;;4147:28;;;4113:19;4147:28;4058:124::o;2873:229::-;-1:-1:-1;;;;;2944:21:98;;2936:55;;;;-1:-1:-1;;;2936:55:98;;4077:2:105;2936:55:98;;;4059:21:105;4116:2;4096:18;;;4089:30;-1:-1:-1;;;4135:18:105;;;4128:51;4196:18;;2936:55:98;3875:345:105;2936:55:98;3063:32;-1:-1:-1;;;;;;;;;;;3087:7:98;3063:9;:32::i;:::-;2873:229;:::o;1431:151:1:-;1521:7;1547:18;;;:12;:18;;;;;:28;;1569:5;1547:21;:28::i;:::-;1540:35;1431:151;-1:-1:-1;;;1431:151:1:o;2909:145:0:-;2995:4;3018:12;;;;;;;;;;;-1:-1:-1;;;;;3018:29:0;;;;;;;;;;;;;;;2909:145::o;3167:166:98:-;3293:33;-1:-1:-1;;;;;;;;;;;3318:7:98;3293:10;:33::i;1750:140:1:-;1830:7;1856:18;;;:12;:18;;;;;:27;;:25;:27::i;4766:147:0:-;4082:7;4108:12;;;;;;;;;;:22;;;2505:30;2516:4;719:10:19;2505::0;:30::i;:::-;4880:26:::1;4892:4;4898:7;4880:11;:26::i;3844:126:98:-:0;3901:10;3893:19;;;;:7;:19;;;;;;:26;;-1:-1:-1;;3893:26:98;3915:4;3893:26;;;3934:29;;;3893:19;3934:29;3844:126::o;6861:233:0:-;6944:22;6952:4;6958:7;6944;:22::i;:::-;6939:149;;6982:6;:12;;;;;;;;;;;-1:-1:-1;;;;;6982:29:0;;;;;;;;;:36;;-1:-1:-1;;6982:36:0;7014:4;6982:36;;;7064:12;719:10:19;;640:96;7064:12:0;-1:-1:-1;;;;;7037:40:0;7055:7;-1:-1:-1;;;;;7037:40:0;7049:4;7037:40;;;;;;;;;;6861:233;;:::o;7612:150:29:-;7682:4;7705:50;7710:3;-1:-1:-1;;;;;7730:23:29;;7705:4;:50::i;2620:202:0:-;2705:4;-1:-1:-1;;;;;;2728:47:0;;-1:-1:-1;;;2728:47:0;;:87;;-1:-1:-1;;;;;;;;;;937:40:22;;;2779:36:0;829:155:22;912:241:14;1077:68;;-1:-1:-1;;;;;6389:15:105;;;1077:68:14;;;6371:34:105;6441:15;;6421:18;;;6414:43;6473:18;;;6466:34;;;1050:96:14;;1070:5;;-1:-1:-1;;;1100:27:14;6306:18:105;;1077:68:14;;;;-1:-1:-1;;1077:68:14;;;;;;;;;;;;;;-1:-1:-1;;;;;1077:68:14;-1:-1:-1;;;;;;1077:68:14;;;;;;;;;;1050:19;:96::i;:::-;912:241;;;;:::o;1413:603::-;1768:10;;;1767:62;;-1:-1:-1;1784:39:14;;-1:-1:-1;;;1784:39:14;;1808:4;1784:39;;;6723:34:105;-1:-1:-1;;;;;6793:15:105;;;6773:18;;;6766:43;1784:15:14;;;;;6658:18:105;;1784:39:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;1767:62;1746:163;;;;-1:-1:-1;;;1746:163:14;;7022:2:105;1746:163:14;;;7004:21:105;7061:2;7041:18;;;7034:30;7100:34;7080:18;;;7073:62;-1:-1:-1;;;7151:18:105;;;7144:52;7213:19;;1746:163:14;6820:418:105;1746:163:14;1946:62;;-1:-1:-1;;;;;7435:32:105;;1946:62:14;;;7417:51:105;7484:18;;;7477:34;;;1919:90:14;;1939:5;;-1:-1:-1;;;1969:22:14;7390:18:105;;1946:62:14;7243:274:105;3335:492:0;3423:22;3431:4;3437:7;3423;:22::i;:::-;3418:403;;3606:41;3634:7;-1:-1:-1;;;;;3606:41:0;3644:2;3606:19;:41::i;:::-;3718:38;3746:4;3753:2;3718:19;:38::i;:::-;3513:265;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;3513:265:0;;;;;;;;;;-1:-1:-1;;;3461:349:0;;;;;;;:::i;1978:166:1:-;2065:31;2082:4;2088:7;2065:16;:31::i;:::-;2106:18;;;;:12;:18;;;;;:31;;2129:7;2106:22;:31::i;2233:171::-;2321:32;2339:4;2345:7;2321:17;:32::i;:::-;2363:18;;;;:12;:18;;;;;:34;;2389:7;2363:25;:34::i;8870:156:29:-;8944:7;8994:22;8998:3;9010:5;8994:3;:22::i;8413:115::-;8476:7;8502:19;8510:3;4028:18;;3946:107;1697:404;1760:4;3834:19;;;:12;;;:19;;;;;;1776:319;;-1:-1:-1;1818:23:29;;;;;;;;:11;:23;;;;;;;;;;;;;1998:18;;1976:19;;;:12;;;:19;;;;;;:40;;;;2030:11;;1776:319;-1:-1:-1;2079:5:29;2072:12;;3207:706:14;3626:23;3652:69;3680:4;3652:69;;;;;;;;;;;;;;;;;3660:5;-1:-1:-1;;;;;3652:27:14;;;:69;;;;;:::i;:::-;3735:17;;3626:95;;-1:-1:-1;3735:21:14;3731:176;;3830:10;3819:30;;;;;;;;;;;;:::i;:::-;3811:85;;;;-1:-1:-1;;;3811:85:14;;9021:2:105;3811:85:14;;;9003:21:105;9060:2;9040:18;;;9033:30;9099:34;9079:18;;;9072:62;-1:-1:-1;;;9150:18:105;;;9143:40;9200:19;;3811:85:14;8819:406:105;1588:441:21;1663:13;1688:19;1720:10;1724:6;1720:1;:10;:::i;:::-;:14;;1733:1;1720:14;:::i;:::-;1710:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1710:25:21;;1688:47;;-1:-1:-1;;;1745:6:21;1752:1;1745:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1745:15:21;;;;;;;;;-1:-1:-1;;;1770:6:21;1777:1;1770:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1770:15:21;;;;;;;;-1:-1:-1;1800:9:21;1812:10;1816:6;1812:1;:10;:::i;:::-;:14;;1825:1;1812:14;:::i;:::-;1800:26;;1795:132;1832:1;1828;:5;1795:132;;;-1:-1:-1;;;1879:5:21;1887:3;1879:11;1866:25;;;;;;;:::i;:::-;;;;1854:6;1861:1;1854:9;;;;;;;;:::i;:::-;;;;:37;-1:-1:-1;;;;;1854:37:21;;;;;;;;-1:-1:-1;1915:1:21;1905:11;;;;;1835:3;;;:::i;:::-;;;1795:132;;;-1:-1:-1;1944:10:21;;1936:55;;;;-1:-1:-1;;;1936:55:21;;9879:2:105;1936:55:21;;;9861:21:105;;;9898:18;;;9891:30;9957:34;9937:18;;;9930:62;10009:18;;1936:55:21;9677:356:105;7219:234:0;7302:22;7310:4;7316:7;7302;:22::i;:::-;7298:149;;;7372:5;7340:12;;;;;;;;;;;-1:-1:-1;;;;;7340:29:0;;;;;;;;;;:37;;-1:-1:-1;;7340:37:0;;;7396:40;719:10:19;;7340:12:0;;7396:40;;7372:5;7396:40;7219:234;;:::o;7930:156:29:-;8003:4;8026:53;8034:3;-1:-1:-1;;;;;8054:23:29;;8026:7;:53::i;4395:118::-;4462:7;4488:3;:11;;4500:5;4488:18;;;;;;;;:::i;:::-;;;;;;;;;4481:25;;4395:118;;;;:::o;3861:223:18:-;3994:12;4025:52;4047:6;4055:4;4061:1;4064:12;4025:21;:52::i;:::-;4018:59;3861:223;-1:-1:-1;;;;3861:223:18:o;2269:1388:29:-;2335:4;2472:19;;;:12;;;:19;;;;;;2506:15;;2502:1149;;2875:21;2899:14;2912:1;2899:10;:14;:::i;:::-;2947:18;;2875:38;;-1:-1:-1;2927:17:29;;2947:22;;2968:1;;2947:22;:::i;:::-;2927:42;;3001:13;2988:9;:26;2984:398;;3034:17;3054:3;:11;;3066:9;3054:22;;;;;;;;:::i;:::-;;;;;;;;;3034:42;;3205:9;3176:3;:11;;3188:13;3176:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;3288:23;;;:12;;;:23;;;;;:36;;;2984:398;3460:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3552:3;:12;;:19;3565:5;3552:19;;;;;;;;;;;3545:26;;;3593:4;3586:11;;;;;;;2502:1149;3635:5;3628:12;;;;;4948:499:18;5113:12;5170:5;5145:21;:30;;5137:81;;;;-1:-1:-1;;;5137:81:18;;10372:2:105;5137:81:18;;;10354:21:105;10411:2;10391:18;;;10384:30;10450:34;10430:18;;;10423:62;-1:-1:-1;;;10501:18:105;;;10494:36;10547:19;;5137:81:18;10170:402:105;5137:81:18;-1:-1:-1;;;;;1465:19:18;;;5228:60;;;;-1:-1:-1;;;5228:60:18;;10779:2:105;5228:60:18;;;10761:21:105;10818:2;10798:18;;;10791:30;10857:31;10837:18;;;10830:59;10906:18;;5228:60:18;10577:353:105;5228:60:18;5300:12;5314:23;5341:6;-1:-1:-1;;;;;5341:11:18;5360:5;5367:4;5341:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5299:73;;;;5389:51;5406:7;5415:10;5427:12;5389:16;:51::i;:::-;5382:58;4948:499;-1:-1:-1;;;;;;;4948:499:18:o;7561:692::-;7707:12;7735:7;7731:516;;;-1:-1:-1;7765:10:18;7758:17;;7731:516;7876:17;;:21;7872:365;;8070:10;8064:17;8130:15;8117:10;8113:2;8109:19;8102:44;7872:365;8209:12;8202:20;;-1:-1:-1;;;8202:20:18;;;;;;;;:::i;14:286:105:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:105;;209:43;;199:71;;266:1;263;256:12;497:658;668:2;720:21;;;790:13;;693:18;;;812:22;;;639:4;;668:2;891:15;;;;865:2;850:18;;;639:4;934:195;948:6;945:1;942:13;934:195;;;1013:13;;-1:-1:-1;;;;;1009:39:105;997:52;;1104:15;;;;1069:12;;;;1045:1;963:9;934:195;;;-1:-1:-1;1146:3:105;;497:658;-1:-1:-1;;;;;;497:658:105:o;1160:180::-;1219:6;1272:2;1260:9;1251:7;1247:23;1243:32;1240:52;;;1288:1;1285;1278:12;1240:52;-1:-1:-1;1311:23:105;;1160:180;-1:-1:-1;1160:180:105:o;1527:131::-;-1:-1:-1;;;;;1602:31:105;;1592:42;;1582:70;;1648:1;1645;1638:12;1663:456;1740:6;1748;1756;1809:2;1797:9;1788:7;1784:23;1780:32;1777:52;;;1825:1;1822;1815:12;1777:52;1864:9;1851:23;1883:31;1908:5;1883:31;:::i;:::-;1933:5;-1:-1:-1;1990:2:105;1975:18;;1962:32;2003:33;1962:32;2003:33;:::i;:::-;1663:456;;2055:7;;-1:-1:-1;;;2109:2:105;2094:18;;;;2081:32;;1663:456::o;2124:315::-;2192:6;2200;2253:2;2241:9;2232:7;2228:23;2224:32;2221:52;;;2269:1;2266;2259:12;2221:52;2305:9;2292:23;2282:33;;2365:2;2354:9;2350:18;2337:32;2378:31;2403:5;2378:31;:::i;:::-;2428:5;2418:15;;;2124:315;;;;;:::o;2444:247::-;2503:6;2556:2;2544:9;2535:7;2531:23;2527:32;2524:52;;;2572:1;2569;2562:12;2524:52;2611:9;2598:23;2630:31;2655:5;2630:31;:::i;2696:248::-;2764:6;2772;2825:2;2813:9;2804:7;2800:23;2796:32;2793:52;;;2841:1;2838;2831:12;2793:52;-1:-1:-1;;2864:23:105;;;2934:2;2919:18;;;2906:32;;-1:-1:-1;2696:248:105:o;3339:127::-;3400:10;3395:3;3391:20;3388:1;3381:31;3431:4;3428:1;3421:15;3455:4;3452:1;3445:15;3471:127;3532:10;3527:3;3523:20;3520:1;3513:31;3563:4;3560:1;3553:15;3587:4;3584:1;3577:15;3603:127;3664:10;3659:3;3655:20;3652:1;3645:31;3695:4;3692:1;3685:15;3719:4;3716:1;3709:15;3735:135;3774:3;3795:17;;;3792:43;;3815:18;;:::i;:::-;-1:-1:-1;3862:1:105;3851:13;;3735:135::o;4225:251::-;4295:6;4348:2;4336:9;4327:7;4323:23;4319:32;4316:52;;;4364:1;4361;4354:12;4316:52;4396:9;4390:16;4415:31;4440:5;4415:31;:::i;4481:184::-;4551:6;4604:2;4592:9;4583:7;4579:23;4575:32;4572:52;;;4620:1;4617;4610:12;4572:52;-1:-1:-1;4643:16:105;;4481:184;-1:-1:-1;4481:184:105:o;4670:125::-;4710:4;4738:1;4735;4732:8;4729:34;;;4743:18;;:::i;:::-;-1:-1:-1;4780:9:105;;4670:125::o;4800:258::-;4872:1;4882:113;4896:6;4893:1;4890:13;4882:113;;;4972:11;;;4966:18;4953:11;;;4946:39;4918:2;4911:10;4882:113;;;5013:6;5010:1;5007:13;5004:48;;;-1:-1:-1;;5048:1:105;5030:16;;5023:27;4800:258::o;5063:257::-;5104:3;5142:5;5136:12;5169:6;5164:3;5157:19;5185:63;5241:6;5234:4;5229:3;5225:14;5218:4;5211:5;5207:16;5185:63;:::i;:::-;5302:2;5281:15;-1:-1:-1;;5277:29:105;5268:39;;;;5309:4;5264:50;;5063:257;-1:-1:-1;;5063:257:105:o;5325:385::-;5557:1;5553;5548:3;5544:11;5540:19;5532:6;5528:32;5517:9;5510:51;5597:6;5592:2;5581:9;5577:18;5570:34;5640:2;5635;5624:9;5620:18;5613:30;5491:4;5660:44;5700:2;5689:9;5685:18;5677:6;5660:44;:::i;:::-;5652:52;5325:385;-1:-1:-1;;;;;5325:385:105:o;7522:786::-;7933:25;7928:3;7921:38;7903:3;7988:6;7982:13;8004:62;8059:6;8054:2;8049:3;8045:12;8038:4;8030:6;8026:17;8004:62;:::i;:::-;-1:-1:-1;;;8125:2:105;8085:16;;;8117:11;;;8110:40;8175:13;;8197:63;8175:13;8246:2;8238:11;;8231:4;8219:17;;8197:63;:::i;:::-;8280:17;8299:2;8276:26;;7522:786;-1:-1:-1;;;;7522:786:105:o;8313:219::-;8462:2;8451:9;8444:21;8425:4;8482:44;8522:2;8511:9;8507:18;8499:6;8482:44;:::i;8537:277::-;8604:6;8657:2;8645:9;8636:7;8632:23;8628:32;8625:52;;;8673:1;8670;8663:12;8625:52;8705:9;8699:16;8758:5;8751:13;8744:21;8737:5;8734:32;8724:60;;8780:1;8777;8770:12;9230:168;9270:7;9336:1;9332;9328:6;9324:14;9321:1;9318:21;9313:1;9306:9;9299:17;9295:45;9292:71;;;9343:18;;:::i;:::-;-1:-1:-1;9383:9:105;;9230:168::o;9403:128::-;9443:3;9474:1;9470:6;9467:1;9464:13;9461:39;;;9480:18;;:::i;:::-;-1:-1:-1;9516:9:105;;9403:128::o;9536:136::-;9575:3;9603:5;9593:39;;9612:18;;:::i;:::-;-1:-1:-1;;;9648:18:105;;9536:136::o;10038:127::-;10099:10;10094:3;10090:20;10087:1;10080:31;10130:4;10127:1;10120:15;10154:4;10151:1;10144:15;10935:274;11064:3;11102:6;11096:13;11118:53;11164:6;11159:3;11152:4;11144:6;11140:17;11118:53;:::i;:::-;11187:16;;;;;10935:274;-1:-1:-1;;10935:274:105:o",
10184
+ "source": "// SPDX-License-Identifier: AGPLv3\npragma solidity 0.8.14;\n\nimport \"@openzeppelin/contracts/access/AccessControlEnumerable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport {\n ISuperToken,\n IERC20\n} from \"../interfaces/superfluid/ISuperfluid.sol\";\n\n/**\n * @title Super upgrader contract\n * @author Superfluid\n * NOTE:\n * - User would need to first SuperToken.approve the `SuperUpgrader` for the job.\n * - Using access control to allow multiple backend agent to upgrade tokens for the users\n * - Risk taken by the user is that the underlying tokens are converted to the Super Tokens by the upgrader agents.\n */\ncontract SuperUpgrader is AccessControlEnumerable {\n\n using SafeERC20 for IERC20;\n // Create a new role identifier for the backend role\n bytes32 public constant BACKEND_ROLE = keccak256(\"BACKEND_ROLE\");\n\n event OptoutAutoUpgrade(address indexed account);\n event OptinAutoUpgrade(address indexed account);\n\n mapping(address => bool) internal _optout;\n\n constructor(address adminRole, address[] memory backendAddr) {\n require(adminRole != address(0), \"adminRole is empty\");\n _setupRole(DEFAULT_ADMIN_ROLE, adminRole);\n for (uint256 i = 0; i < backendAddr.length; ++i) {\n require(backendAddr[i] != address(0), \"backend can't be zero\");\n _setupRole(BACKEND_ROLE, backendAddr[i]);\n }\n }\n\n /**\n * @notice The user should ERC20.approve this contract.\n * @dev Execute upgrade function in the name of the user\n * @param superTokenAddr Super Token Address to upgrade\n * @param account User address that previous approved this contract.\n * @param amount Amount value to be upgraded.\n */\n function upgrade(\n address superTokenAddr,\n address account,\n uint256 amount\n )\n external\n {\n require(msg.sender == account ||\n (hasRole(BACKEND_ROLE, msg.sender) &&\n !_optout[account])\n , \"operation not allowed\");\n // get underlying token\n ISuperToken superToken = ISuperToken(superTokenAddr);\n // get tokens from user\n IERC20 token = IERC20(superToken.getUnderlyingToken());\n uint256 beforeBalance = token.balanceOf(address(this));\n token.safeTransferFrom(account, address(this), amount);\n token.safeApprove(address(superToken), 0);\n token.safeApprove(address(superToken), amount);\n // upgrade tokens and send back to user\n superToken.upgradeTo(\n account,\n token.balanceOf(address(this)) - beforeBalance, new bytes(0));\n }\n\n /**\n * @dev Test if account is member BACKEND_ROLE\n */\n function isBackendAgent(address account) external view returns(bool yes) {\n return hasRole(BACKEND_ROLE, account);\n }\n\n /**\n * @dev Add account to BACKEND_ROLE\n */\n function grantBackendAgent(address account) external {\n require(account != address(0), \"operation not allowed\");\n // grantRole will check if sender is adminRole member\n grantRole(BACKEND_ROLE, account);\n }\n\n /**\n * @dev Remove account to BACKEND_ROLE\n */\n function revokeBackendAgent(address account) external {\n // grantRole will check if sender is adminRole member\n revokeRole(BACKEND_ROLE, account);\n }\n\n /**\n * @dev Get list of all members of BACKEND_ROLE\n */\n function getBackendAgents() external view returns(address[] memory) {\n uint256 numberOfMembers = getRoleMemberCount(BACKEND_ROLE);\n address[] memory members = new address[](numberOfMembers);\n for(uint256 i = 0; i < numberOfMembers; i++) {\n members[i] = getRoleMember(BACKEND_ROLE, i);\n }\n return members;\n }\n\n /**\n * @dev User signal that opt-out from backend upgrades\n */\n function optoutAutoUpgrades() external {\n _optout[msg.sender] = true;\n emit OptoutAutoUpgrade(msg.sender);\n }\n\n /**\n * @dev User signal that revoke opt-out from backend upgrades\n */\n function optinAutoUpgrades() external {\n delete _optout[msg.sender];\n emit OptinAutoUpgrade(msg.sender);\n }\n}\n",
10185
10185
  "sourcePath": "/home/runner/work/protocol-monorepo/protocol-monorepo/packages/ethereum-contracts/contracts/utils/SuperUpgrader.sol",
10186
10186
  "ast": {
10187
10187
  "absolutePath": "project:/contracts/utils/SuperUpgrader.sol",
@@ -10226,19 +10226,19 @@
10226
10226
  2816
10227
10227
  ],
10228
10228
  "SuperUpgrader": [
10229
- 35442
10229
+ 35461
10230
10230
  ]
10231
10231
  },
10232
- "id": 35443,
10232
+ "id": 35462,
10233
10233
  "license": "AGPLv3",
10234
10234
  "nodeType": "SourceUnit",
10235
10235
  "nodes": [
10236
10236
  {
10237
- "id": 35120,
10237
+ "id": 35139,
10238
10238
  "literals": [
10239
10239
  "solidity",
10240
10240
  "0.8",
10241
- ".13"
10241
+ ".14"
10242
10242
  ],
10243
10243
  "nodeType": "PragmaDirective",
10244
10244
  "src": "35:23:98"
@@ -10246,10 +10246,10 @@
10246
10246
  {
10247
10247
  "absolutePath": "@openzeppelin/contracts/access/AccessControlEnumerable.sol",
10248
10248
  "file": "@openzeppelin/contracts/access/AccessControlEnumerable.sol",
10249
- "id": 35121,
10249
+ "id": 35140,
10250
10250
  "nameLocation": "-1:-1:-1",
10251
10251
  "nodeType": "ImportDirective",
10252
- "scope": 35443,
10252
+ "scope": 35462,
10253
10253
  "sourceUnit": 434,
10254
10254
  "src": "60:68:98",
10255
10255
  "symbolAliases": [],
@@ -10258,10 +10258,10 @@
10258
10258
  {
10259
10259
  "absolutePath": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
10260
10260
  "file": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
10261
- "id": 35122,
10261
+ "id": 35141,
10262
10262
  "nameLocation": "-1:-1:-1",
10263
10263
  "nodeType": "ImportDirective",
10264
- "scope": 35443,
10264
+ "scope": 35462,
10265
10265
  "sourceUnit": 1987,
10266
10266
  "src": "129:65:98",
10267
10267
  "symbolAliases": [],
@@ -10270,16 +10270,16 @@
10270
10270
  {
10271
10271
  "absolutePath": "project:/contracts/interfaces/superfluid/ISuperfluid.sol",
10272
10272
  "file": "../interfaces/superfluid/ISuperfluid.sol",
10273
- "id": 35125,
10273
+ "id": 35144,
10274
10274
  "nameLocation": "-1:-1:-1",
10275
10275
  "nodeType": "ImportDirective",
10276
- "scope": 35443,
10276
+ "scope": 35462,
10277
10277
  "sourceUnit": 18325,
10278
10278
  "src": "195:87:98",
10279
10279
  "symbolAliases": [
10280
10280
  {
10281
10281
  "foreign": {
10282
- "id": 35123,
10282
+ "id": 35142,
10283
10283
  "name": "ISuperToken",
10284
10284
  "nodeType": "Identifier",
10285
10285
  "overloadedDeclarations": [],
@@ -10291,7 +10291,7 @@
10291
10291
  },
10292
10292
  {
10293
10293
  "foreign": {
10294
- "id": 35124,
10294
+ "id": 35143,
10295
10295
  "name": "IERC20",
10296
10296
  "nodeType": "Identifier",
10297
10297
  "overloadedDeclarations": [],
@@ -10309,13 +10309,13 @@
10309
10309
  "baseContracts": [
10310
10310
  {
10311
10311
  "baseName": {
10312
- "id": 35127,
10312
+ "id": 35146,
10313
10313
  "name": "AccessControlEnumerable",
10314
10314
  "nodeType": "IdentifierPath",
10315
10315
  "referencedDeclaration": 433,
10316
10316
  "src": "671:23:98"
10317
10317
  },
10318
- "id": 35128,
10318
+ "id": 35147,
10319
10319
  "nodeType": "InheritanceSpecifier",
10320
10320
  "src": "671:23:98"
10321
10321
  }
@@ -10324,15 +10324,15 @@
10324
10324
  "contractDependencies": [],
10325
10325
  "contractKind": "contract",
10326
10326
  "documentation": {
10327
- "id": 35126,
10327
+ "id": 35145,
10328
10328
  "nodeType": "StructuredDocumentation",
10329
10329
  "src": "284:360:98",
10330
10330
  "text": " @title Super upgrader contract\n @author Superfluid\n NOTE:\n - User would need to first SuperToken.approve the `SuperUpgrader` for the job.\n - Using access control to allow multiple backend agent to upgrade tokens for the users\n - Risk taken by the user is that the underlying tokens are converted to the Super Tokens by the upgrader agents."
10331
10331
  },
10332
10332
  "fullyImplemented": true,
10333
- "id": 35442,
10333
+ "id": 35461,
10334
10334
  "linearizedBaseContracts": [
10335
- 35442,
10335
+ 35461,
10336
10336
  433,
10337
10337
  308,
10338
10338
  2840,
@@ -10347,9 +10347,9 @@
10347
10347
  "nodes": [
10348
10348
  {
10349
10349
  "global": false,
10350
- "id": 35132,
10350
+ "id": 35151,
10351
10351
  "libraryName": {
10352
- "id": 35129,
10352
+ "id": 35148,
10353
10353
  "name": "SafeERC20",
10354
10354
  "nodeType": "IdentifierPath",
10355
10355
  "referencedDeclaration": 1986,
@@ -10358,10 +10358,10 @@
10358
10358
  "nodeType": "UsingForDirective",
10359
10359
  "src": "702:27:98",
10360
10360
  "typeName": {
10361
- "id": 35131,
10361
+ "id": 35150,
10362
10362
  "nodeType": "UserDefinedTypeName",
10363
10363
  "pathNode": {
10364
- "id": 35130,
10364
+ "id": 35149,
10365
10365
  "name": "IERC20",
10366
10366
  "nodeType": "IdentifierPath",
10367
10367
  "referencedDeclaration": 1520,
@@ -10378,12 +10378,12 @@
10378
10378
  {
10379
10379
  "constant": true,
10380
10380
  "functionSelector": "92c2becc",
10381
- "id": 35137,
10381
+ "id": 35156,
10382
10382
  "mutability": "constant",
10383
10383
  "name": "BACKEND_ROLE",
10384
10384
  "nameLocation": "815:12:98",
10385
10385
  "nodeType": "VariableDeclaration",
10386
- "scope": 35442,
10386
+ "scope": 35461,
10387
10387
  "src": "791:64:98",
10388
10388
  "stateVariable": true,
10389
10389
  "storageLocation": "default",
@@ -10392,7 +10392,7 @@
10392
10392
  "typeString": "bytes32"
10393
10393
  },
10394
10394
  "typeName": {
10395
- "id": 35133,
10395
+ "id": 35152,
10396
10396
  "name": "bytes32",
10397
10397
  "nodeType": "ElementaryTypeName",
10398
10398
  "src": "791:7:98",
@@ -10405,7 +10405,7 @@
10405
10405
  "arguments": [
10406
10406
  {
10407
10407
  "hexValue": "4241434b454e445f524f4c45",
10408
- "id": 35135,
10408
+ "id": 35154,
10409
10409
  "isConstant": false,
10410
10410
  "isLValue": false,
10411
10411
  "isPure": true,
@@ -10427,7 +10427,7 @@
10427
10427
  "typeString": "literal_string \"BACKEND_ROLE\""
10428
10428
  }
10429
10429
  ],
10430
- "id": 35134,
10430
+ "id": 35153,
10431
10431
  "name": "keccak256",
10432
10432
  "nodeType": "Identifier",
10433
10433
  "overloadedDeclarations": [],
@@ -10438,7 +10438,7 @@
10438
10438
  "typeString": "function (bytes memory) pure returns (bytes32)"
10439
10439
  }
10440
10440
  },
10441
- "id": 35136,
10441
+ "id": 35155,
10442
10442
  "isConstant": false,
10443
10443
  "isLValue": false,
10444
10444
  "isPure": true,
@@ -10458,23 +10458,23 @@
10458
10458
  {
10459
10459
  "anonymous": false,
10460
10460
  "eventSelector": "d07f586f18c37aa8ec13ebc5523e50304e2aa7711505bfa7242fcb7152eaee25",
10461
- "id": 35141,
10461
+ "id": 35160,
10462
10462
  "name": "OptoutAutoUpgrade",
10463
10463
  "nameLocation": "868:17:98",
10464
10464
  "nodeType": "EventDefinition",
10465
10465
  "parameters": {
10466
- "id": 35140,
10466
+ "id": 35159,
10467
10467
  "nodeType": "ParameterList",
10468
10468
  "parameters": [
10469
10469
  {
10470
10470
  "constant": false,
10471
- "id": 35139,
10471
+ "id": 35158,
10472
10472
  "indexed": true,
10473
10473
  "mutability": "mutable",
10474
10474
  "name": "account",
10475
10475
  "nameLocation": "902:7:98",
10476
10476
  "nodeType": "VariableDeclaration",
10477
- "scope": 35141,
10477
+ "scope": 35160,
10478
10478
  "src": "886:23:98",
10479
10479
  "stateVariable": false,
10480
10480
  "storageLocation": "default",
@@ -10483,7 +10483,7 @@
10483
10483
  "typeString": "address"
10484
10484
  },
10485
10485
  "typeName": {
10486
- "id": 35138,
10486
+ "id": 35157,
10487
10487
  "name": "address",
10488
10488
  "nodeType": "ElementaryTypeName",
10489
10489
  "src": "886:7:98",
@@ -10503,23 +10503,23 @@
10503
10503
  {
10504
10504
  "anonymous": false,
10505
10505
  "eventSelector": "de802370a7a9557e8d50bffe30a1bbd3d327beb1964088485a5465325bc5fb7a",
10506
- "id": 35145,
10506
+ "id": 35164,
10507
10507
  "name": "OptinAutoUpgrade",
10508
10508
  "nameLocation": "922:16:98",
10509
10509
  "nodeType": "EventDefinition",
10510
10510
  "parameters": {
10511
- "id": 35144,
10511
+ "id": 35163,
10512
10512
  "nodeType": "ParameterList",
10513
10513
  "parameters": [
10514
10514
  {
10515
10515
  "constant": false,
10516
- "id": 35143,
10516
+ "id": 35162,
10517
10517
  "indexed": true,
10518
10518
  "mutability": "mutable",
10519
10519
  "name": "account",
10520
10520
  "nameLocation": "955:7:98",
10521
10521
  "nodeType": "VariableDeclaration",
10522
- "scope": 35145,
10522
+ "scope": 35164,
10523
10523
  "src": "939:23:98",
10524
10524
  "stateVariable": false,
10525
10525
  "storageLocation": "default",
@@ -10528,7 +10528,7 @@
10528
10528
  "typeString": "address"
10529
10529
  },
10530
10530
  "typeName": {
10531
- "id": 35142,
10531
+ "id": 35161,
10532
10532
  "name": "address",
10533
10533
  "nodeType": "ElementaryTypeName",
10534
10534
  "src": "939:7:98",
@@ -10547,12 +10547,12 @@
10547
10547
  },
10548
10548
  {
10549
10549
  "constant": false,
10550
- "id": 35149,
10550
+ "id": 35168,
10551
10551
  "mutability": "mutable",
10552
10552
  "name": "_optout",
10553
10553
  "nameLocation": "1004:7:98",
10554
10554
  "nodeType": "VariableDeclaration",
10555
- "scope": 35442,
10555
+ "scope": 35461,
10556
10556
  "src": "970:41:98",
10557
10557
  "stateVariable": true,
10558
10558
  "storageLocation": "default",
@@ -10561,9 +10561,9 @@
10561
10561
  "typeString": "mapping(address => bool)"
10562
10562
  },
10563
10563
  "typeName": {
10564
- "id": 35148,
10564
+ "id": 35167,
10565
10565
  "keyType": {
10566
- "id": 35146,
10566
+ "id": 35165,
10567
10567
  "name": "address",
10568
10568
  "nodeType": "ElementaryTypeName",
10569
10569
  "src": "978:7:98",
@@ -10579,7 +10579,7 @@
10579
10579
  "typeString": "mapping(address => bool)"
10580
10580
  },
10581
10581
  "valueType": {
10582
- "id": 35147,
10582
+ "id": 35166,
10583
10583
  "name": "bool",
10584
10584
  "nodeType": "ElementaryTypeName",
10585
10585
  "src": "989:4:98",
@@ -10593,7 +10593,7 @@
10593
10593
  },
10594
10594
  {
10595
10595
  "body": {
10596
- "id": 35204,
10596
+ "id": 35223,
10597
10597
  "nodeType": "Block",
10598
10598
  "src": "1079:321:98",
10599
10599
  "statements": [
@@ -10605,17 +10605,17 @@
10605
10605
  "typeIdentifier": "t_address",
10606
10606
  "typeString": "address"
10607
10607
  },
10608
- "id": 35163,
10608
+ "id": 35182,
10609
10609
  "isConstant": false,
10610
10610
  "isLValue": false,
10611
10611
  "isPure": false,
10612
10612
  "lValueRequested": false,
10613
10613
  "leftExpression": {
10614
- "id": 35158,
10614
+ "id": 35177,
10615
10615
  "name": "adminRole",
10616
10616
  "nodeType": "Identifier",
10617
10617
  "overloadedDeclarations": [],
10618
- "referencedDeclaration": 35151,
10618
+ "referencedDeclaration": 35170,
10619
10619
  "src": "1097:9:98",
10620
10620
  "typeDescriptions": {
10621
10621
  "typeIdentifier": "t_address",
@@ -10628,7 +10628,7 @@
10628
10628
  "arguments": [
10629
10629
  {
10630
10630
  "hexValue": "30",
10631
- "id": 35161,
10631
+ "id": 35180,
10632
10632
  "isConstant": false,
10633
10633
  "isLValue": false,
10634
10634
  "isPure": true,
@@ -10650,7 +10650,7 @@
10650
10650
  "typeString": "int_const 0"
10651
10651
  }
10652
10652
  ],
10653
- "id": 35160,
10653
+ "id": 35179,
10654
10654
  "isConstant": false,
10655
10655
  "isLValue": false,
10656
10656
  "isPure": true,
@@ -10662,14 +10662,14 @@
10662
10662
  "typeString": "type(address)"
10663
10663
  },
10664
10664
  "typeName": {
10665
- "id": 35159,
10665
+ "id": 35178,
10666
10666
  "name": "address",
10667
10667
  "nodeType": "ElementaryTypeName",
10668
10668
  "src": "1110:7:98",
10669
10669
  "typeDescriptions": {}
10670
10670
  }
10671
10671
  },
10672
- "id": 35162,
10672
+ "id": 35181,
10673
10673
  "isConstant": false,
10674
10674
  "isLValue": false,
10675
10675
  "isPure": true,
@@ -10692,7 +10692,7 @@
10692
10692
  },
10693
10693
  {
10694
10694
  "hexValue": "61646d696e526f6c6520697320656d707479",
10695
- "id": 35164,
10695
+ "id": 35183,
10696
10696
  "isConstant": false,
10697
10697
  "isLValue": false,
10698
10698
  "isPure": true,
@@ -10718,7 +10718,7 @@
10718
10718
  "typeString": "literal_string \"adminRole is empty\""
10719
10719
  }
10720
10720
  ],
10721
- "id": 35157,
10721
+ "id": 35176,
10722
10722
  "name": "require",
10723
10723
  "nodeType": "Identifier",
10724
10724
  "overloadedDeclarations": [
@@ -10732,7 +10732,7 @@
10732
10732
  "typeString": "function (bool,string memory) pure"
10733
10733
  }
10734
10734
  },
10735
- "id": 35165,
10735
+ "id": 35184,
10736
10736
  "isConstant": false,
10737
10737
  "isLValue": false,
10738
10738
  "isPure": false,
@@ -10747,7 +10747,7 @@
10747
10747
  "typeString": "tuple()"
10748
10748
  }
10749
10749
  },
10750
- "id": 35166,
10750
+ "id": 35185,
10751
10751
  "nodeType": "ExpressionStatement",
10752
10752
  "src": "1089:54:98"
10753
10753
  },
@@ -10755,7 +10755,7 @@
10755
10755
  "expression": {
10756
10756
  "arguments": [
10757
10757
  {
10758
- "id": 35168,
10758
+ "id": 35187,
10759
10759
  "name": "DEFAULT_ADMIN_ROLE",
10760
10760
  "nodeType": "Identifier",
10761
10761
  "overloadedDeclarations": [],
@@ -10767,11 +10767,11 @@
10767
10767
  }
10768
10768
  },
10769
10769
  {
10770
- "id": 35169,
10770
+ "id": 35188,
10771
10771
  "name": "adminRole",
10772
10772
  "nodeType": "Identifier",
10773
10773
  "overloadedDeclarations": [],
10774
- "referencedDeclaration": 35151,
10774
+ "referencedDeclaration": 35170,
10775
10775
  "src": "1184:9:98",
10776
10776
  "typeDescriptions": {
10777
10777
  "typeIdentifier": "t_address",
@@ -10790,7 +10790,7 @@
10790
10790
  "typeString": "address"
10791
10791
  }
10792
10792
  ],
10793
- "id": 35167,
10793
+ "id": 35186,
10794
10794
  "name": "_setupRole",
10795
10795
  "nodeType": "Identifier",
10796
10796
  "overloadedDeclarations": [],
@@ -10801,7 +10801,7 @@
10801
10801
  "typeString": "function (bytes32,address)"
10802
10802
  }
10803
10803
  },
10804
- "id": 35170,
10804
+ "id": 35189,
10805
10805
  "isConstant": false,
10806
10806
  "isLValue": false,
10807
10807
  "isPure": false,
@@ -10816,13 +10816,13 @@
10816
10816
  "typeString": "tuple()"
10817
10817
  }
10818
10818
  },
10819
- "id": 35171,
10819
+ "id": 35190,
10820
10820
  "nodeType": "ExpressionStatement",
10821
10821
  "src": "1153:41:98"
10822
10822
  },
10823
10823
  {
10824
10824
  "body": {
10825
- "id": 35202,
10825
+ "id": 35221,
10826
10826
  "nodeType": "Block",
10827
10827
  "src": "1253:141:98",
10828
10828
  "statements": [
@@ -10834,31 +10834,31 @@
10834
10834
  "typeIdentifier": "t_address",
10835
10835
  "typeString": "address"
10836
10836
  },
10837
- "id": 35191,
10837
+ "id": 35210,
10838
10838
  "isConstant": false,
10839
10839
  "isLValue": false,
10840
10840
  "isPure": false,
10841
10841
  "lValueRequested": false,
10842
10842
  "leftExpression": {
10843
10843
  "baseExpression": {
10844
- "id": 35184,
10844
+ "id": 35203,
10845
10845
  "name": "backendAddr",
10846
10846
  "nodeType": "Identifier",
10847
10847
  "overloadedDeclarations": [],
10848
- "referencedDeclaration": 35154,
10848
+ "referencedDeclaration": 35173,
10849
10849
  "src": "1275:11:98",
10850
10850
  "typeDescriptions": {
10851
10851
  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
10852
10852
  "typeString": "address[] memory"
10853
10853
  }
10854
10854
  },
10855
- "id": 35186,
10855
+ "id": 35205,
10856
10856
  "indexExpression": {
10857
- "id": 35185,
10857
+ "id": 35204,
10858
10858
  "name": "i",
10859
10859
  "nodeType": "Identifier",
10860
10860
  "overloadedDeclarations": [],
10861
- "referencedDeclaration": 35173,
10861
+ "referencedDeclaration": 35192,
10862
10862
  "src": "1287:1:98",
10863
10863
  "typeDescriptions": {
10864
10864
  "typeIdentifier": "t_uint256",
@@ -10882,7 +10882,7 @@
10882
10882
  "arguments": [
10883
10883
  {
10884
10884
  "hexValue": "30",
10885
- "id": 35189,
10885
+ "id": 35208,
10886
10886
  "isConstant": false,
10887
10887
  "isLValue": false,
10888
10888
  "isPure": true,
@@ -10904,7 +10904,7 @@
10904
10904
  "typeString": "int_const 0"
10905
10905
  }
10906
10906
  ],
10907
- "id": 35188,
10907
+ "id": 35207,
10908
10908
  "isConstant": false,
10909
10909
  "isLValue": false,
10910
10910
  "isPure": true,
@@ -10916,14 +10916,14 @@
10916
10916
  "typeString": "type(address)"
10917
10917
  },
10918
10918
  "typeName": {
10919
- "id": 35187,
10919
+ "id": 35206,
10920
10920
  "name": "address",
10921
10921
  "nodeType": "ElementaryTypeName",
10922
10922
  "src": "1293:7:98",
10923
10923
  "typeDescriptions": {}
10924
10924
  }
10925
10925
  },
10926
- "id": 35190,
10926
+ "id": 35209,
10927
10927
  "isConstant": false,
10928
10928
  "isLValue": false,
10929
10929
  "isPure": true,
@@ -10946,7 +10946,7 @@
10946
10946
  },
10947
10947
  {
10948
10948
  "hexValue": "6261636b656e642063616e2774206265207a65726f",
10949
- "id": 35192,
10949
+ "id": 35211,
10950
10950
  "isConstant": false,
10951
10951
  "isLValue": false,
10952
10952
  "isPure": true,
@@ -10972,7 +10972,7 @@
10972
10972
  "typeString": "literal_string \"backend can't be zero\""
10973
10973
  }
10974
10974
  ],
10975
- "id": 35183,
10975
+ "id": 35202,
10976
10976
  "name": "require",
10977
10977
  "nodeType": "Identifier",
10978
10978
  "overloadedDeclarations": [
@@ -10986,7 +10986,7 @@
10986
10986
  "typeString": "function (bool,string memory) pure"
10987
10987
  }
10988
10988
  },
10989
- "id": 35193,
10989
+ "id": 35212,
10990
10990
  "isConstant": false,
10991
10991
  "isLValue": false,
10992
10992
  "isPure": false,
@@ -11001,7 +11001,7 @@
11001
11001
  "typeString": "tuple()"
11002
11002
  }
11003
11003
  },
11004
- "id": 35194,
11004
+ "id": 35213,
11005
11005
  "nodeType": "ExpressionStatement",
11006
11006
  "src": "1267:62:98"
11007
11007
  },
@@ -11009,11 +11009,11 @@
11009
11009
  "expression": {
11010
11010
  "arguments": [
11011
11011
  {
11012
- "id": 35196,
11012
+ "id": 35215,
11013
11013
  "name": "BACKEND_ROLE",
11014
11014
  "nodeType": "Identifier",
11015
11015
  "overloadedDeclarations": [],
11016
- "referencedDeclaration": 35137,
11016
+ "referencedDeclaration": 35156,
11017
11017
  "src": "1354:12:98",
11018
11018
  "typeDescriptions": {
11019
11019
  "typeIdentifier": "t_bytes32",
@@ -11022,24 +11022,24 @@
11022
11022
  },
11023
11023
  {
11024
11024
  "baseExpression": {
11025
- "id": 35197,
11025
+ "id": 35216,
11026
11026
  "name": "backendAddr",
11027
11027
  "nodeType": "Identifier",
11028
11028
  "overloadedDeclarations": [],
11029
- "referencedDeclaration": 35154,
11029
+ "referencedDeclaration": 35173,
11030
11030
  "src": "1368:11:98",
11031
11031
  "typeDescriptions": {
11032
11032
  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
11033
11033
  "typeString": "address[] memory"
11034
11034
  }
11035
11035
  },
11036
- "id": 35199,
11036
+ "id": 35218,
11037
11037
  "indexExpression": {
11038
- "id": 35198,
11038
+ "id": 35217,
11039
11039
  "name": "i",
11040
11040
  "nodeType": "Identifier",
11041
11041
  "overloadedDeclarations": [],
11042
- "referencedDeclaration": 35173,
11042
+ "referencedDeclaration": 35192,
11043
11043
  "src": "1380:1:98",
11044
11044
  "typeDescriptions": {
11045
11045
  "typeIdentifier": "t_uint256",
@@ -11069,7 +11069,7 @@
11069
11069
  "typeString": "address"
11070
11070
  }
11071
11071
  ],
11072
- "id": 35195,
11072
+ "id": 35214,
11073
11073
  "name": "_setupRole",
11074
11074
  "nodeType": "Identifier",
11075
11075
  "overloadedDeclarations": [],
@@ -11080,7 +11080,7 @@
11080
11080
  "typeString": "function (bytes32,address)"
11081
11081
  }
11082
11082
  },
11083
- "id": 35200,
11083
+ "id": 35219,
11084
11084
  "isConstant": false,
11085
11085
  "isLValue": false,
11086
11086
  "isPure": false,
@@ -11095,7 +11095,7 @@
11095
11095
  "typeString": "tuple()"
11096
11096
  }
11097
11097
  },
11098
- "id": 35201,
11098
+ "id": 35220,
11099
11099
  "nodeType": "ExpressionStatement",
11100
11100
  "src": "1343:40:98"
11101
11101
  }
@@ -11106,17 +11106,17 @@
11106
11106
  "typeIdentifier": "t_uint256",
11107
11107
  "typeString": "uint256"
11108
11108
  },
11109
- "id": 35179,
11109
+ "id": 35198,
11110
11110
  "isConstant": false,
11111
11111
  "isLValue": false,
11112
11112
  "isPure": false,
11113
11113
  "lValueRequested": false,
11114
11114
  "leftExpression": {
11115
- "id": 35176,
11115
+ "id": 35195,
11116
11116
  "name": "i",
11117
11117
  "nodeType": "Identifier",
11118
11118
  "overloadedDeclarations": [],
11119
- "referencedDeclaration": 35173,
11119
+ "referencedDeclaration": 35192,
11120
11120
  "src": "1224:1:98",
11121
11121
  "typeDescriptions": {
11122
11122
  "typeIdentifier": "t_uint256",
@@ -11127,18 +11127,18 @@
11127
11127
  "operator": "<",
11128
11128
  "rightExpression": {
11129
11129
  "expression": {
11130
- "id": 35177,
11130
+ "id": 35196,
11131
11131
  "name": "backendAddr",
11132
11132
  "nodeType": "Identifier",
11133
11133
  "overloadedDeclarations": [],
11134
- "referencedDeclaration": 35154,
11134
+ "referencedDeclaration": 35173,
11135
11135
  "src": "1228:11:98",
11136
11136
  "typeDescriptions": {
11137
11137
  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
11138
11138
  "typeString": "address[] memory"
11139
11139
  }
11140
11140
  },
11141
- "id": 35178,
11141
+ "id": 35197,
11142
11142
  "isConstant": false,
11143
11143
  "isLValue": false,
11144
11144
  "isPure": false,
@@ -11157,20 +11157,20 @@
11157
11157
  "typeString": "bool"
11158
11158
  }
11159
11159
  },
11160
- "id": 35203,
11160
+ "id": 35222,
11161
11161
  "initializationExpression": {
11162
11162
  "assignments": [
11163
- 35173
11163
+ 35192
11164
11164
  ],
11165
11165
  "declarations": [
11166
11166
  {
11167
11167
  "constant": false,
11168
- "id": 35173,
11168
+ "id": 35192,
11169
11169
  "mutability": "mutable",
11170
11170
  "name": "i",
11171
11171
  "nameLocation": "1217:1:98",
11172
11172
  "nodeType": "VariableDeclaration",
11173
- "scope": 35203,
11173
+ "scope": 35222,
11174
11174
  "src": "1209:9:98",
11175
11175
  "stateVariable": false,
11176
11176
  "storageLocation": "default",
@@ -11179,7 +11179,7 @@
11179
11179
  "typeString": "uint256"
11180
11180
  },
11181
11181
  "typeName": {
11182
- "id": 35172,
11182
+ "id": 35191,
11183
11183
  "name": "uint256",
11184
11184
  "nodeType": "ElementaryTypeName",
11185
11185
  "src": "1209:7:98",
@@ -11191,10 +11191,10 @@
11191
11191
  "visibility": "internal"
11192
11192
  }
11193
11193
  ],
11194
- "id": 35175,
11194
+ "id": 35194,
11195
11195
  "initialValue": {
11196
11196
  "hexValue": "30",
11197
- "id": 35174,
11197
+ "id": 35193,
11198
11198
  "isConstant": false,
11199
11199
  "isLValue": false,
11200
11200
  "isPure": true,
@@ -11213,7 +11213,7 @@
11213
11213
  },
11214
11214
  "loopExpression": {
11215
11215
  "expression": {
11216
- "id": 35181,
11216
+ "id": 35200,
11217
11217
  "isConstant": false,
11218
11218
  "isLValue": false,
11219
11219
  "isPure": false,
@@ -11223,11 +11223,11 @@
11223
11223
  "prefix": true,
11224
11224
  "src": "1248:3:98",
11225
11225
  "subExpression": {
11226
- "id": 35180,
11226
+ "id": 35199,
11227
11227
  "name": "i",
11228
11228
  "nodeType": "Identifier",
11229
11229
  "overloadedDeclarations": [],
11230
- "referencedDeclaration": 35173,
11230
+ "referencedDeclaration": 35192,
11231
11231
  "src": "1250:1:98",
11232
11232
  "typeDescriptions": {
11233
11233
  "typeIdentifier": "t_uint256",
@@ -11239,7 +11239,7 @@
11239
11239
  "typeString": "uint256"
11240
11240
  }
11241
11241
  },
11242
- "id": 35182,
11242
+ "id": 35201,
11243
11243
  "nodeType": "ExpressionStatement",
11244
11244
  "src": "1248:3:98"
11245
11245
  },
@@ -11248,7 +11248,7 @@
11248
11248
  }
11249
11249
  ]
11250
11250
  },
11251
- "id": 35205,
11251
+ "id": 35224,
11252
11252
  "implemented": true,
11253
11253
  "kind": "constructor",
11254
11254
  "modifiers": [],
@@ -11256,17 +11256,17 @@
11256
11256
  "nameLocation": "-1:-1:-1",
11257
11257
  "nodeType": "FunctionDefinition",
11258
11258
  "parameters": {
11259
- "id": 35155,
11259
+ "id": 35174,
11260
11260
  "nodeType": "ParameterList",
11261
11261
  "parameters": [
11262
11262
  {
11263
11263
  "constant": false,
11264
- "id": 35151,
11264
+ "id": 35170,
11265
11265
  "mutability": "mutable",
11266
11266
  "name": "adminRole",
11267
11267
  "nameLocation": "1038:9:98",
11268
11268
  "nodeType": "VariableDeclaration",
11269
- "scope": 35205,
11269
+ "scope": 35224,
11270
11270
  "src": "1030:17:98",
11271
11271
  "stateVariable": false,
11272
11272
  "storageLocation": "default",
@@ -11275,7 +11275,7 @@
11275
11275
  "typeString": "address"
11276
11276
  },
11277
11277
  "typeName": {
11278
- "id": 35150,
11278
+ "id": 35169,
11279
11279
  "name": "address",
11280
11280
  "nodeType": "ElementaryTypeName",
11281
11281
  "src": "1030:7:98",
@@ -11289,12 +11289,12 @@
11289
11289
  },
11290
11290
  {
11291
11291
  "constant": false,
11292
- "id": 35154,
11292
+ "id": 35173,
11293
11293
  "mutability": "mutable",
11294
11294
  "name": "backendAddr",
11295
11295
  "nameLocation": "1066:11:98",
11296
11296
  "nodeType": "VariableDeclaration",
11297
- "scope": 35205,
11297
+ "scope": 35224,
11298
11298
  "src": "1049:28:98",
11299
11299
  "stateVariable": false,
11300
11300
  "storageLocation": "memory",
@@ -11304,7 +11304,7 @@
11304
11304
  },
11305
11305
  "typeName": {
11306
11306
  "baseType": {
11307
- "id": 35152,
11307
+ "id": 35171,
11308
11308
  "name": "address",
11309
11309
  "nodeType": "ElementaryTypeName",
11310
11310
  "src": "1049:7:98",
@@ -11314,7 +11314,7 @@
11314
11314
  "typeString": "address"
11315
11315
  }
11316
11316
  },
11317
- "id": 35153,
11317
+ "id": 35172,
11318
11318
  "nodeType": "ArrayTypeName",
11319
11319
  "src": "1049:9:98",
11320
11320
  "typeDescriptions": {
@@ -11328,12 +11328,12 @@
11328
11328
  "src": "1029:49:98"
11329
11329
  },
11330
11330
  "returnParameters": {
11331
- "id": 35156,
11331
+ "id": 35175,
11332
11332
  "nodeType": "ParameterList",
11333
11333
  "parameters": [],
11334
11334
  "src": "1079:0:98"
11335
11335
  },
11336
- "scope": 35442,
11336
+ "scope": 35461,
11337
11337
  "src": "1018:382:98",
11338
11338
  "stateMutability": "nonpayable",
11339
11339
  "virtual": false,
@@ -11341,9 +11341,9 @@
11341
11341
  },
11342
11342
  {
11343
11343
  "body": {
11344
- "id": 35311,
11344
+ "id": 35330,
11345
11345
  "nodeType": "Block",
11346
- "src": "1848:765:98",
11346
+ "src": "1847:764:98",
11347
11347
  "statements": [
11348
11348
  {
11349
11349
  "expression": {
@@ -11353,7 +11353,7 @@
11353
11353
  "typeIdentifier": "t_bool",
11354
11354
  "typeString": "bool"
11355
11355
  },
11356
- "id": 35231,
11356
+ "id": 35250,
11357
11357
  "isConstant": false,
11358
11358
  "isLValue": false,
11359
11359
  "isPure": false,
@@ -11363,32 +11363,32 @@
11363
11363
  "typeIdentifier": "t_address",
11364
11364
  "typeString": "address"
11365
11365
  },
11366
- "id": 35219,
11366
+ "id": 35238,
11367
11367
  "isConstant": false,
11368
11368
  "isLValue": false,
11369
11369
  "isPure": false,
11370
11370
  "lValueRequested": false,
11371
11371
  "leftExpression": {
11372
11372
  "expression": {
11373
- "id": 35216,
11373
+ "id": 35235,
11374
11374
  "name": "msg",
11375
11375
  "nodeType": "Identifier",
11376
11376
  "overloadedDeclarations": [],
11377
11377
  "referencedDeclaration": 4294967281,
11378
- "src": "1866:3:98",
11378
+ "src": "1865:3:98",
11379
11379
  "typeDescriptions": {
11380
11380
  "typeIdentifier": "t_magic_message",
11381
11381
  "typeString": "msg"
11382
11382
  }
11383
11383
  },
11384
- "id": 35217,
11384
+ "id": 35236,
11385
11385
  "isConstant": false,
11386
11386
  "isLValue": false,
11387
11387
  "isPure": false,
11388
11388
  "lValueRequested": false,
11389
11389
  "memberName": "sender",
11390
11390
  "nodeType": "MemberAccess",
11391
- "src": "1866:10:98",
11391
+ "src": "1865:10:98",
11392
11392
  "typeDescriptions": {
11393
11393
  "typeIdentifier": "t_address",
11394
11394
  "typeString": "address"
@@ -11397,18 +11397,18 @@
11397
11397
  "nodeType": "BinaryOperation",
11398
11398
  "operator": "==",
11399
11399
  "rightExpression": {
11400
- "id": 35218,
11400
+ "id": 35237,
11401
11401
  "name": "account",
11402
11402
  "nodeType": "Identifier",
11403
11403
  "overloadedDeclarations": [],
11404
- "referencedDeclaration": 35210,
11405
- "src": "1880:7:98",
11404
+ "referencedDeclaration": 35229,
11405
+ "src": "1879:7:98",
11406
11406
  "typeDescriptions": {
11407
11407
  "typeIdentifier": "t_address",
11408
11408
  "typeString": "address"
11409
11409
  }
11410
11410
  },
11411
- "src": "1866:21:98",
11411
+ "src": "1865:21:98",
11412
11412
  "typeDescriptions": {
11413
11413
  "typeIdentifier": "t_bool",
11414
11414
  "typeString": "bool"
@@ -11423,7 +11423,7 @@
11423
11423
  "typeIdentifier": "t_bool",
11424
11424
  "typeString": "bool"
11425
11425
  },
11426
- "id": 35229,
11426
+ "id": 35248,
11427
11427
  "isConstant": false,
11428
11428
  "isLValue": false,
11429
11429
  "isPure": false,
@@ -11431,12 +11431,12 @@
11431
11431
  "leftExpression": {
11432
11432
  "arguments": [
11433
11433
  {
11434
- "id": 35221,
11434
+ "id": 35240,
11435
11435
  "name": "BACKEND_ROLE",
11436
11436
  "nodeType": "Identifier",
11437
11437
  "overloadedDeclarations": [],
11438
- "referencedDeclaration": 35137,
11439
- "src": "1913:12:98",
11438
+ "referencedDeclaration": 35156,
11439
+ "src": "1911:12:98",
11440
11440
  "typeDescriptions": {
11441
11441
  "typeIdentifier": "t_bytes32",
11442
11442
  "typeString": "bytes32"
@@ -11444,25 +11444,25 @@
11444
11444
  },
11445
11445
  {
11446
11446
  "expression": {
11447
- "id": 35222,
11447
+ "id": 35241,
11448
11448
  "name": "msg",
11449
11449
  "nodeType": "Identifier",
11450
11450
  "overloadedDeclarations": [],
11451
11451
  "referencedDeclaration": 4294967281,
11452
- "src": "1927:3:98",
11452
+ "src": "1925:3:98",
11453
11453
  "typeDescriptions": {
11454
11454
  "typeIdentifier": "t_magic_message",
11455
11455
  "typeString": "msg"
11456
11456
  }
11457
11457
  },
11458
- "id": 35223,
11458
+ "id": 35242,
11459
11459
  "isConstant": false,
11460
11460
  "isLValue": false,
11461
11461
  "isPure": false,
11462
11462
  "lValueRequested": false,
11463
11463
  "memberName": "sender",
11464
11464
  "nodeType": "MemberAccess",
11465
- "src": "1927:10:98",
11465
+ "src": "1925:10:98",
11466
11466
  "typeDescriptions": {
11467
11467
  "typeIdentifier": "t_address",
11468
11468
  "typeString": "address"
@@ -11480,18 +11480,18 @@
11480
11480
  "typeString": "address"
11481
11481
  }
11482
11482
  ],
11483
- "id": 35220,
11483
+ "id": 35239,
11484
11484
  "name": "hasRole",
11485
11485
  "nodeType": "Identifier",
11486
11486
  "overloadedDeclarations": [],
11487
11487
  "referencedDeclaration": 81,
11488
- "src": "1905:7:98",
11488
+ "src": "1903:7:98",
11489
11489
  "typeDescriptions": {
11490
11490
  "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
11491
11491
  "typeString": "function (bytes32,address) view returns (bool)"
11492
11492
  }
11493
11493
  },
11494
- "id": 35224,
11494
+ "id": 35243,
11495
11495
  "isConstant": false,
11496
11496
  "isLValue": false,
11497
11497
  "isPure": false,
@@ -11499,7 +11499,7 @@
11499
11499
  "lValueRequested": false,
11500
11500
  "names": [],
11501
11501
  "nodeType": "FunctionCall",
11502
- "src": "1905:33:98",
11502
+ "src": "1903:33:98",
11503
11503
  "tryCall": false,
11504
11504
  "typeDescriptions": {
11505
11505
  "typeIdentifier": "t_bool",
@@ -11509,7 +11509,7 @@
11509
11509
  "nodeType": "BinaryOperation",
11510
11510
  "operator": "&&",
11511
11511
  "rightExpression": {
11512
- "id": 35228,
11512
+ "id": 35247,
11513
11513
  "isConstant": false,
11514
11514
  "isLValue": false,
11515
11515
  "isPure": false,
@@ -11517,28 +11517,28 @@
11517
11517
  "nodeType": "UnaryOperation",
11518
11518
  "operator": "!",
11519
11519
  "prefix": true,
11520
- "src": "1954:17:98",
11520
+ "src": "1952:17:98",
11521
11521
  "subExpression": {
11522
11522
  "baseExpression": {
11523
- "id": 35225,
11523
+ "id": 35244,
11524
11524
  "name": "_optout",
11525
11525
  "nodeType": "Identifier",
11526
11526
  "overloadedDeclarations": [],
11527
- "referencedDeclaration": 35149,
11528
- "src": "1955:7:98",
11527
+ "referencedDeclaration": 35168,
11528
+ "src": "1953:7:98",
11529
11529
  "typeDescriptions": {
11530
11530
  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
11531
11531
  "typeString": "mapping(address => bool)"
11532
11532
  }
11533
11533
  },
11534
- "id": 35227,
11534
+ "id": 35246,
11535
11535
  "indexExpression": {
11536
- "id": 35226,
11536
+ "id": 35245,
11537
11537
  "name": "account",
11538
11538
  "nodeType": "Identifier",
11539
11539
  "overloadedDeclarations": [],
11540
- "referencedDeclaration": 35210,
11541
- "src": "1963:7:98",
11540
+ "referencedDeclaration": 35229,
11541
+ "src": "1961:7:98",
11542
11542
  "typeDescriptions": {
11543
11543
  "typeIdentifier": "t_address",
11544
11544
  "typeString": "address"
@@ -11549,7 +11549,7 @@
11549
11549
  "isPure": false,
11550
11550
  "lValueRequested": false,
11551
11551
  "nodeType": "IndexAccess",
11552
- "src": "1955:16:98",
11552
+ "src": "1953:16:98",
11553
11553
  "typeDescriptions": {
11554
11554
  "typeIdentifier": "t_bool",
11555
11555
  "typeString": "bool"
@@ -11560,27 +11560,27 @@
11560
11560
  "typeString": "bool"
11561
11561
  }
11562
11562
  },
11563
- "src": "1905:66:98",
11563
+ "src": "1903:66:98",
11564
11564
  "typeDescriptions": {
11565
11565
  "typeIdentifier": "t_bool",
11566
11566
  "typeString": "bool"
11567
11567
  }
11568
11568
  }
11569
11569
  ],
11570
- "id": 35230,
11570
+ "id": 35249,
11571
11571
  "isConstant": false,
11572
11572
  "isInlineArray": false,
11573
11573
  "isLValue": false,
11574
11574
  "isPure": false,
11575
11575
  "lValueRequested": false,
11576
11576
  "nodeType": "TupleExpression",
11577
- "src": "1904:68:98",
11577
+ "src": "1902:68:98",
11578
11578
  "typeDescriptions": {
11579
11579
  "typeIdentifier": "t_bool",
11580
11580
  "typeString": "bool"
11581
11581
  }
11582
11582
  },
11583
- "src": "1866:106:98",
11583
+ "src": "1865:105:98",
11584
11584
  "typeDescriptions": {
11585
11585
  "typeIdentifier": "t_bool",
11586
11586
  "typeString": "bool"
@@ -11588,14 +11588,14 @@
11588
11588
  },
11589
11589
  {
11590
11590
  "hexValue": "6f7065726174696f6e206e6f7420616c6c6f776564",
11591
- "id": 35232,
11591
+ "id": 35251,
11592
11592
  "isConstant": false,
11593
11593
  "isLValue": false,
11594
11594
  "isPure": true,
11595
11595
  "kind": "string",
11596
11596
  "lValueRequested": false,
11597
11597
  "nodeType": "Literal",
11598
- "src": "1983:23:98",
11598
+ "src": "1981:23:98",
11599
11599
  "typeDescriptions": {
11600
11600
  "typeIdentifier": "t_stringliteral_60a0f15b3532903e39edb01f9d141c956db9da91449f57624c99b7605966d373",
11601
11601
  "typeString": "literal_string \"operation not allowed\""
@@ -11614,7 +11614,7 @@
11614
11614
  "typeString": "literal_string \"operation not allowed\""
11615
11615
  }
11616
11616
  ],
11617
- "id": 35215,
11617
+ "id": 35234,
11618
11618
  "name": "require",
11619
11619
  "nodeType": "Identifier",
11620
11620
  "overloadedDeclarations": [
@@ -11622,13 +11622,13 @@
11622
11622
  4294967278
11623
11623
  ],
11624
11624
  "referencedDeclaration": 4294967278,
11625
- "src": "1858:7:98",
11625
+ "src": "1857:7:98",
11626
11626
  "typeDescriptions": {
11627
11627
  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
11628
11628
  "typeString": "function (bool,string memory) pure"
11629
11629
  }
11630
11630
  },
11631
- "id": 35233,
11631
+ "id": 35252,
11632
11632
  "isConstant": false,
11633
11633
  "isLValue": false,
11634
11634
  "isPure": false,
@@ -11636,31 +11636,31 @@
11636
11636
  "lValueRequested": false,
11637
11637
  "names": [],
11638
11638
  "nodeType": "FunctionCall",
11639
- "src": "1858:149:98",
11639
+ "src": "1857:148:98",
11640
11640
  "tryCall": false,
11641
11641
  "typeDescriptions": {
11642
11642
  "typeIdentifier": "t_tuple$__$",
11643
11643
  "typeString": "tuple()"
11644
11644
  }
11645
11645
  },
11646
- "id": 35234,
11646
+ "id": 35253,
11647
11647
  "nodeType": "ExpressionStatement",
11648
- "src": "1858:149:98"
11648
+ "src": "1857:148:98"
11649
11649
  },
11650
11650
  {
11651
11651
  "assignments": [
11652
- 35237
11652
+ 35256
11653
11653
  ],
11654
11654
  "declarations": [
11655
11655
  {
11656
11656
  "constant": false,
11657
- "id": 35237,
11657
+ "id": 35256,
11658
11658
  "mutability": "mutable",
11659
11659
  "name": "superToken",
11660
- "nameLocation": "2061:10:98",
11660
+ "nameLocation": "2059:10:98",
11661
11661
  "nodeType": "VariableDeclaration",
11662
- "scope": 35311,
11663
- "src": "2049:22:98",
11662
+ "scope": 35330,
11663
+ "src": "2047:22:98",
11664
11664
  "stateVariable": false,
11665
11665
  "storageLocation": "default",
11666
11666
  "typeDescriptions": {
@@ -11668,17 +11668,17 @@
11668
11668
  "typeString": "contract ISuperToken"
11669
11669
  },
11670
11670
  "typeName": {
11671
- "id": 35236,
11671
+ "id": 35255,
11672
11672
  "nodeType": "UserDefinedTypeName",
11673
11673
  "pathNode": {
11674
- "id": 35235,
11674
+ "id": 35254,
11675
11675
  "name": "ISuperToken",
11676
11676
  "nodeType": "IdentifierPath",
11677
11677
  "referencedDeclaration": 17761,
11678
- "src": "2049:11:98"
11678
+ "src": "2047:11:98"
11679
11679
  },
11680
11680
  "referencedDeclaration": 17761,
11681
- "src": "2049:11:98",
11681
+ "src": "2047:11:98",
11682
11682
  "typeDescriptions": {
11683
11683
  "typeIdentifier": "t_contract$_ISuperToken_$17761",
11684
11684
  "typeString": "contract ISuperToken"
@@ -11687,16 +11687,16 @@
11687
11687
  "visibility": "internal"
11688
11688
  }
11689
11689
  ],
11690
- "id": 35241,
11690
+ "id": 35260,
11691
11691
  "initialValue": {
11692
11692
  "arguments": [
11693
11693
  {
11694
- "id": 35239,
11694
+ "id": 35258,
11695
11695
  "name": "superTokenAddr",
11696
11696
  "nodeType": "Identifier",
11697
11697
  "overloadedDeclarations": [],
11698
- "referencedDeclaration": 35208,
11699
- "src": "2086:14:98",
11698
+ "referencedDeclaration": 35227,
11699
+ "src": "2084:14:98",
11700
11700
  "typeDescriptions": {
11701
11701
  "typeIdentifier": "t_address",
11702
11702
  "typeString": "address"
@@ -11710,18 +11710,18 @@
11710
11710
  "typeString": "address"
11711
11711
  }
11712
11712
  ],
11713
- "id": 35238,
11713
+ "id": 35257,
11714
11714
  "name": "ISuperToken",
11715
11715
  "nodeType": "Identifier",
11716
11716
  "overloadedDeclarations": [],
11717
11717
  "referencedDeclaration": 17761,
11718
- "src": "2074:11:98",
11718
+ "src": "2072:11:98",
11719
11719
  "typeDescriptions": {
11720
11720
  "typeIdentifier": "t_type$_t_contract$_ISuperToken_$17761_$",
11721
11721
  "typeString": "type(contract ISuperToken)"
11722
11722
  }
11723
11723
  },
11724
- "id": 35240,
11724
+ "id": 35259,
11725
11725
  "isConstant": false,
11726
11726
  "isLValue": false,
11727
11727
  "isPure": false,
@@ -11729,7 +11729,7 @@
11729
11729
  "lValueRequested": false,
11730
11730
  "names": [],
11731
11731
  "nodeType": "FunctionCall",
11732
- "src": "2074:27:98",
11732
+ "src": "2072:27:98",
11733
11733
  "tryCall": false,
11734
11734
  "typeDescriptions": {
11735
11735
  "typeIdentifier": "t_contract$_ISuperToken_$17761",
@@ -11737,22 +11737,22 @@
11737
11737
  }
11738
11738
  },
11739
11739
  "nodeType": "VariableDeclarationStatement",
11740
- "src": "2049:52:98"
11740
+ "src": "2047:52:98"
11741
11741
  },
11742
11742
  {
11743
11743
  "assignments": [
11744
- 35244
11744
+ 35263
11745
11745
  ],
11746
11746
  "declarations": [
11747
11747
  {
11748
11748
  "constant": false,
11749
- "id": 35244,
11749
+ "id": 35263,
11750
11750
  "mutability": "mutable",
11751
11751
  "name": "token",
11752
- "nameLocation": "2150:5:98",
11752
+ "nameLocation": "2148:5:98",
11753
11753
  "nodeType": "VariableDeclaration",
11754
- "scope": 35311,
11755
- "src": "2143:12:98",
11754
+ "scope": 35330,
11755
+ "src": "2141:12:98",
11756
11756
  "stateVariable": false,
11757
11757
  "storageLocation": "default",
11758
11758
  "typeDescriptions": {
@@ -11760,17 +11760,17 @@
11760
11760
  "typeString": "contract IERC20"
11761
11761
  },
11762
11762
  "typeName": {
11763
- "id": 35243,
11763
+ "id": 35262,
11764
11764
  "nodeType": "UserDefinedTypeName",
11765
11765
  "pathNode": {
11766
- "id": 35242,
11766
+ "id": 35261,
11767
11767
  "name": "IERC20",
11768
11768
  "nodeType": "IdentifierPath",
11769
11769
  "referencedDeclaration": 1520,
11770
- "src": "2143:6:98"
11770
+ "src": "2141:6:98"
11771
11771
  },
11772
11772
  "referencedDeclaration": 1520,
11773
- "src": "2143:6:98",
11773
+ "src": "2141:6:98",
11774
11774
  "typeDescriptions": {
11775
11775
  "typeIdentifier": "t_contract$_IERC20_$1520",
11776
11776
  "typeString": "contract IERC20"
@@ -11779,7 +11779,7 @@
11779
11779
  "visibility": "internal"
11780
11780
  }
11781
11781
  ],
11782
- "id": 35250,
11782
+ "id": 35269,
11783
11783
  "initialValue": {
11784
11784
  "arguments": [
11785
11785
  {
@@ -11787,18 +11787,18 @@
11787
11787
  "expression": {
11788
11788
  "argumentTypes": [],
11789
11789
  "expression": {
11790
- "id": 35246,
11790
+ "id": 35265,
11791
11791
  "name": "superToken",
11792
11792
  "nodeType": "Identifier",
11793
11793
  "overloadedDeclarations": [],
11794
- "referencedDeclaration": 35237,
11795
- "src": "2165:10:98",
11794
+ "referencedDeclaration": 35256,
11795
+ "src": "2163:10:98",
11796
11796
  "typeDescriptions": {
11797
11797
  "typeIdentifier": "t_contract$_ISuperToken_$17761",
11798
11798
  "typeString": "contract ISuperToken"
11799
11799
  }
11800
11800
  },
11801
- "id": 35247,
11801
+ "id": 35266,
11802
11802
  "isConstant": false,
11803
11803
  "isLValue": false,
11804
11804
  "isPure": false,
@@ -11806,13 +11806,13 @@
11806
11806
  "memberName": "getUnderlyingToken",
11807
11807
  "nodeType": "MemberAccess",
11808
11808
  "referencedDeclaration": 17686,
11809
- "src": "2165:29:98",
11809
+ "src": "2163:29:98",
11810
11810
  "typeDescriptions": {
11811
11811
  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
11812
11812
  "typeString": "function () view external returns (address)"
11813
11813
  }
11814
11814
  },
11815
- "id": 35248,
11815
+ "id": 35267,
11816
11816
  "isConstant": false,
11817
11817
  "isLValue": false,
11818
11818
  "isPure": false,
@@ -11820,7 +11820,7 @@
11820
11820
  "lValueRequested": false,
11821
11821
  "names": [],
11822
11822
  "nodeType": "FunctionCall",
11823
- "src": "2165:31:98",
11823
+ "src": "2163:31:98",
11824
11824
  "tryCall": false,
11825
11825
  "typeDescriptions": {
11826
11826
  "typeIdentifier": "t_address",
@@ -11835,18 +11835,18 @@
11835
11835
  "typeString": "address"
11836
11836
  }
11837
11837
  ],
11838
- "id": 35245,
11838
+ "id": 35264,
11839
11839
  "name": "IERC20",
11840
11840
  "nodeType": "Identifier",
11841
11841
  "overloadedDeclarations": [],
11842
11842
  "referencedDeclaration": 1520,
11843
- "src": "2158:6:98",
11843
+ "src": "2156:6:98",
11844
11844
  "typeDescriptions": {
11845
11845
  "typeIdentifier": "t_type$_t_contract$_IERC20_$1520_$",
11846
11846
  "typeString": "type(contract IERC20)"
11847
11847
  }
11848
11848
  },
11849
- "id": 35249,
11849
+ "id": 35268,
11850
11850
  "isConstant": false,
11851
11851
  "isLValue": false,
11852
11852
  "isPure": false,
@@ -11854,7 +11854,7 @@
11854
11854
  "lValueRequested": false,
11855
11855
  "names": [],
11856
11856
  "nodeType": "FunctionCall",
11857
- "src": "2158:39:98",
11857
+ "src": "2156:39:98",
11858
11858
  "tryCall": false,
11859
11859
  "typeDescriptions": {
11860
11860
  "typeIdentifier": "t_contract$_IERC20_$1520",
@@ -11862,22 +11862,22 @@
11862
11862
  }
11863
11863
  },
11864
11864
  "nodeType": "VariableDeclarationStatement",
11865
- "src": "2143:54:98"
11865
+ "src": "2141:54:98"
11866
11866
  },
11867
11867
  {
11868
11868
  "assignments": [
11869
- 35252
11869
+ 35271
11870
11870
  ],
11871
11871
  "declarations": [
11872
11872
  {
11873
11873
  "constant": false,
11874
- "id": 35252,
11874
+ "id": 35271,
11875
11875
  "mutability": "mutable",
11876
11876
  "name": "beforeBalance",
11877
- "nameLocation": "2215:13:98",
11877
+ "nameLocation": "2213:13:98",
11878
11878
  "nodeType": "VariableDeclaration",
11879
- "scope": 35311,
11880
- "src": "2207:21:98",
11879
+ "scope": 35330,
11880
+ "src": "2205:21:98",
11881
11881
  "stateVariable": false,
11882
11882
  "storageLocation": "default",
11883
11883
  "typeDescriptions": {
@@ -11885,10 +11885,10 @@
11885
11885
  "typeString": "uint256"
11886
11886
  },
11887
11887
  "typeName": {
11888
- "id": 35251,
11888
+ "id": 35270,
11889
11889
  "name": "uint256",
11890
11890
  "nodeType": "ElementaryTypeName",
11891
- "src": "2207:7:98",
11891
+ "src": "2205:7:98",
11892
11892
  "typeDescriptions": {
11893
11893
  "typeIdentifier": "t_uint256",
11894
11894
  "typeString": "uint256"
@@ -11897,20 +11897,20 @@
11897
11897
  "visibility": "internal"
11898
11898
  }
11899
11899
  ],
11900
- "id": 35260,
11900
+ "id": 35279,
11901
11901
  "initialValue": {
11902
11902
  "arguments": [
11903
11903
  {
11904
11904
  "arguments": [
11905
11905
  {
11906
- "id": 35257,
11906
+ "id": 35276,
11907
11907
  "name": "this",
11908
11908
  "nodeType": "Identifier",
11909
11909
  "overloadedDeclarations": [],
11910
11910
  "referencedDeclaration": 4294967268,
11911
- "src": "2255:4:98",
11911
+ "src": "2253:4:98",
11912
11912
  "typeDescriptions": {
11913
- "typeIdentifier": "t_contract$_SuperUpgrader_$35442",
11913
+ "typeIdentifier": "t_contract$_SuperUpgrader_$35461",
11914
11914
  "typeString": "contract SuperUpgrader"
11915
11915
  }
11916
11916
  }
@@ -11918,30 +11918,30 @@
11918
11918
  "expression": {
11919
11919
  "argumentTypes": [
11920
11920
  {
11921
- "typeIdentifier": "t_contract$_SuperUpgrader_$35442",
11921
+ "typeIdentifier": "t_contract$_SuperUpgrader_$35461",
11922
11922
  "typeString": "contract SuperUpgrader"
11923
11923
  }
11924
11924
  ],
11925
- "id": 35256,
11925
+ "id": 35275,
11926
11926
  "isConstant": false,
11927
11927
  "isLValue": false,
11928
11928
  "isPure": true,
11929
11929
  "lValueRequested": false,
11930
11930
  "nodeType": "ElementaryTypeNameExpression",
11931
- "src": "2247:7:98",
11931
+ "src": "2245:7:98",
11932
11932
  "typeDescriptions": {
11933
11933
  "typeIdentifier": "t_type$_t_address_$",
11934
11934
  "typeString": "type(address)"
11935
11935
  },
11936
11936
  "typeName": {
11937
- "id": 35255,
11937
+ "id": 35274,
11938
11938
  "name": "address",
11939
11939
  "nodeType": "ElementaryTypeName",
11940
- "src": "2247:7:98",
11940
+ "src": "2245:7:98",
11941
11941
  "typeDescriptions": {}
11942
11942
  }
11943
11943
  },
11944
- "id": 35258,
11944
+ "id": 35277,
11945
11945
  "isConstant": false,
11946
11946
  "isLValue": false,
11947
11947
  "isPure": false,
@@ -11949,7 +11949,7 @@
11949
11949
  "lValueRequested": false,
11950
11950
  "names": [],
11951
11951
  "nodeType": "FunctionCall",
11952
- "src": "2247:13:98",
11952
+ "src": "2245:13:98",
11953
11953
  "tryCall": false,
11954
11954
  "typeDescriptions": {
11955
11955
  "typeIdentifier": "t_address",
@@ -11965,18 +11965,18 @@
11965
11965
  }
11966
11966
  ],
11967
11967
  "expression": {
11968
- "id": 35253,
11968
+ "id": 35272,
11969
11969
  "name": "token",
11970
11970
  "nodeType": "Identifier",
11971
11971
  "overloadedDeclarations": [],
11972
- "referencedDeclaration": 35244,
11973
- "src": "2231:5:98",
11972
+ "referencedDeclaration": 35263,
11973
+ "src": "2229:5:98",
11974
11974
  "typeDescriptions": {
11975
11975
  "typeIdentifier": "t_contract$_IERC20_$1520",
11976
11976
  "typeString": "contract IERC20"
11977
11977
  }
11978
11978
  },
11979
- "id": 35254,
11979
+ "id": 35273,
11980
11980
  "isConstant": false,
11981
11981
  "isLValue": false,
11982
11982
  "isPure": false,
@@ -11984,13 +11984,13 @@
11984
11984
  "memberName": "balanceOf",
11985
11985
  "nodeType": "MemberAccess",
11986
11986
  "referencedDeclaration": 1459,
11987
- "src": "2231:15:98",
11987
+ "src": "2229:15:98",
11988
11988
  "typeDescriptions": {
11989
11989
  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
11990
11990
  "typeString": "function (address) view external returns (uint256)"
11991
11991
  }
11992
11992
  },
11993
- "id": 35259,
11993
+ "id": 35278,
11994
11994
  "isConstant": false,
11995
11995
  "isLValue": false,
11996
11996
  "isPure": false,
@@ -11998,7 +11998,7 @@
11998
11998
  "lValueRequested": false,
11999
11999
  "names": [],
12000
12000
  "nodeType": "FunctionCall",
12001
- "src": "2231:30:98",
12001
+ "src": "2229:30:98",
12002
12002
  "tryCall": false,
12003
12003
  "typeDescriptions": {
12004
12004
  "typeIdentifier": "t_uint256",
@@ -12006,18 +12006,18 @@
12006
12006
  }
12007
12007
  },
12008
12008
  "nodeType": "VariableDeclarationStatement",
12009
- "src": "2207:54:98"
12009
+ "src": "2205:54:98"
12010
12010
  },
12011
12011
  {
12012
12012
  "expression": {
12013
12013
  "arguments": [
12014
12014
  {
12015
- "id": 35264,
12015
+ "id": 35283,
12016
12016
  "name": "account",
12017
12017
  "nodeType": "Identifier",
12018
12018
  "overloadedDeclarations": [],
12019
- "referencedDeclaration": 35210,
12020
- "src": "2294:7:98",
12019
+ "referencedDeclaration": 35229,
12020
+ "src": "2292:7:98",
12021
12021
  "typeDescriptions": {
12022
12022
  "typeIdentifier": "t_address",
12023
12023
  "typeString": "address"
@@ -12026,14 +12026,14 @@
12026
12026
  {
12027
12027
  "arguments": [
12028
12028
  {
12029
- "id": 35267,
12029
+ "id": 35286,
12030
12030
  "name": "this",
12031
12031
  "nodeType": "Identifier",
12032
12032
  "overloadedDeclarations": [],
12033
12033
  "referencedDeclaration": 4294967268,
12034
- "src": "2311:4:98",
12034
+ "src": "2309:4:98",
12035
12035
  "typeDescriptions": {
12036
- "typeIdentifier": "t_contract$_SuperUpgrader_$35442",
12036
+ "typeIdentifier": "t_contract$_SuperUpgrader_$35461",
12037
12037
  "typeString": "contract SuperUpgrader"
12038
12038
  }
12039
12039
  }
@@ -12041,30 +12041,30 @@
12041
12041
  "expression": {
12042
12042
  "argumentTypes": [
12043
12043
  {
12044
- "typeIdentifier": "t_contract$_SuperUpgrader_$35442",
12044
+ "typeIdentifier": "t_contract$_SuperUpgrader_$35461",
12045
12045
  "typeString": "contract SuperUpgrader"
12046
12046
  }
12047
12047
  ],
12048
- "id": 35266,
12048
+ "id": 35285,
12049
12049
  "isConstant": false,
12050
12050
  "isLValue": false,
12051
12051
  "isPure": true,
12052
12052
  "lValueRequested": false,
12053
12053
  "nodeType": "ElementaryTypeNameExpression",
12054
- "src": "2303:7:98",
12054
+ "src": "2301:7:98",
12055
12055
  "typeDescriptions": {
12056
12056
  "typeIdentifier": "t_type$_t_address_$",
12057
12057
  "typeString": "type(address)"
12058
12058
  },
12059
12059
  "typeName": {
12060
- "id": 35265,
12060
+ "id": 35284,
12061
12061
  "name": "address",
12062
12062
  "nodeType": "ElementaryTypeName",
12063
- "src": "2303:7:98",
12063
+ "src": "2301:7:98",
12064
12064
  "typeDescriptions": {}
12065
12065
  }
12066
12066
  },
12067
- "id": 35268,
12067
+ "id": 35287,
12068
12068
  "isConstant": false,
12069
12069
  "isLValue": false,
12070
12070
  "isPure": false,
@@ -12072,7 +12072,7 @@
12072
12072
  "lValueRequested": false,
12073
12073
  "names": [],
12074
12074
  "nodeType": "FunctionCall",
12075
- "src": "2303:13:98",
12075
+ "src": "2301:13:98",
12076
12076
  "tryCall": false,
12077
12077
  "typeDescriptions": {
12078
12078
  "typeIdentifier": "t_address",
@@ -12080,12 +12080,12 @@
12080
12080
  }
12081
12081
  },
12082
12082
  {
12083
- "id": 35269,
12083
+ "id": 35288,
12084
12084
  "name": "amount",
12085
12085
  "nodeType": "Identifier",
12086
12086
  "overloadedDeclarations": [],
12087
- "referencedDeclaration": 35212,
12088
- "src": "2318:6:98",
12087
+ "referencedDeclaration": 35231,
12088
+ "src": "2316:6:98",
12089
12089
  "typeDescriptions": {
12090
12090
  "typeIdentifier": "t_uint256",
12091
12091
  "typeString": "uint256"
@@ -12108,18 +12108,18 @@
12108
12108
  }
12109
12109
  ],
12110
12110
  "expression": {
12111
- "id": 35261,
12111
+ "id": 35280,
12112
12112
  "name": "token",
12113
12113
  "nodeType": "Identifier",
12114
12114
  "overloadedDeclarations": [],
12115
- "referencedDeclaration": 35244,
12116
- "src": "2271:5:98",
12115
+ "referencedDeclaration": 35263,
12116
+ "src": "2269:5:98",
12117
12117
  "typeDescriptions": {
12118
12118
  "typeIdentifier": "t_contract$_IERC20_$1520",
12119
12119
  "typeString": "contract IERC20"
12120
12120
  }
12121
12121
  },
12122
- "id": 35263,
12122
+ "id": 35282,
12123
12123
  "isConstant": false,
12124
12124
  "isLValue": false,
12125
12125
  "isPure": false,
@@ -12127,13 +12127,13 @@
12127
12127
  "memberName": "safeTransferFrom",
12128
12128
  "nodeType": "MemberAccess",
12129
12129
  "referencedDeclaration": 1819,
12130
- "src": "2271:22:98",
12130
+ "src": "2269:22:98",
12131
12131
  "typeDescriptions": {
12132
12132
  "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1520_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1520_$",
12133
12133
  "typeString": "function (contract IERC20,address,address,uint256)"
12134
12134
  }
12135
12135
  },
12136
- "id": 35270,
12136
+ "id": 35289,
12137
12137
  "isConstant": false,
12138
12138
  "isLValue": false,
12139
12139
  "isPure": false,
@@ -12141,16 +12141,16 @@
12141
12141
  "lValueRequested": false,
12142
12142
  "names": [],
12143
12143
  "nodeType": "FunctionCall",
12144
- "src": "2271:54:98",
12144
+ "src": "2269:54:98",
12145
12145
  "tryCall": false,
12146
12146
  "typeDescriptions": {
12147
12147
  "typeIdentifier": "t_tuple$__$",
12148
12148
  "typeString": "tuple()"
12149
12149
  }
12150
12150
  },
12151
- "id": 35271,
12151
+ "id": 35290,
12152
12152
  "nodeType": "ExpressionStatement",
12153
- "src": "2271:54:98"
12153
+ "src": "2269:54:98"
12154
12154
  },
12155
12155
  {
12156
12156
  "expression": {
@@ -12158,12 +12158,12 @@
12158
12158
  {
12159
12159
  "arguments": [
12160
12160
  {
12161
- "id": 35277,
12161
+ "id": 35296,
12162
12162
  "name": "superToken",
12163
12163
  "nodeType": "Identifier",
12164
12164
  "overloadedDeclarations": [],
12165
- "referencedDeclaration": 35237,
12166
- "src": "2361:10:98",
12165
+ "referencedDeclaration": 35256,
12166
+ "src": "2359:10:98",
12167
12167
  "typeDescriptions": {
12168
12168
  "typeIdentifier": "t_contract$_ISuperToken_$17761",
12169
12169
  "typeString": "contract ISuperToken"
@@ -12177,26 +12177,26 @@
12177
12177
  "typeString": "contract ISuperToken"
12178
12178
  }
12179
12179
  ],
12180
- "id": 35276,
12180
+ "id": 35295,
12181
12181
  "isConstant": false,
12182
12182
  "isLValue": false,
12183
12183
  "isPure": true,
12184
12184
  "lValueRequested": false,
12185
12185
  "nodeType": "ElementaryTypeNameExpression",
12186
- "src": "2353:7:98",
12186
+ "src": "2351:7:98",
12187
12187
  "typeDescriptions": {
12188
12188
  "typeIdentifier": "t_type$_t_address_$",
12189
12189
  "typeString": "type(address)"
12190
12190
  },
12191
12191
  "typeName": {
12192
- "id": 35275,
12192
+ "id": 35294,
12193
12193
  "name": "address",
12194
12194
  "nodeType": "ElementaryTypeName",
12195
- "src": "2353:7:98",
12195
+ "src": "2351:7:98",
12196
12196
  "typeDescriptions": {}
12197
12197
  }
12198
12198
  },
12199
- "id": 35278,
12199
+ "id": 35297,
12200
12200
  "isConstant": false,
12201
12201
  "isLValue": false,
12202
12202
  "isPure": false,
@@ -12204,7 +12204,7 @@
12204
12204
  "lValueRequested": false,
12205
12205
  "names": [],
12206
12206
  "nodeType": "FunctionCall",
12207
- "src": "2353:19:98",
12207
+ "src": "2351:19:98",
12208
12208
  "tryCall": false,
12209
12209
  "typeDescriptions": {
12210
12210
  "typeIdentifier": "t_address",
@@ -12213,14 +12213,14 @@
12213
12213
  },
12214
12214
  {
12215
12215
  "hexValue": "30",
12216
- "id": 35279,
12216
+ "id": 35298,
12217
12217
  "isConstant": false,
12218
12218
  "isLValue": false,
12219
12219
  "isPure": true,
12220
12220
  "kind": "number",
12221
12221
  "lValueRequested": false,
12222
12222
  "nodeType": "Literal",
12223
- "src": "2374:1:98",
12223
+ "src": "2372:1:98",
12224
12224
  "typeDescriptions": {
12225
12225
  "typeIdentifier": "t_rational_0_by_1",
12226
12226
  "typeString": "int_const 0"
@@ -12240,18 +12240,18 @@
12240
12240
  }
12241
12241
  ],
12242
12242
  "expression": {
12243
- "id": 35272,
12243
+ "id": 35291,
12244
12244
  "name": "token",
12245
12245
  "nodeType": "Identifier",
12246
12246
  "overloadedDeclarations": [],
12247
- "referencedDeclaration": 35244,
12248
- "src": "2335:5:98",
12247
+ "referencedDeclaration": 35263,
12248
+ "src": "2333:5:98",
12249
12249
  "typeDescriptions": {
12250
12250
  "typeIdentifier": "t_contract$_IERC20_$1520",
12251
12251
  "typeString": "contract IERC20"
12252
12252
  }
12253
12253
  },
12254
- "id": 35274,
12254
+ "id": 35293,
12255
12255
  "isConstant": false,
12256
12256
  "isLValue": false,
12257
12257
  "isPure": false,
@@ -12259,13 +12259,13 @@
12259
12259
  "memberName": "safeApprove",
12260
12260
  "nodeType": "MemberAccess",
12261
12261
  "referencedDeclaration": 1863,
12262
- "src": "2335:17:98",
12262
+ "src": "2333:17:98",
12263
12263
  "typeDescriptions": {
12264
12264
  "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1520_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1520_$",
12265
12265
  "typeString": "function (contract IERC20,address,uint256)"
12266
12266
  }
12267
12267
  },
12268
- "id": 35280,
12268
+ "id": 35299,
12269
12269
  "isConstant": false,
12270
12270
  "isLValue": false,
12271
12271
  "isPure": false,
@@ -12273,16 +12273,16 @@
12273
12273
  "lValueRequested": false,
12274
12274
  "names": [],
12275
12275
  "nodeType": "FunctionCall",
12276
- "src": "2335:41:98",
12276
+ "src": "2333:41:98",
12277
12277
  "tryCall": false,
12278
12278
  "typeDescriptions": {
12279
12279
  "typeIdentifier": "t_tuple$__$",
12280
12280
  "typeString": "tuple()"
12281
12281
  }
12282
12282
  },
12283
- "id": 35281,
12283
+ "id": 35300,
12284
12284
  "nodeType": "ExpressionStatement",
12285
- "src": "2335:41:98"
12285
+ "src": "2333:41:98"
12286
12286
  },
12287
12287
  {
12288
12288
  "expression": {
@@ -12290,12 +12290,12 @@
12290
12290
  {
12291
12291
  "arguments": [
12292
12292
  {
12293
- "id": 35287,
12293
+ "id": 35306,
12294
12294
  "name": "superToken",
12295
12295
  "nodeType": "Identifier",
12296
12296
  "overloadedDeclarations": [],
12297
- "referencedDeclaration": 35237,
12298
- "src": "2412:10:98",
12297
+ "referencedDeclaration": 35256,
12298
+ "src": "2410:10:98",
12299
12299
  "typeDescriptions": {
12300
12300
  "typeIdentifier": "t_contract$_ISuperToken_$17761",
12301
12301
  "typeString": "contract ISuperToken"
@@ -12309,26 +12309,26 @@
12309
12309
  "typeString": "contract ISuperToken"
12310
12310
  }
12311
12311
  ],
12312
- "id": 35286,
12312
+ "id": 35305,
12313
12313
  "isConstant": false,
12314
12314
  "isLValue": false,
12315
12315
  "isPure": true,
12316
12316
  "lValueRequested": false,
12317
12317
  "nodeType": "ElementaryTypeNameExpression",
12318
- "src": "2404:7:98",
12318
+ "src": "2402:7:98",
12319
12319
  "typeDescriptions": {
12320
12320
  "typeIdentifier": "t_type$_t_address_$",
12321
12321
  "typeString": "type(address)"
12322
12322
  },
12323
12323
  "typeName": {
12324
- "id": 35285,
12324
+ "id": 35304,
12325
12325
  "name": "address",
12326
12326
  "nodeType": "ElementaryTypeName",
12327
- "src": "2404:7:98",
12327
+ "src": "2402:7:98",
12328
12328
  "typeDescriptions": {}
12329
12329
  }
12330
12330
  },
12331
- "id": 35288,
12331
+ "id": 35307,
12332
12332
  "isConstant": false,
12333
12333
  "isLValue": false,
12334
12334
  "isPure": false,
@@ -12336,7 +12336,7 @@
12336
12336
  "lValueRequested": false,
12337
12337
  "names": [],
12338
12338
  "nodeType": "FunctionCall",
12339
- "src": "2404:19:98",
12339
+ "src": "2402:19:98",
12340
12340
  "tryCall": false,
12341
12341
  "typeDescriptions": {
12342
12342
  "typeIdentifier": "t_address",
@@ -12344,12 +12344,12 @@
12344
12344
  }
12345
12345
  },
12346
12346
  {
12347
- "id": 35289,
12347
+ "id": 35308,
12348
12348
  "name": "amount",
12349
12349
  "nodeType": "Identifier",
12350
12350
  "overloadedDeclarations": [],
12351
- "referencedDeclaration": 35212,
12352
- "src": "2425:6:98",
12351
+ "referencedDeclaration": 35231,
12352
+ "src": "2423:6:98",
12353
12353
  "typeDescriptions": {
12354
12354
  "typeIdentifier": "t_uint256",
12355
12355
  "typeString": "uint256"
@@ -12368,18 +12368,18 @@
12368
12368
  }
12369
12369
  ],
12370
12370
  "expression": {
12371
- "id": 35282,
12371
+ "id": 35301,
12372
12372
  "name": "token",
12373
12373
  "nodeType": "Identifier",
12374
12374
  "overloadedDeclarations": [],
12375
- "referencedDeclaration": 35244,
12376
- "src": "2386:5:98",
12375
+ "referencedDeclaration": 35263,
12376
+ "src": "2384:5:98",
12377
12377
  "typeDescriptions": {
12378
12378
  "typeIdentifier": "t_contract$_IERC20_$1520",
12379
12379
  "typeString": "contract IERC20"
12380
12380
  }
12381
12381
  },
12382
- "id": 35284,
12382
+ "id": 35303,
12383
12383
  "isConstant": false,
12384
12384
  "isLValue": false,
12385
12385
  "isPure": false,
@@ -12387,13 +12387,13 @@
12387
12387
  "memberName": "safeApprove",
12388
12388
  "nodeType": "MemberAccess",
12389
12389
  "referencedDeclaration": 1863,
12390
- "src": "2386:17:98",
12390
+ "src": "2384:17:98",
12391
12391
  "typeDescriptions": {
12392
12392
  "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1520_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1520_$",
12393
12393
  "typeString": "function (contract IERC20,address,uint256)"
12394
12394
  }
12395
12395
  },
12396
- "id": 35290,
12396
+ "id": 35309,
12397
12397
  "isConstant": false,
12398
12398
  "isLValue": false,
12399
12399
  "isPure": false,
@@ -12401,27 +12401,27 @@
12401
12401
  "lValueRequested": false,
12402
12402
  "names": [],
12403
12403
  "nodeType": "FunctionCall",
12404
- "src": "2386:46:98",
12404
+ "src": "2384:46:98",
12405
12405
  "tryCall": false,
12406
12406
  "typeDescriptions": {
12407
12407
  "typeIdentifier": "t_tuple$__$",
12408
12408
  "typeString": "tuple()"
12409
12409
  }
12410
12410
  },
12411
- "id": 35291,
12411
+ "id": 35310,
12412
12412
  "nodeType": "ExpressionStatement",
12413
- "src": "2386:46:98"
12413
+ "src": "2384:46:98"
12414
12414
  },
12415
12415
  {
12416
12416
  "expression": {
12417
12417
  "arguments": [
12418
12418
  {
12419
- "id": 35295,
12419
+ "id": 35314,
12420
12420
  "name": "account",
12421
12421
  "nodeType": "Identifier",
12422
12422
  "overloadedDeclarations": [],
12423
- "referencedDeclaration": 35210,
12424
- "src": "2524:7:98",
12423
+ "referencedDeclaration": 35229,
12424
+ "src": "2522:7:98",
12425
12425
  "typeDescriptions": {
12426
12426
  "typeIdentifier": "t_address",
12427
12427
  "typeString": "address"
@@ -12432,7 +12432,7 @@
12432
12432
  "typeIdentifier": "t_uint256",
12433
12433
  "typeString": "uint256"
12434
12434
  },
12435
- "id": 35304,
12435
+ "id": 35323,
12436
12436
  "isConstant": false,
12437
12437
  "isLValue": false,
12438
12438
  "isPure": false,
@@ -12442,14 +12442,14 @@
12442
12442
  {
12443
12443
  "arguments": [
12444
12444
  {
12445
- "id": 35300,
12445
+ "id": 35319,
12446
12446
  "name": "this",
12447
12447
  "nodeType": "Identifier",
12448
12448
  "overloadedDeclarations": [],
12449
12449
  "referencedDeclaration": 4294967268,
12450
- "src": "2569:4:98",
12450
+ "src": "2567:4:98",
12451
12451
  "typeDescriptions": {
12452
- "typeIdentifier": "t_contract$_SuperUpgrader_$35442",
12452
+ "typeIdentifier": "t_contract$_SuperUpgrader_$35461",
12453
12453
  "typeString": "contract SuperUpgrader"
12454
12454
  }
12455
12455
  }
@@ -12457,30 +12457,30 @@
12457
12457
  "expression": {
12458
12458
  "argumentTypes": [
12459
12459
  {
12460
- "typeIdentifier": "t_contract$_SuperUpgrader_$35442",
12460
+ "typeIdentifier": "t_contract$_SuperUpgrader_$35461",
12461
12461
  "typeString": "contract SuperUpgrader"
12462
12462
  }
12463
12463
  ],
12464
- "id": 35299,
12464
+ "id": 35318,
12465
12465
  "isConstant": false,
12466
12466
  "isLValue": false,
12467
12467
  "isPure": true,
12468
12468
  "lValueRequested": false,
12469
12469
  "nodeType": "ElementaryTypeNameExpression",
12470
- "src": "2561:7:98",
12470
+ "src": "2559:7:98",
12471
12471
  "typeDescriptions": {
12472
12472
  "typeIdentifier": "t_type$_t_address_$",
12473
12473
  "typeString": "type(address)"
12474
12474
  },
12475
12475
  "typeName": {
12476
- "id": 35298,
12476
+ "id": 35317,
12477
12477
  "name": "address",
12478
12478
  "nodeType": "ElementaryTypeName",
12479
- "src": "2561:7:98",
12479
+ "src": "2559:7:98",
12480
12480
  "typeDescriptions": {}
12481
12481
  }
12482
12482
  },
12483
- "id": 35301,
12483
+ "id": 35320,
12484
12484
  "isConstant": false,
12485
12485
  "isLValue": false,
12486
12486
  "isPure": false,
@@ -12488,7 +12488,7 @@
12488
12488
  "lValueRequested": false,
12489
12489
  "names": [],
12490
12490
  "nodeType": "FunctionCall",
12491
- "src": "2561:13:98",
12491
+ "src": "2559:13:98",
12492
12492
  "tryCall": false,
12493
12493
  "typeDescriptions": {
12494
12494
  "typeIdentifier": "t_address",
@@ -12504,18 +12504,18 @@
12504
12504
  }
12505
12505
  ],
12506
12506
  "expression": {
12507
- "id": 35296,
12507
+ "id": 35315,
12508
12508
  "name": "token",
12509
12509
  "nodeType": "Identifier",
12510
12510
  "overloadedDeclarations": [],
12511
- "referencedDeclaration": 35244,
12512
- "src": "2545:5:98",
12511
+ "referencedDeclaration": 35263,
12512
+ "src": "2543:5:98",
12513
12513
  "typeDescriptions": {
12514
12514
  "typeIdentifier": "t_contract$_IERC20_$1520",
12515
12515
  "typeString": "contract IERC20"
12516
12516
  }
12517
12517
  },
12518
- "id": 35297,
12518
+ "id": 35316,
12519
12519
  "isConstant": false,
12520
12520
  "isLValue": false,
12521
12521
  "isPure": false,
@@ -12523,13 +12523,13 @@
12523
12523
  "memberName": "balanceOf",
12524
12524
  "nodeType": "MemberAccess",
12525
12525
  "referencedDeclaration": 1459,
12526
- "src": "2545:15:98",
12526
+ "src": "2543:15:98",
12527
12527
  "typeDescriptions": {
12528
12528
  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
12529
12529
  "typeString": "function (address) view external returns (uint256)"
12530
12530
  }
12531
12531
  },
12532
- "id": 35302,
12532
+ "id": 35321,
12533
12533
  "isConstant": false,
12534
12534
  "isLValue": false,
12535
12535
  "isPure": false,
@@ -12537,7 +12537,7 @@
12537
12537
  "lValueRequested": false,
12538
12538
  "names": [],
12539
12539
  "nodeType": "FunctionCall",
12540
- "src": "2545:30:98",
12540
+ "src": "2543:30:98",
12541
12541
  "tryCall": false,
12542
12542
  "typeDescriptions": {
12543
12543
  "typeIdentifier": "t_uint256",
@@ -12547,18 +12547,18 @@
12547
12547
  "nodeType": "BinaryOperation",
12548
12548
  "operator": "-",
12549
12549
  "rightExpression": {
12550
- "id": 35303,
12550
+ "id": 35322,
12551
12551
  "name": "beforeBalance",
12552
12552
  "nodeType": "Identifier",
12553
12553
  "overloadedDeclarations": [],
12554
- "referencedDeclaration": 35252,
12555
- "src": "2578:13:98",
12554
+ "referencedDeclaration": 35271,
12555
+ "src": "2576:13:98",
12556
12556
  "typeDescriptions": {
12557
12557
  "typeIdentifier": "t_uint256",
12558
12558
  "typeString": "uint256"
12559
12559
  }
12560
12560
  },
12561
- "src": "2545:46:98",
12561
+ "src": "2543:46:98",
12562
12562
  "typeDescriptions": {
12563
12563
  "typeIdentifier": "t_uint256",
12564
12564
  "typeString": "uint256"
@@ -12568,14 +12568,14 @@
12568
12568
  "arguments": [
12569
12569
  {
12570
12570
  "hexValue": "30",
12571
- "id": 35307,
12571
+ "id": 35326,
12572
12572
  "isConstant": false,
12573
12573
  "isLValue": false,
12574
12574
  "isPure": true,
12575
12575
  "kind": "number",
12576
12576
  "lValueRequested": false,
12577
12577
  "nodeType": "Literal",
12578
- "src": "2603:1:98",
12578
+ "src": "2601:1:98",
12579
12579
  "typeDescriptions": {
12580
12580
  "typeIdentifier": "t_rational_0_by_1",
12581
12581
  "typeString": "int_const 0"
@@ -12590,29 +12590,29 @@
12590
12590
  "typeString": "int_const 0"
12591
12591
  }
12592
12592
  ],
12593
- "id": 35306,
12593
+ "id": 35325,
12594
12594
  "isConstant": false,
12595
12595
  "isLValue": false,
12596
12596
  "isPure": true,
12597
12597
  "lValueRequested": false,
12598
12598
  "nodeType": "NewExpression",
12599
- "src": "2593:9:98",
12599
+ "src": "2591:9:98",
12600
12600
  "typeDescriptions": {
12601
12601
  "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
12602
12602
  "typeString": "function (uint256) pure returns (bytes memory)"
12603
12603
  },
12604
12604
  "typeName": {
12605
- "id": 35305,
12605
+ "id": 35324,
12606
12606
  "name": "bytes",
12607
12607
  "nodeType": "ElementaryTypeName",
12608
- "src": "2597:5:98",
12608
+ "src": "2595:5:98",
12609
12609
  "typeDescriptions": {
12610
12610
  "typeIdentifier": "t_bytes_storage_ptr",
12611
12611
  "typeString": "bytes"
12612
12612
  }
12613
12613
  }
12614
12614
  },
12615
- "id": 35308,
12615
+ "id": 35327,
12616
12616
  "isConstant": false,
12617
12617
  "isLValue": false,
12618
12618
  "isPure": true,
@@ -12620,7 +12620,7 @@
12620
12620
  "lValueRequested": false,
12621
12621
  "names": [],
12622
12622
  "nodeType": "FunctionCall",
12623
- "src": "2593:12:98",
12623
+ "src": "2591:12:98",
12624
12624
  "tryCall": false,
12625
12625
  "typeDescriptions": {
12626
12626
  "typeIdentifier": "t_bytes_memory_ptr",
@@ -12644,18 +12644,18 @@
12644
12644
  }
12645
12645
  ],
12646
12646
  "expression": {
12647
- "id": 35292,
12647
+ "id": 35311,
12648
12648
  "name": "superToken",
12649
12649
  "nodeType": "Identifier",
12650
12650
  "overloadedDeclarations": [],
12651
- "referencedDeclaration": 35237,
12652
- "src": "2490:10:98",
12651
+ "referencedDeclaration": 35256,
12652
+ "src": "2488:10:98",
12653
12653
  "typeDescriptions": {
12654
12654
  "typeIdentifier": "t_contract$_ISuperToken_$17761",
12655
12655
  "typeString": "contract ISuperToken"
12656
12656
  }
12657
12657
  },
12658
- "id": 35294,
12658
+ "id": 35313,
12659
12659
  "isConstant": false,
12660
12660
  "isLValue": false,
12661
12661
  "isPure": false,
@@ -12663,13 +12663,13 @@
12663
12663
  "memberName": "upgradeTo",
12664
12664
  "nodeType": "MemberAccess",
12665
12665
  "referencedDeclaration": 17702,
12666
- "src": "2490:20:98",
12666
+ "src": "2488:20:98",
12667
12667
  "typeDescriptions": {
12668
12668
  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
12669
12669
  "typeString": "function (address,uint256,bytes memory) external"
12670
12670
  }
12671
12671
  },
12672
- "id": 35309,
12672
+ "id": 35328,
12673
12673
  "isConstant": false,
12674
12674
  "isLValue": false,
12675
12675
  "isPure": false,
@@ -12677,46 +12677,46 @@
12677
12677
  "lValueRequested": false,
12678
12678
  "names": [],
12679
12679
  "nodeType": "FunctionCall",
12680
- "src": "2490:116:98",
12680
+ "src": "2488:116:98",
12681
12681
  "tryCall": false,
12682
12682
  "typeDescriptions": {
12683
12683
  "typeIdentifier": "t_tuple$__$",
12684
12684
  "typeString": "tuple()"
12685
12685
  }
12686
12686
  },
12687
- "id": 35310,
12687
+ "id": 35329,
12688
12688
  "nodeType": "ExpressionStatement",
12689
- "src": "2490:116:98"
12689
+ "src": "2488:116:98"
12690
12690
  }
12691
12691
  ]
12692
12692
  },
12693
12693
  "documentation": {
12694
- "id": 35206,
12694
+ "id": 35225,
12695
12695
  "nodeType": "StructuredDocumentation",
12696
- "src": "1406:316:98",
12697
- "text": " @notice The user should ERC20.approve this contract.\n @dev Execute upgrade function in the name of the user\n @param superTokenAddr Super Token Address to upgrade \n @param account User address that previous approved this contract.\n @param amount Amount value to be upgraded."
12696
+ "src": "1406:315:98",
12697
+ "text": " @notice The user should ERC20.approve this contract.\n @dev Execute upgrade function in the name of the user\n @param superTokenAddr Super Token Address to upgrade\n @param account User address that previous approved this contract.\n @param amount Amount value to be upgraded."
12698
12698
  },
12699
12699
  "functionSelector": "2a197298",
12700
- "id": 35312,
12700
+ "id": 35331,
12701
12701
  "implemented": true,
12702
12702
  "kind": "function",
12703
12703
  "modifiers": [],
12704
12704
  "name": "upgrade",
12705
- "nameLocation": "1736:7:98",
12705
+ "nameLocation": "1735:7:98",
12706
12706
  "nodeType": "FunctionDefinition",
12707
12707
  "parameters": {
12708
- "id": 35213,
12708
+ "id": 35232,
12709
12709
  "nodeType": "ParameterList",
12710
12710
  "parameters": [
12711
12711
  {
12712
12712
  "constant": false,
12713
- "id": 35208,
12713
+ "id": 35227,
12714
12714
  "mutability": "mutable",
12715
12715
  "name": "superTokenAddr",
12716
- "nameLocation": "1761:14:98",
12716
+ "nameLocation": "1760:14:98",
12717
12717
  "nodeType": "VariableDeclaration",
12718
- "scope": 35312,
12719
- "src": "1753:22:98",
12718
+ "scope": 35331,
12719
+ "src": "1752:22:98",
12720
12720
  "stateVariable": false,
12721
12721
  "storageLocation": "default",
12722
12722
  "typeDescriptions": {
@@ -12724,10 +12724,10 @@
12724
12724
  "typeString": "address"
12725
12725
  },
12726
12726
  "typeName": {
12727
- "id": 35207,
12727
+ "id": 35226,
12728
12728
  "name": "address",
12729
12729
  "nodeType": "ElementaryTypeName",
12730
- "src": "1753:7:98",
12730
+ "src": "1752:7:98",
12731
12731
  "stateMutability": "nonpayable",
12732
12732
  "typeDescriptions": {
12733
12733
  "typeIdentifier": "t_address",
@@ -12738,13 +12738,13 @@
12738
12738
  },
12739
12739
  {
12740
12740
  "constant": false,
12741
- "id": 35210,
12741
+ "id": 35229,
12742
12742
  "mutability": "mutable",
12743
12743
  "name": "account",
12744
- "nameLocation": "1793:7:98",
12744
+ "nameLocation": "1792:7:98",
12745
12745
  "nodeType": "VariableDeclaration",
12746
- "scope": 35312,
12747
- "src": "1785:15:98",
12746
+ "scope": 35331,
12747
+ "src": "1784:15:98",
12748
12748
  "stateVariable": false,
12749
12749
  "storageLocation": "default",
12750
12750
  "typeDescriptions": {
@@ -12752,10 +12752,10 @@
12752
12752
  "typeString": "address"
12753
12753
  },
12754
12754
  "typeName": {
12755
- "id": 35209,
12755
+ "id": 35228,
12756
12756
  "name": "address",
12757
12757
  "nodeType": "ElementaryTypeName",
12758
- "src": "1785:7:98",
12758
+ "src": "1784:7:98",
12759
12759
  "stateMutability": "nonpayable",
12760
12760
  "typeDescriptions": {
12761
12761
  "typeIdentifier": "t_address",
@@ -12766,13 +12766,13 @@
12766
12766
  },
12767
12767
  {
12768
12768
  "constant": false,
12769
- "id": 35212,
12769
+ "id": 35231,
12770
12770
  "mutability": "mutable",
12771
12771
  "name": "amount",
12772
- "nameLocation": "1818:6:98",
12772
+ "nameLocation": "1817:6:98",
12773
12773
  "nodeType": "VariableDeclaration",
12774
- "scope": 35312,
12775
- "src": "1810:14:98",
12774
+ "scope": 35331,
12775
+ "src": "1809:14:98",
12776
12776
  "stateVariable": false,
12777
12777
  "storageLocation": "default",
12778
12778
  "typeDescriptions": {
@@ -12780,10 +12780,10 @@
12780
12780
  "typeString": "uint256"
12781
12781
  },
12782
12782
  "typeName": {
12783
- "id": 35211,
12783
+ "id": 35230,
12784
12784
  "name": "uint256",
12785
12785
  "nodeType": "ElementaryTypeName",
12786
- "src": "1810:7:98",
12786
+ "src": "1809:7:98",
12787
12787
  "typeDescriptions": {
12788
12788
  "typeIdentifier": "t_uint256",
12789
12789
  "typeString": "uint256"
@@ -12792,48 +12792,48 @@
12792
12792
  "visibility": "internal"
12793
12793
  }
12794
12794
  ],
12795
- "src": "1743:87:98"
12795
+ "src": "1742:87:98"
12796
12796
  },
12797
12797
  "returnParameters": {
12798
- "id": 35214,
12798
+ "id": 35233,
12799
12799
  "nodeType": "ParameterList",
12800
12800
  "parameters": [],
12801
- "src": "1848:0:98"
12801
+ "src": "1847:0:98"
12802
12802
  },
12803
- "scope": 35442,
12804
- "src": "1727:886:98",
12803
+ "scope": 35461,
12804
+ "src": "1726:885:98",
12805
12805
  "stateMutability": "nonpayable",
12806
12806
  "virtual": false,
12807
12807
  "visibility": "external"
12808
12808
  },
12809
12809
  {
12810
12810
  "body": {
12811
- "id": 35325,
12811
+ "id": 35344,
12812
12812
  "nodeType": "Block",
12813
- "src": "2760:54:98",
12813
+ "src": "2757:54:98",
12814
12814
  "statements": [
12815
12815
  {
12816
12816
  "expression": {
12817
12817
  "arguments": [
12818
12818
  {
12819
- "id": 35321,
12819
+ "id": 35340,
12820
12820
  "name": "BACKEND_ROLE",
12821
12821
  "nodeType": "Identifier",
12822
12822
  "overloadedDeclarations": [],
12823
- "referencedDeclaration": 35137,
12824
- "src": "2785:12:98",
12823
+ "referencedDeclaration": 35156,
12824
+ "src": "2782:12:98",
12825
12825
  "typeDescriptions": {
12826
12826
  "typeIdentifier": "t_bytes32",
12827
12827
  "typeString": "bytes32"
12828
12828
  }
12829
12829
  },
12830
12830
  {
12831
- "id": 35322,
12831
+ "id": 35341,
12832
12832
  "name": "account",
12833
12833
  "nodeType": "Identifier",
12834
12834
  "overloadedDeclarations": [],
12835
- "referencedDeclaration": 35315,
12836
- "src": "2799:7:98",
12835
+ "referencedDeclaration": 35334,
12836
+ "src": "2796:7:98",
12837
12837
  "typeDescriptions": {
12838
12838
  "typeIdentifier": "t_address",
12839
12839
  "typeString": "address"
@@ -12851,18 +12851,18 @@
12851
12851
  "typeString": "address"
12852
12852
  }
12853
12853
  ],
12854
- "id": 35320,
12854
+ "id": 35339,
12855
12855
  "name": "hasRole",
12856
12856
  "nodeType": "Identifier",
12857
12857
  "overloadedDeclarations": [],
12858
12858
  "referencedDeclaration": 81,
12859
- "src": "2777:7:98",
12859
+ "src": "2774:7:98",
12860
12860
  "typeDescriptions": {
12861
12861
  "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
12862
12862
  "typeString": "function (bytes32,address) view returns (bool)"
12863
12863
  }
12864
12864
  },
12865
- "id": 35323,
12865
+ "id": 35342,
12866
12866
  "isConstant": false,
12867
12867
  "isLValue": false,
12868
12868
  "isPure": false,
@@ -12870,47 +12870,47 @@
12870
12870
  "lValueRequested": false,
12871
12871
  "names": [],
12872
12872
  "nodeType": "FunctionCall",
12873
- "src": "2777:30:98",
12873
+ "src": "2774:30:98",
12874
12874
  "tryCall": false,
12875
12875
  "typeDescriptions": {
12876
12876
  "typeIdentifier": "t_bool",
12877
12877
  "typeString": "bool"
12878
12878
  }
12879
12879
  },
12880
- "functionReturnParameters": 35319,
12881
- "id": 35324,
12880
+ "functionReturnParameters": 35338,
12881
+ "id": 35343,
12882
12882
  "nodeType": "Return",
12883
- "src": "2770:37:98"
12883
+ "src": "2767:37:98"
12884
12884
  }
12885
12885
  ]
12886
12886
  },
12887
12887
  "documentation": {
12888
- "id": 35313,
12888
+ "id": 35332,
12889
12889
  "nodeType": "StructuredDocumentation",
12890
- "src": "2619:63:98",
12891
- "text": " @dev Test if account is member BACKEND_ROLE "
12890
+ "src": "2617:62:98",
12891
+ "text": " @dev Test if account is member BACKEND_ROLE"
12892
12892
  },
12893
12893
  "functionSelector": "44e9d2fb",
12894
- "id": 35326,
12894
+ "id": 35345,
12895
12895
  "implemented": true,
12896
12896
  "kind": "function",
12897
12897
  "modifiers": [],
12898
12898
  "name": "isBackendAgent",
12899
- "nameLocation": "2696:14:98",
12899
+ "nameLocation": "2693:14:98",
12900
12900
  "nodeType": "FunctionDefinition",
12901
12901
  "parameters": {
12902
- "id": 35316,
12902
+ "id": 35335,
12903
12903
  "nodeType": "ParameterList",
12904
12904
  "parameters": [
12905
12905
  {
12906
12906
  "constant": false,
12907
- "id": 35315,
12907
+ "id": 35334,
12908
12908
  "mutability": "mutable",
12909
12909
  "name": "account",
12910
- "nameLocation": "2719:7:98",
12910
+ "nameLocation": "2716:7:98",
12911
12911
  "nodeType": "VariableDeclaration",
12912
- "scope": 35326,
12913
- "src": "2711:15:98",
12912
+ "scope": 35345,
12913
+ "src": "2708:15:98",
12914
12914
  "stateVariable": false,
12915
12915
  "storageLocation": "default",
12916
12916
  "typeDescriptions": {
@@ -12918,10 +12918,10 @@
12918
12918
  "typeString": "address"
12919
12919
  },
12920
12920
  "typeName": {
12921
- "id": 35314,
12921
+ "id": 35333,
12922
12922
  "name": "address",
12923
12923
  "nodeType": "ElementaryTypeName",
12924
- "src": "2711:7:98",
12924
+ "src": "2708:7:98",
12925
12925
  "stateMutability": "nonpayable",
12926
12926
  "typeDescriptions": {
12927
12927
  "typeIdentifier": "t_address",
@@ -12931,21 +12931,21 @@
12931
12931
  "visibility": "internal"
12932
12932
  }
12933
12933
  ],
12934
- "src": "2710:17:98"
12934
+ "src": "2707:17:98"
12935
12935
  },
12936
12936
  "returnParameters": {
12937
- "id": 35319,
12937
+ "id": 35338,
12938
12938
  "nodeType": "ParameterList",
12939
12939
  "parameters": [
12940
12940
  {
12941
12941
  "constant": false,
12942
- "id": 35318,
12942
+ "id": 35337,
12943
12943
  "mutability": "mutable",
12944
12944
  "name": "yes",
12945
- "nameLocation": "2755:3:98",
12945
+ "nameLocation": "2752:3:98",
12946
12946
  "nodeType": "VariableDeclaration",
12947
- "scope": 35326,
12948
- "src": "2750:8:98",
12947
+ "scope": 35345,
12948
+ "src": "2747:8:98",
12949
12949
  "stateVariable": false,
12950
12950
  "storageLocation": "default",
12951
12951
  "typeDescriptions": {
@@ -12953,10 +12953,10 @@
12953
12953
  "typeString": "bool"
12954
12954
  },
12955
12955
  "typeName": {
12956
- "id": 35317,
12956
+ "id": 35336,
12957
12957
  "name": "bool",
12958
12958
  "nodeType": "ElementaryTypeName",
12959
- "src": "2750:4:98",
12959
+ "src": "2747:4:98",
12960
12960
  "typeDescriptions": {
12961
12961
  "typeIdentifier": "t_bool",
12962
12962
  "typeString": "bool"
@@ -12965,19 +12965,19 @@
12965
12965
  "visibility": "internal"
12966
12966
  }
12967
12967
  ],
12968
- "src": "2749:10:98"
12968
+ "src": "2746:10:98"
12969
12969
  },
12970
- "scope": 35442,
12971
- "src": "2687:127:98",
12970
+ "scope": 35461,
12971
+ "src": "2684:127:98",
12972
12972
  "stateMutability": "view",
12973
12973
  "virtual": false,
12974
12974
  "visibility": "external"
12975
12975
  },
12976
12976
  {
12977
12977
  "body": {
12978
- "id": 35347,
12978
+ "id": 35366,
12979
12979
  "nodeType": "Block",
12980
- "src": "2930:176:98",
12980
+ "src": "2926:176:98",
12981
12981
  "statements": [
12982
12982
  {
12983
12983
  "expression": {
@@ -12987,18 +12987,18 @@
12987
12987
  "typeIdentifier": "t_address",
12988
12988
  "typeString": "address"
12989
12989
  },
12990
- "id": 35338,
12990
+ "id": 35357,
12991
12991
  "isConstant": false,
12992
12992
  "isLValue": false,
12993
12993
  "isPure": false,
12994
12994
  "lValueRequested": false,
12995
12995
  "leftExpression": {
12996
- "id": 35333,
12996
+ "id": 35352,
12997
12997
  "name": "account",
12998
12998
  "nodeType": "Identifier",
12999
12999
  "overloadedDeclarations": [],
13000
- "referencedDeclaration": 35329,
13001
- "src": "2948:7:98",
13000
+ "referencedDeclaration": 35348,
13001
+ "src": "2944:7:98",
13002
13002
  "typeDescriptions": {
13003
13003
  "typeIdentifier": "t_address",
13004
13004
  "typeString": "address"
@@ -13010,14 +13010,14 @@
13010
13010
  "arguments": [
13011
13011
  {
13012
13012
  "hexValue": "30",
13013
- "id": 35336,
13013
+ "id": 35355,
13014
13014
  "isConstant": false,
13015
13015
  "isLValue": false,
13016
13016
  "isPure": true,
13017
13017
  "kind": "number",
13018
13018
  "lValueRequested": false,
13019
13019
  "nodeType": "Literal",
13020
- "src": "2967:1:98",
13020
+ "src": "2963:1:98",
13021
13021
  "typeDescriptions": {
13022
13022
  "typeIdentifier": "t_rational_0_by_1",
13023
13023
  "typeString": "int_const 0"
@@ -13032,26 +13032,26 @@
13032
13032
  "typeString": "int_const 0"
13033
13033
  }
13034
13034
  ],
13035
- "id": 35335,
13035
+ "id": 35354,
13036
13036
  "isConstant": false,
13037
13037
  "isLValue": false,
13038
13038
  "isPure": true,
13039
13039
  "lValueRequested": false,
13040
13040
  "nodeType": "ElementaryTypeNameExpression",
13041
- "src": "2959:7:98",
13041
+ "src": "2955:7:98",
13042
13042
  "typeDescriptions": {
13043
13043
  "typeIdentifier": "t_type$_t_address_$",
13044
13044
  "typeString": "type(address)"
13045
13045
  },
13046
13046
  "typeName": {
13047
- "id": 35334,
13047
+ "id": 35353,
13048
13048
  "name": "address",
13049
13049
  "nodeType": "ElementaryTypeName",
13050
- "src": "2959:7:98",
13050
+ "src": "2955:7:98",
13051
13051
  "typeDescriptions": {}
13052
13052
  }
13053
13053
  },
13054
- "id": 35337,
13054
+ "id": 35356,
13055
13055
  "isConstant": false,
13056
13056
  "isLValue": false,
13057
13057
  "isPure": true,
@@ -13059,14 +13059,14 @@
13059
13059
  "lValueRequested": false,
13060
13060
  "names": [],
13061
13061
  "nodeType": "FunctionCall",
13062
- "src": "2959:10:98",
13062
+ "src": "2955:10:98",
13063
13063
  "tryCall": false,
13064
13064
  "typeDescriptions": {
13065
13065
  "typeIdentifier": "t_address",
13066
13066
  "typeString": "address"
13067
13067
  }
13068
13068
  },
13069
- "src": "2948:21:98",
13069
+ "src": "2944:21:98",
13070
13070
  "typeDescriptions": {
13071
13071
  "typeIdentifier": "t_bool",
13072
13072
  "typeString": "bool"
@@ -13074,14 +13074,14 @@
13074
13074
  },
13075
13075
  {
13076
13076
  "hexValue": "6f7065726174696f6e206e6f7420616c6c6f776564",
13077
- "id": 35339,
13077
+ "id": 35358,
13078
13078
  "isConstant": false,
13079
13079
  "isLValue": false,
13080
13080
  "isPure": true,
13081
13081
  "kind": "string",
13082
13082
  "lValueRequested": false,
13083
13083
  "nodeType": "Literal",
13084
- "src": "2971:23:98",
13084
+ "src": "2967:23:98",
13085
13085
  "typeDescriptions": {
13086
13086
  "typeIdentifier": "t_stringliteral_60a0f15b3532903e39edb01f9d141c956db9da91449f57624c99b7605966d373",
13087
13087
  "typeString": "literal_string \"operation not allowed\""
@@ -13100,7 +13100,7 @@
13100
13100
  "typeString": "literal_string \"operation not allowed\""
13101
13101
  }
13102
13102
  ],
13103
- "id": 35332,
13103
+ "id": 35351,
13104
13104
  "name": "require",
13105
13105
  "nodeType": "Identifier",
13106
13106
  "overloadedDeclarations": [
@@ -13108,13 +13108,13 @@
13108
13108
  4294967278
13109
13109
  ],
13110
13110
  "referencedDeclaration": 4294967278,
13111
- "src": "2940:7:98",
13111
+ "src": "2936:7:98",
13112
13112
  "typeDescriptions": {
13113
13113
  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
13114
13114
  "typeString": "function (bool,string memory) pure"
13115
13115
  }
13116
13116
  },
13117
- "id": 35340,
13117
+ "id": 35359,
13118
13118
  "isConstant": false,
13119
13119
  "isLValue": false,
13120
13120
  "isPure": false,
@@ -13122,39 +13122,39 @@
13122
13122
  "lValueRequested": false,
13123
13123
  "names": [],
13124
13124
  "nodeType": "FunctionCall",
13125
- "src": "2940:55:98",
13125
+ "src": "2936:55:98",
13126
13126
  "tryCall": false,
13127
13127
  "typeDescriptions": {
13128
13128
  "typeIdentifier": "t_tuple$__$",
13129
13129
  "typeString": "tuple()"
13130
13130
  }
13131
13131
  },
13132
- "id": 35341,
13132
+ "id": 35360,
13133
13133
  "nodeType": "ExpressionStatement",
13134
- "src": "2940:55:98"
13134
+ "src": "2936:55:98"
13135
13135
  },
13136
13136
  {
13137
13137
  "expression": {
13138
13138
  "arguments": [
13139
13139
  {
13140
- "id": 35343,
13140
+ "id": 35362,
13141
13141
  "name": "BACKEND_ROLE",
13142
13142
  "nodeType": "Identifier",
13143
13143
  "overloadedDeclarations": [],
13144
- "referencedDeclaration": 35137,
13145
- "src": "3077:12:98",
13144
+ "referencedDeclaration": 35156,
13145
+ "src": "3073:12:98",
13146
13146
  "typeDescriptions": {
13147
13147
  "typeIdentifier": "t_bytes32",
13148
13148
  "typeString": "bytes32"
13149
13149
  }
13150
13150
  },
13151
13151
  {
13152
- "id": 35344,
13152
+ "id": 35363,
13153
13153
  "name": "account",
13154
13154
  "nodeType": "Identifier",
13155
13155
  "overloadedDeclarations": [],
13156
- "referencedDeclaration": 35329,
13157
- "src": "3091:7:98",
13156
+ "referencedDeclaration": 35348,
13157
+ "src": "3087:7:98",
13158
13158
  "typeDescriptions": {
13159
13159
  "typeIdentifier": "t_address",
13160
13160
  "typeString": "address"
@@ -13172,18 +13172,18 @@
13172
13172
  "typeString": "address"
13173
13173
  }
13174
13174
  ],
13175
- "id": 35342,
13175
+ "id": 35361,
13176
13176
  "name": "grantRole",
13177
13177
  "nodeType": "Identifier",
13178
13178
  "overloadedDeclarations": [],
13179
13179
  "referencedDeclaration": 159,
13180
- "src": "3067:9:98",
13180
+ "src": "3063:9:98",
13181
13181
  "typeDescriptions": {
13182
13182
  "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
13183
13183
  "typeString": "function (bytes32,address)"
13184
13184
  }
13185
13185
  },
13186
- "id": 35345,
13186
+ "id": 35364,
13187
13187
  "isConstant": false,
13188
13188
  "isLValue": false,
13189
13189
  "isPure": false,
@@ -13191,46 +13191,46 @@
13191
13191
  "lValueRequested": false,
13192
13192
  "names": [],
13193
13193
  "nodeType": "FunctionCall",
13194
- "src": "3067:32:98",
13194
+ "src": "3063:32:98",
13195
13195
  "tryCall": false,
13196
13196
  "typeDescriptions": {
13197
13197
  "typeIdentifier": "t_tuple$__$",
13198
13198
  "typeString": "tuple()"
13199
13199
  }
13200
13200
  },
13201
- "id": 35346,
13201
+ "id": 35365,
13202
13202
  "nodeType": "ExpressionStatement",
13203
- "src": "3067:32:98"
13203
+ "src": "3063:32:98"
13204
13204
  }
13205
13205
  ]
13206
13206
  },
13207
13207
  "documentation": {
13208
- "id": 35327,
13208
+ "id": 35346,
13209
13209
  "nodeType": "StructuredDocumentation",
13210
- "src": "2820:52:98",
13211
- "text": " @dev Add account to BACKEND_ROLE "
13210
+ "src": "2817:51:98",
13211
+ "text": " @dev Add account to BACKEND_ROLE"
13212
13212
  },
13213
13213
  "functionSelector": "61985da7",
13214
- "id": 35348,
13214
+ "id": 35367,
13215
13215
  "implemented": true,
13216
13216
  "kind": "function",
13217
13217
  "modifiers": [],
13218
13218
  "name": "grantBackendAgent",
13219
- "nameLocation": "2886:17:98",
13219
+ "nameLocation": "2882:17:98",
13220
13220
  "nodeType": "FunctionDefinition",
13221
13221
  "parameters": {
13222
- "id": 35330,
13222
+ "id": 35349,
13223
13223
  "nodeType": "ParameterList",
13224
13224
  "parameters": [
13225
13225
  {
13226
13226
  "constant": false,
13227
- "id": 35329,
13227
+ "id": 35348,
13228
13228
  "mutability": "mutable",
13229
13229
  "name": "account",
13230
- "nameLocation": "2912:7:98",
13230
+ "nameLocation": "2908:7:98",
13231
13231
  "nodeType": "VariableDeclaration",
13232
- "scope": 35348,
13233
- "src": "2904:15:98",
13232
+ "scope": 35367,
13233
+ "src": "2900:15:98",
13234
13234
  "stateVariable": false,
13235
13235
  "storageLocation": "default",
13236
13236
  "typeDescriptions": {
@@ -13238,10 +13238,10 @@
13238
13238
  "typeString": "address"
13239
13239
  },
13240
13240
  "typeName": {
13241
- "id": 35328,
13241
+ "id": 35347,
13242
13242
  "name": "address",
13243
13243
  "nodeType": "ElementaryTypeName",
13244
- "src": "2904:7:98",
13244
+ "src": "2900:7:98",
13245
13245
  "stateMutability": "nonpayable",
13246
13246
  "typeDescriptions": {
13247
13247
  "typeIdentifier": "t_address",
@@ -13251,48 +13251,48 @@
13251
13251
  "visibility": "internal"
13252
13252
  }
13253
13253
  ],
13254
- "src": "2903:17:98"
13254
+ "src": "2899:17:98"
13255
13255
  },
13256
13256
  "returnParameters": {
13257
- "id": 35331,
13257
+ "id": 35350,
13258
13258
  "nodeType": "ParameterList",
13259
13259
  "parameters": [],
13260
- "src": "2930:0:98"
13260
+ "src": "2926:0:98"
13261
13261
  },
13262
- "scope": 35442,
13263
- "src": "2877:229:98",
13262
+ "scope": 35461,
13263
+ "src": "2873:229:98",
13264
13264
  "stateMutability": "nonpayable",
13265
13265
  "virtual": false,
13266
13266
  "visibility": "external"
13267
13267
  },
13268
13268
  {
13269
13269
  "body": {
13270
- "id": 35359,
13270
+ "id": 35378,
13271
13271
  "nodeType": "Block",
13272
- "src": "3226:112:98",
13272
+ "src": "3221:112:98",
13273
13273
  "statements": [
13274
13274
  {
13275
13275
  "expression": {
13276
13276
  "arguments": [
13277
13277
  {
13278
- "id": 35355,
13278
+ "id": 35374,
13279
13279
  "name": "BACKEND_ROLE",
13280
13280
  "nodeType": "Identifier",
13281
13281
  "overloadedDeclarations": [],
13282
- "referencedDeclaration": 35137,
13283
- "src": "3309:12:98",
13282
+ "referencedDeclaration": 35156,
13283
+ "src": "3304:12:98",
13284
13284
  "typeDescriptions": {
13285
13285
  "typeIdentifier": "t_bytes32",
13286
13286
  "typeString": "bytes32"
13287
13287
  }
13288
13288
  },
13289
13289
  {
13290
- "id": 35356,
13290
+ "id": 35375,
13291
13291
  "name": "account",
13292
13292
  "nodeType": "Identifier",
13293
13293
  "overloadedDeclarations": [],
13294
- "referencedDeclaration": 35351,
13295
- "src": "3323:7:98",
13294
+ "referencedDeclaration": 35370,
13295
+ "src": "3318:7:98",
13296
13296
  "typeDescriptions": {
13297
13297
  "typeIdentifier": "t_address",
13298
13298
  "typeString": "address"
@@ -13310,18 +13310,18 @@
13310
13310
  "typeString": "address"
13311
13311
  }
13312
13312
  ],
13313
- "id": 35354,
13313
+ "id": 35373,
13314
13314
  "name": "revokeRole",
13315
13315
  "nodeType": "Identifier",
13316
13316
  "overloadedDeclarations": [],
13317
13317
  "referencedDeclaration": 179,
13318
- "src": "3298:10:98",
13318
+ "src": "3293:10:98",
13319
13319
  "typeDescriptions": {
13320
13320
  "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
13321
13321
  "typeString": "function (bytes32,address)"
13322
13322
  }
13323
13323
  },
13324
- "id": 35357,
13324
+ "id": 35376,
13325
13325
  "isConstant": false,
13326
13326
  "isLValue": false,
13327
13327
  "isPure": false,
@@ -13329,46 +13329,46 @@
13329
13329
  "lValueRequested": false,
13330
13330
  "names": [],
13331
13331
  "nodeType": "FunctionCall",
13332
- "src": "3298:33:98",
13332
+ "src": "3293:33:98",
13333
13333
  "tryCall": false,
13334
13334
  "typeDescriptions": {
13335
13335
  "typeIdentifier": "t_tuple$__$",
13336
13336
  "typeString": "tuple()"
13337
13337
  }
13338
13338
  },
13339
- "id": 35358,
13339
+ "id": 35377,
13340
13340
  "nodeType": "ExpressionStatement",
13341
- "src": "3298:33:98"
13341
+ "src": "3293:33:98"
13342
13342
  }
13343
13343
  ]
13344
13344
  },
13345
13345
  "documentation": {
13346
- "id": 35349,
13346
+ "id": 35368,
13347
13347
  "nodeType": "StructuredDocumentation",
13348
- "src": "3112:55:98",
13349
- "text": " @dev Remove account to BACKEND_ROLE "
13348
+ "src": "3108:54:98",
13349
+ "text": " @dev Remove account to BACKEND_ROLE"
13350
13350
  },
13351
13351
  "functionSelector": "abcac5eb",
13352
- "id": 35360,
13352
+ "id": 35379,
13353
13353
  "implemented": true,
13354
13354
  "kind": "function",
13355
13355
  "modifiers": [],
13356
13356
  "name": "revokeBackendAgent",
13357
- "nameLocation": "3181:18:98",
13357
+ "nameLocation": "3176:18:98",
13358
13358
  "nodeType": "FunctionDefinition",
13359
13359
  "parameters": {
13360
- "id": 35352,
13360
+ "id": 35371,
13361
13361
  "nodeType": "ParameterList",
13362
13362
  "parameters": [
13363
13363
  {
13364
13364
  "constant": false,
13365
- "id": 35351,
13365
+ "id": 35370,
13366
13366
  "mutability": "mutable",
13367
13367
  "name": "account",
13368
- "nameLocation": "3208:7:98",
13368
+ "nameLocation": "3203:7:98",
13369
13369
  "nodeType": "VariableDeclaration",
13370
- "scope": 35360,
13371
- "src": "3200:15:98",
13370
+ "scope": 35379,
13371
+ "src": "3195:15:98",
13372
13372
  "stateVariable": false,
13373
13373
  "storageLocation": "default",
13374
13374
  "typeDescriptions": {
@@ -13376,10 +13376,10 @@
13376
13376
  "typeString": "address"
13377
13377
  },
13378
13378
  "typeName": {
13379
- "id": 35350,
13379
+ "id": 35369,
13380
13380
  "name": "address",
13381
13381
  "nodeType": "ElementaryTypeName",
13382
- "src": "3200:7:98",
13382
+ "src": "3195:7:98",
13383
13383
  "stateMutability": "nonpayable",
13384
13384
  "typeDescriptions": {
13385
13385
  "typeIdentifier": "t_address",
@@ -13389,40 +13389,40 @@
13389
13389
  "visibility": "internal"
13390
13390
  }
13391
13391
  ],
13392
- "src": "3199:17:98"
13392
+ "src": "3194:17:98"
13393
13393
  },
13394
13394
  "returnParameters": {
13395
- "id": 35353,
13395
+ "id": 35372,
13396
13396
  "nodeType": "ParameterList",
13397
13397
  "parameters": [],
13398
- "src": "3226:0:98"
13398
+ "src": "3221:0:98"
13399
13399
  },
13400
- "scope": 35442,
13401
- "src": "3172:166:98",
13400
+ "scope": 35461,
13401
+ "src": "3167:166:98",
13402
13402
  "stateMutability": "nonpayable",
13403
13403
  "virtual": false,
13404
13404
  "visibility": "external"
13405
13405
  },
13406
13406
  {
13407
13407
  "body": {
13408
- "id": 35407,
13408
+ "id": 35426,
13409
13409
  "nodeType": "Block",
13410
- "src": "3480:288:98",
13410
+ "src": "3475:288:98",
13411
13411
  "statements": [
13412
13412
  {
13413
13413
  "assignments": [
13414
- 35368
13414
+ 35387
13415
13415
  ],
13416
13416
  "declarations": [
13417
13417
  {
13418
13418
  "constant": false,
13419
- "id": 35368,
13419
+ "id": 35387,
13420
13420
  "mutability": "mutable",
13421
13421
  "name": "numberOfMembers",
13422
- "nameLocation": "3498:15:98",
13422
+ "nameLocation": "3493:15:98",
13423
13423
  "nodeType": "VariableDeclaration",
13424
- "scope": 35407,
13425
- "src": "3490:23:98",
13424
+ "scope": 35426,
13425
+ "src": "3485:23:98",
13426
13426
  "stateVariable": false,
13427
13427
  "storageLocation": "default",
13428
13428
  "typeDescriptions": {
@@ -13430,10 +13430,10 @@
13430
13430
  "typeString": "uint256"
13431
13431
  },
13432
13432
  "typeName": {
13433
- "id": 35367,
13433
+ "id": 35386,
13434
13434
  "name": "uint256",
13435
13435
  "nodeType": "ElementaryTypeName",
13436
- "src": "3490:7:98",
13436
+ "src": "3485:7:98",
13437
13437
  "typeDescriptions": {
13438
13438
  "typeIdentifier": "t_uint256",
13439
13439
  "typeString": "uint256"
@@ -13442,16 +13442,16 @@
13442
13442
  "visibility": "internal"
13443
13443
  }
13444
13444
  ],
13445
- "id": 35372,
13445
+ "id": 35391,
13446
13446
  "initialValue": {
13447
13447
  "arguments": [
13448
13448
  {
13449
- "id": 35370,
13449
+ "id": 35389,
13450
13450
  "name": "BACKEND_ROLE",
13451
13451
  "nodeType": "Identifier",
13452
13452
  "overloadedDeclarations": [],
13453
- "referencedDeclaration": 35137,
13454
- "src": "3535:12:98",
13453
+ "referencedDeclaration": 35156,
13454
+ "src": "3530:12:98",
13455
13455
  "typeDescriptions": {
13456
13456
  "typeIdentifier": "t_bytes32",
13457
13457
  "typeString": "bytes32"
@@ -13465,18 +13465,18 @@
13465
13465
  "typeString": "bytes32"
13466
13466
  }
13467
13467
  ],
13468
- "id": 35369,
13468
+ "id": 35388,
13469
13469
  "name": "getRoleMemberCount",
13470
13470
  "nodeType": "Identifier",
13471
13471
  "overloadedDeclarations": [],
13472
13472
  "referencedDeclaration": 384,
13473
- "src": "3516:18:98",
13473
+ "src": "3511:18:98",
13474
13474
  "typeDescriptions": {
13475
13475
  "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
13476
13476
  "typeString": "function (bytes32) view returns (uint256)"
13477
13477
  }
13478
13478
  },
13479
- "id": 35371,
13479
+ "id": 35390,
13480
13480
  "isConstant": false,
13481
13481
  "isLValue": false,
13482
13482
  "isPure": false,
@@ -13484,7 +13484,7 @@
13484
13484
  "lValueRequested": false,
13485
13485
  "names": [],
13486
13486
  "nodeType": "FunctionCall",
13487
- "src": "3516:32:98",
13487
+ "src": "3511:32:98",
13488
13488
  "tryCall": false,
13489
13489
  "typeDescriptions": {
13490
13490
  "typeIdentifier": "t_uint256",
@@ -13492,22 +13492,22 @@
13492
13492
  }
13493
13493
  },
13494
13494
  "nodeType": "VariableDeclarationStatement",
13495
- "src": "3490:58:98"
13495
+ "src": "3485:58:98"
13496
13496
  },
13497
13497
  {
13498
13498
  "assignments": [
13499
- 35377
13499
+ 35396
13500
13500
  ],
13501
13501
  "declarations": [
13502
13502
  {
13503
13503
  "constant": false,
13504
- "id": 35377,
13504
+ "id": 35396,
13505
13505
  "mutability": "mutable",
13506
13506
  "name": "members",
13507
- "nameLocation": "3575:7:98",
13507
+ "nameLocation": "3570:7:98",
13508
13508
  "nodeType": "VariableDeclaration",
13509
- "scope": 35407,
13510
- "src": "3558:24:98",
13509
+ "scope": 35426,
13510
+ "src": "3553:24:98",
13511
13511
  "stateVariable": false,
13512
13512
  "storageLocation": "memory",
13513
13513
  "typeDescriptions": {
@@ -13516,18 +13516,18 @@
13516
13516
  },
13517
13517
  "typeName": {
13518
13518
  "baseType": {
13519
- "id": 35375,
13519
+ "id": 35394,
13520
13520
  "name": "address",
13521
13521
  "nodeType": "ElementaryTypeName",
13522
- "src": "3558:7:98",
13522
+ "src": "3553:7:98",
13523
13523
  "typeDescriptions": {
13524
13524
  "typeIdentifier": "t_address",
13525
13525
  "typeString": "address"
13526
13526
  }
13527
13527
  },
13528
- "id": 35376,
13528
+ "id": 35395,
13529
13529
  "nodeType": "ArrayTypeName",
13530
- "src": "3558:9:98",
13530
+ "src": "3553:9:98",
13531
13531
  "typeDescriptions": {
13532
13532
  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
13533
13533
  "typeString": "address[]"
@@ -13536,16 +13536,16 @@
13536
13536
  "visibility": "internal"
13537
13537
  }
13538
13538
  ],
13539
- "id": 35383,
13539
+ "id": 35402,
13540
13540
  "initialValue": {
13541
13541
  "arguments": [
13542
13542
  {
13543
- "id": 35381,
13543
+ "id": 35400,
13544
13544
  "name": "numberOfMembers",
13545
13545
  "nodeType": "Identifier",
13546
13546
  "overloadedDeclarations": [],
13547
- "referencedDeclaration": 35368,
13548
- "src": "3599:15:98",
13547
+ "referencedDeclaration": 35387,
13548
+ "src": "3594:15:98",
13549
13549
  "typeDescriptions": {
13550
13550
  "typeIdentifier": "t_uint256",
13551
13551
  "typeString": "uint256"
@@ -13559,39 +13559,39 @@
13559
13559
  "typeString": "uint256"
13560
13560
  }
13561
13561
  ],
13562
- "id": 35380,
13562
+ "id": 35399,
13563
13563
  "isConstant": false,
13564
13564
  "isLValue": false,
13565
13565
  "isPure": true,
13566
13566
  "lValueRequested": false,
13567
13567
  "nodeType": "NewExpression",
13568
- "src": "3585:13:98",
13568
+ "src": "3580:13:98",
13569
13569
  "typeDescriptions": {
13570
13570
  "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
13571
13571
  "typeString": "function (uint256) pure returns (address[] memory)"
13572
13572
  },
13573
13573
  "typeName": {
13574
13574
  "baseType": {
13575
- "id": 35378,
13575
+ "id": 35397,
13576
13576
  "name": "address",
13577
13577
  "nodeType": "ElementaryTypeName",
13578
- "src": "3589:7:98",
13578
+ "src": "3584:7:98",
13579
13579
  "stateMutability": "nonpayable",
13580
13580
  "typeDescriptions": {
13581
13581
  "typeIdentifier": "t_address",
13582
13582
  "typeString": "address"
13583
13583
  }
13584
13584
  },
13585
- "id": 35379,
13585
+ "id": 35398,
13586
13586
  "nodeType": "ArrayTypeName",
13587
- "src": "3589:9:98",
13587
+ "src": "3584:9:98",
13588
13588
  "typeDescriptions": {
13589
13589
  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
13590
13590
  "typeString": "address[]"
13591
13591
  }
13592
13592
  }
13593
13593
  },
13594
- "id": 35382,
13594
+ "id": 35401,
13595
13595
  "isConstant": false,
13596
13596
  "isLValue": false,
13597
13597
  "isPure": false,
@@ -13599,7 +13599,7 @@
13599
13599
  "lValueRequested": false,
13600
13600
  "names": [],
13601
13601
  "nodeType": "FunctionCall",
13602
- "src": "3585:30:98",
13602
+ "src": "3580:30:98",
13603
13603
  "tryCall": false,
13604
13604
  "typeDescriptions": {
13605
13605
  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
@@ -13607,42 +13607,42 @@
13607
13607
  }
13608
13608
  },
13609
13609
  "nodeType": "VariableDeclarationStatement",
13610
- "src": "3558:57:98"
13610
+ "src": "3553:57:98"
13611
13611
  },
13612
13612
  {
13613
13613
  "body": {
13614
- "id": 35403,
13614
+ "id": 35422,
13615
13615
  "nodeType": "Block",
13616
- "src": "3670:68:98",
13616
+ "src": "3665:68:98",
13617
13617
  "statements": [
13618
13618
  {
13619
13619
  "expression": {
13620
- "id": 35401,
13620
+ "id": 35420,
13621
13621
  "isConstant": false,
13622
13622
  "isLValue": false,
13623
13623
  "isPure": false,
13624
13624
  "lValueRequested": false,
13625
13625
  "leftHandSide": {
13626
13626
  "baseExpression": {
13627
- "id": 35394,
13627
+ "id": 35413,
13628
13628
  "name": "members",
13629
13629
  "nodeType": "Identifier",
13630
13630
  "overloadedDeclarations": [],
13631
- "referencedDeclaration": 35377,
13632
- "src": "3684:7:98",
13631
+ "referencedDeclaration": 35396,
13632
+ "src": "3679:7:98",
13633
13633
  "typeDescriptions": {
13634
13634
  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
13635
13635
  "typeString": "address[] memory"
13636
13636
  }
13637
13637
  },
13638
- "id": 35396,
13638
+ "id": 35415,
13639
13639
  "indexExpression": {
13640
- "id": 35395,
13640
+ "id": 35414,
13641
13641
  "name": "i",
13642
13642
  "nodeType": "Identifier",
13643
13643
  "overloadedDeclarations": [],
13644
- "referencedDeclaration": 35385,
13645
- "src": "3692:1:98",
13644
+ "referencedDeclaration": 35404,
13645
+ "src": "3687:1:98",
13646
13646
  "typeDescriptions": {
13647
13647
  "typeIdentifier": "t_uint256",
13648
13648
  "typeString": "uint256"
@@ -13653,7 +13653,7 @@
13653
13653
  "isPure": false,
13654
13654
  "lValueRequested": true,
13655
13655
  "nodeType": "IndexAccess",
13656
- "src": "3684:10:98",
13656
+ "src": "3679:10:98",
13657
13657
  "typeDescriptions": {
13658
13658
  "typeIdentifier": "t_address",
13659
13659
  "typeString": "address"
@@ -13664,24 +13664,24 @@
13664
13664
  "rightHandSide": {
13665
13665
  "arguments": [
13666
13666
  {
13667
- "id": 35398,
13667
+ "id": 35417,
13668
13668
  "name": "BACKEND_ROLE",
13669
13669
  "nodeType": "Identifier",
13670
13670
  "overloadedDeclarations": [],
13671
- "referencedDeclaration": 35137,
13672
- "src": "3711:12:98",
13671
+ "referencedDeclaration": 35156,
13672
+ "src": "3706:12:98",
13673
13673
  "typeDescriptions": {
13674
13674
  "typeIdentifier": "t_bytes32",
13675
13675
  "typeString": "bytes32"
13676
13676
  }
13677
13677
  },
13678
13678
  {
13679
- "id": 35399,
13679
+ "id": 35418,
13680
13680
  "name": "i",
13681
13681
  "nodeType": "Identifier",
13682
13682
  "overloadedDeclarations": [],
13683
- "referencedDeclaration": 35385,
13684
- "src": "3725:1:98",
13683
+ "referencedDeclaration": 35404,
13684
+ "src": "3720:1:98",
13685
13685
  "typeDescriptions": {
13686
13686
  "typeIdentifier": "t_uint256",
13687
13687
  "typeString": "uint256"
@@ -13699,18 +13699,18 @@
13699
13699
  "typeString": "uint256"
13700
13700
  }
13701
13701
  ],
13702
- "id": 35397,
13702
+ "id": 35416,
13703
13703
  "name": "getRoleMember",
13704
13704
  "nodeType": "Identifier",
13705
13705
  "overloadedDeclarations": [],
13706
13706
  "referencedDeclaration": 368,
13707
- "src": "3697:13:98",
13707
+ "src": "3692:13:98",
13708
13708
  "typeDescriptions": {
13709
13709
  "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_uint256_$returns$_t_address_$",
13710
13710
  "typeString": "function (bytes32,uint256) view returns (address)"
13711
13711
  }
13712
13712
  },
13713
- "id": 35400,
13713
+ "id": 35419,
13714
13714
  "isConstant": false,
13715
13715
  "isLValue": false,
13716
13716
  "isPure": false,
@@ -13718,22 +13718,22 @@
13718
13718
  "lValueRequested": false,
13719
13719
  "names": [],
13720
13720
  "nodeType": "FunctionCall",
13721
- "src": "3697:30:98",
13721
+ "src": "3692:30:98",
13722
13722
  "tryCall": false,
13723
13723
  "typeDescriptions": {
13724
13724
  "typeIdentifier": "t_address",
13725
13725
  "typeString": "address"
13726
13726
  }
13727
13727
  },
13728
- "src": "3684:43:98",
13728
+ "src": "3679:43:98",
13729
13729
  "typeDescriptions": {
13730
13730
  "typeIdentifier": "t_address",
13731
13731
  "typeString": "address"
13732
13732
  }
13733
13733
  },
13734
- "id": 35402,
13734
+ "id": 35421,
13735
13735
  "nodeType": "ExpressionStatement",
13736
- "src": "3684:43:98"
13736
+ "src": "3679:43:98"
13737
13737
  }
13738
13738
  ]
13739
13739
  },
@@ -13742,18 +13742,18 @@
13742
13742
  "typeIdentifier": "t_uint256",
13743
13743
  "typeString": "uint256"
13744
13744
  },
13745
- "id": 35390,
13745
+ "id": 35409,
13746
13746
  "isConstant": false,
13747
13747
  "isLValue": false,
13748
13748
  "isPure": false,
13749
13749
  "lValueRequested": false,
13750
13750
  "leftExpression": {
13751
- "id": 35388,
13751
+ "id": 35407,
13752
13752
  "name": "i",
13753
13753
  "nodeType": "Identifier",
13754
13754
  "overloadedDeclarations": [],
13755
- "referencedDeclaration": 35385,
13756
- "src": "3644:1:98",
13755
+ "referencedDeclaration": 35404,
13756
+ "src": "3639:1:98",
13757
13757
  "typeDescriptions": {
13758
13758
  "typeIdentifier": "t_uint256",
13759
13759
  "typeString": "uint256"
@@ -13762,38 +13762,38 @@
13762
13762
  "nodeType": "BinaryOperation",
13763
13763
  "operator": "<",
13764
13764
  "rightExpression": {
13765
- "id": 35389,
13765
+ "id": 35408,
13766
13766
  "name": "numberOfMembers",
13767
13767
  "nodeType": "Identifier",
13768
13768
  "overloadedDeclarations": [],
13769
- "referencedDeclaration": 35368,
13770
- "src": "3648:15:98",
13769
+ "referencedDeclaration": 35387,
13770
+ "src": "3643:15:98",
13771
13771
  "typeDescriptions": {
13772
13772
  "typeIdentifier": "t_uint256",
13773
13773
  "typeString": "uint256"
13774
13774
  }
13775
13775
  },
13776
- "src": "3644:19:98",
13776
+ "src": "3639:19:98",
13777
13777
  "typeDescriptions": {
13778
13778
  "typeIdentifier": "t_bool",
13779
13779
  "typeString": "bool"
13780
13780
  }
13781
13781
  },
13782
- "id": 35404,
13782
+ "id": 35423,
13783
13783
  "initializationExpression": {
13784
13784
  "assignments": [
13785
- 35385
13785
+ 35404
13786
13786
  ],
13787
13787
  "declarations": [
13788
13788
  {
13789
13789
  "constant": false,
13790
- "id": 35385,
13790
+ "id": 35404,
13791
13791
  "mutability": "mutable",
13792
13792
  "name": "i",
13793
- "nameLocation": "3637:1:98",
13793
+ "nameLocation": "3632:1:98",
13794
13794
  "nodeType": "VariableDeclaration",
13795
- "scope": 35404,
13796
- "src": "3629:9:98",
13795
+ "scope": 35423,
13796
+ "src": "3624:9:98",
13797
13797
  "stateVariable": false,
13798
13798
  "storageLocation": "default",
13799
13799
  "typeDescriptions": {
@@ -13801,10 +13801,10 @@
13801
13801
  "typeString": "uint256"
13802
13802
  },
13803
13803
  "typeName": {
13804
- "id": 35384,
13804
+ "id": 35403,
13805
13805
  "name": "uint256",
13806
13806
  "nodeType": "ElementaryTypeName",
13807
- "src": "3629:7:98",
13807
+ "src": "3624:7:98",
13808
13808
  "typeDescriptions": {
13809
13809
  "typeIdentifier": "t_uint256",
13810
13810
  "typeString": "uint256"
@@ -13813,17 +13813,17 @@
13813
13813
  "visibility": "internal"
13814
13814
  }
13815
13815
  ],
13816
- "id": 35387,
13816
+ "id": 35406,
13817
13817
  "initialValue": {
13818
13818
  "hexValue": "30",
13819
- "id": 35386,
13819
+ "id": 35405,
13820
13820
  "isConstant": false,
13821
13821
  "isLValue": false,
13822
13822
  "isPure": true,
13823
13823
  "kind": "number",
13824
13824
  "lValueRequested": false,
13825
13825
  "nodeType": "Literal",
13826
- "src": "3641:1:98",
13826
+ "src": "3636:1:98",
13827
13827
  "typeDescriptions": {
13828
13828
  "typeIdentifier": "t_rational_0_by_1",
13829
13829
  "typeString": "int_const 0"
@@ -13831,11 +13831,11 @@
13831
13831
  "value": "0"
13832
13832
  },
13833
13833
  "nodeType": "VariableDeclarationStatement",
13834
- "src": "3629:13:98"
13834
+ "src": "3624:13:98"
13835
13835
  },
13836
13836
  "loopExpression": {
13837
13837
  "expression": {
13838
- "id": 35392,
13838
+ "id": 35411,
13839
13839
  "isConstant": false,
13840
13840
  "isLValue": false,
13841
13841
  "isPure": false,
@@ -13843,14 +13843,14 @@
13843
13843
  "nodeType": "UnaryOperation",
13844
13844
  "operator": "++",
13845
13845
  "prefix": false,
13846
- "src": "3665:3:98",
13846
+ "src": "3660:3:98",
13847
13847
  "subExpression": {
13848
- "id": 35391,
13848
+ "id": 35410,
13849
13849
  "name": "i",
13850
13850
  "nodeType": "Identifier",
13851
13851
  "overloadedDeclarations": [],
13852
- "referencedDeclaration": 35385,
13853
- "src": "3665:1:98",
13852
+ "referencedDeclaration": 35404,
13853
+ "src": "3660:1:98",
13854
13854
  "typeDescriptions": {
13855
13855
  "typeIdentifier": "t_uint256",
13856
13856
  "typeString": "uint256"
@@ -13861,66 +13861,66 @@
13861
13861
  "typeString": "uint256"
13862
13862
  }
13863
13863
  },
13864
- "id": 35393,
13864
+ "id": 35412,
13865
13865
  "nodeType": "ExpressionStatement",
13866
- "src": "3665:3:98"
13866
+ "src": "3660:3:98"
13867
13867
  },
13868
13868
  "nodeType": "ForStatement",
13869
- "src": "3625:113:98"
13869
+ "src": "3620:113:98"
13870
13870
  },
13871
13871
  {
13872
13872
  "expression": {
13873
- "id": 35405,
13873
+ "id": 35424,
13874
13874
  "name": "members",
13875
13875
  "nodeType": "Identifier",
13876
13876
  "overloadedDeclarations": [],
13877
- "referencedDeclaration": 35377,
13878
- "src": "3754:7:98",
13877
+ "referencedDeclaration": 35396,
13878
+ "src": "3749:7:98",
13879
13879
  "typeDescriptions": {
13880
13880
  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
13881
13881
  "typeString": "address[] memory"
13882
13882
  }
13883
13883
  },
13884
- "functionReturnParameters": 35366,
13885
- "id": 35406,
13884
+ "functionReturnParameters": 35385,
13885
+ "id": 35425,
13886
13886
  "nodeType": "Return",
13887
- "src": "3747:14:98"
13887
+ "src": "3742:14:98"
13888
13888
  }
13889
13889
  ]
13890
13890
  },
13891
13891
  "documentation": {
13892
- "id": 35361,
13892
+ "id": 35380,
13893
13893
  "nodeType": "StructuredDocumentation",
13894
- "src": "3344:63:98",
13894
+ "src": "3339:63:98",
13895
13895
  "text": " @dev Get list of all members of BACKEND_ROLE"
13896
13896
  },
13897
13897
  "functionSelector": "0f01a4a2",
13898
- "id": 35408,
13898
+ "id": 35427,
13899
13899
  "implemented": true,
13900
13900
  "kind": "function",
13901
13901
  "modifiers": [],
13902
13902
  "name": "getBackendAgents",
13903
- "nameLocation": "3421:16:98",
13903
+ "nameLocation": "3416:16:98",
13904
13904
  "nodeType": "FunctionDefinition",
13905
13905
  "parameters": {
13906
- "id": 35362,
13906
+ "id": 35381,
13907
13907
  "nodeType": "ParameterList",
13908
13908
  "parameters": [],
13909
- "src": "3437:2:98"
13909
+ "src": "3432:2:98"
13910
13910
  },
13911
13911
  "returnParameters": {
13912
- "id": 35366,
13912
+ "id": 35385,
13913
13913
  "nodeType": "ParameterList",
13914
13914
  "parameters": [
13915
13915
  {
13916
13916
  "constant": false,
13917
- "id": 35365,
13917
+ "id": 35384,
13918
13918
  "mutability": "mutable",
13919
13919
  "name": "",
13920
13920
  "nameLocation": "-1:-1:-1",
13921
13921
  "nodeType": "VariableDeclaration",
13922
- "scope": 35408,
13923
- "src": "3462:16:98",
13922
+ "scope": 35427,
13923
+ "src": "3457:16:98",
13924
13924
  "stateVariable": false,
13925
13925
  "storageLocation": "memory",
13926
13926
  "typeDescriptions": {
@@ -13929,19 +13929,19 @@
13929
13929
  },
13930
13930
  "typeName": {
13931
13931
  "baseType": {
13932
- "id": 35363,
13932
+ "id": 35382,
13933
13933
  "name": "address",
13934
13934
  "nodeType": "ElementaryTypeName",
13935
- "src": "3462:7:98",
13935
+ "src": "3457:7:98",
13936
13936
  "stateMutability": "nonpayable",
13937
13937
  "typeDescriptions": {
13938
13938
  "typeIdentifier": "t_address",
13939
13939
  "typeString": "address"
13940
13940
  }
13941
13941
  },
13942
- "id": 35364,
13942
+ "id": 35383,
13943
13943
  "nodeType": "ArrayTypeName",
13944
- "src": "3462:9:98",
13944
+ "src": "3457:9:98",
13945
13945
  "typeDescriptions": {
13946
13946
  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
13947
13947
  "typeString": "address[]"
@@ -13950,62 +13950,62 @@
13950
13950
  "visibility": "internal"
13951
13951
  }
13952
13952
  ],
13953
- "src": "3461:18:98"
13953
+ "src": "3456:18:98"
13954
13954
  },
13955
- "scope": 35442,
13956
- "src": "3412:356:98",
13955
+ "scope": 35461,
13956
+ "src": "3407:356:98",
13957
13957
  "stateMutability": "view",
13958
13958
  "virtual": false,
13959
13959
  "visibility": "external"
13960
13960
  },
13961
13961
  {
13962
13962
  "body": {
13963
- "id": 35424,
13963
+ "id": 35443,
13964
13964
  "nodeType": "Block",
13965
- "src": "3888:87:98",
13965
+ "src": "3883:87:98",
13966
13966
  "statements": [
13967
13967
  {
13968
13968
  "expression": {
13969
- "id": 35417,
13969
+ "id": 35436,
13970
13970
  "isConstant": false,
13971
13971
  "isLValue": false,
13972
13972
  "isPure": false,
13973
13973
  "lValueRequested": false,
13974
13974
  "leftHandSide": {
13975
13975
  "baseExpression": {
13976
- "id": 35412,
13976
+ "id": 35431,
13977
13977
  "name": "_optout",
13978
13978
  "nodeType": "Identifier",
13979
13979
  "overloadedDeclarations": [],
13980
- "referencedDeclaration": 35149,
13981
- "src": "3898:7:98",
13980
+ "referencedDeclaration": 35168,
13981
+ "src": "3893:7:98",
13982
13982
  "typeDescriptions": {
13983
13983
  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
13984
13984
  "typeString": "mapping(address => bool)"
13985
13985
  }
13986
13986
  },
13987
- "id": 35415,
13987
+ "id": 35434,
13988
13988
  "indexExpression": {
13989
13989
  "expression": {
13990
- "id": 35413,
13990
+ "id": 35432,
13991
13991
  "name": "msg",
13992
13992
  "nodeType": "Identifier",
13993
13993
  "overloadedDeclarations": [],
13994
13994
  "referencedDeclaration": 4294967281,
13995
- "src": "3906:3:98",
13995
+ "src": "3901:3:98",
13996
13996
  "typeDescriptions": {
13997
13997
  "typeIdentifier": "t_magic_message",
13998
13998
  "typeString": "msg"
13999
13999
  }
14000
14000
  },
14001
- "id": 35414,
14001
+ "id": 35433,
14002
14002
  "isConstant": false,
14003
14003
  "isLValue": false,
14004
14004
  "isPure": false,
14005
14005
  "lValueRequested": false,
14006
14006
  "memberName": "sender",
14007
14007
  "nodeType": "MemberAccess",
14008
- "src": "3906:10:98",
14008
+ "src": "3901:10:98",
14009
14009
  "typeDescriptions": {
14010
14010
  "typeIdentifier": "t_address",
14011
14011
  "typeString": "address"
@@ -14016,7 +14016,7 @@
14016
14016
  "isPure": false,
14017
14017
  "lValueRequested": true,
14018
14018
  "nodeType": "IndexAccess",
14019
- "src": "3898:19:98",
14019
+ "src": "3893:19:98",
14020
14020
  "typeDescriptions": {
14021
14021
  "typeIdentifier": "t_bool",
14022
14022
  "typeString": "bool"
@@ -14026,54 +14026,54 @@
14026
14026
  "operator": "=",
14027
14027
  "rightHandSide": {
14028
14028
  "hexValue": "74727565",
14029
- "id": 35416,
14029
+ "id": 35435,
14030
14030
  "isConstant": false,
14031
14031
  "isLValue": false,
14032
14032
  "isPure": true,
14033
14033
  "kind": "bool",
14034
14034
  "lValueRequested": false,
14035
14035
  "nodeType": "Literal",
14036
- "src": "3920:4:98",
14036
+ "src": "3915:4:98",
14037
14037
  "typeDescriptions": {
14038
14038
  "typeIdentifier": "t_bool",
14039
14039
  "typeString": "bool"
14040
14040
  },
14041
14041
  "value": "true"
14042
14042
  },
14043
- "src": "3898:26:98",
14043
+ "src": "3893:26:98",
14044
14044
  "typeDescriptions": {
14045
14045
  "typeIdentifier": "t_bool",
14046
14046
  "typeString": "bool"
14047
14047
  }
14048
14048
  },
14049
- "id": 35418,
14049
+ "id": 35437,
14050
14050
  "nodeType": "ExpressionStatement",
14051
- "src": "3898:26:98"
14051
+ "src": "3893:26:98"
14052
14052
  },
14053
14053
  {
14054
14054
  "eventCall": {
14055
14055
  "arguments": [
14056
14056
  {
14057
14057
  "expression": {
14058
- "id": 35420,
14058
+ "id": 35439,
14059
14059
  "name": "msg",
14060
14060
  "nodeType": "Identifier",
14061
14061
  "overloadedDeclarations": [],
14062
14062
  "referencedDeclaration": 4294967281,
14063
- "src": "3957:3:98",
14063
+ "src": "3952:3:98",
14064
14064
  "typeDescriptions": {
14065
14065
  "typeIdentifier": "t_magic_message",
14066
14066
  "typeString": "msg"
14067
14067
  }
14068
14068
  },
14069
- "id": 35421,
14069
+ "id": 35440,
14070
14070
  "isConstant": false,
14071
14071
  "isLValue": false,
14072
14072
  "isPure": false,
14073
14073
  "lValueRequested": false,
14074
14074
  "memberName": "sender",
14075
14075
  "nodeType": "MemberAccess",
14076
- "src": "3957:10:98",
14076
+ "src": "3952:10:98",
14077
14077
  "typeDescriptions": {
14078
14078
  "typeIdentifier": "t_address",
14079
14079
  "typeString": "address"
@@ -14087,18 +14087,18 @@
14087
14087
  "typeString": "address"
14088
14088
  }
14089
14089
  ],
14090
- "id": 35419,
14090
+ "id": 35438,
14091
14091
  "name": "OptoutAutoUpgrade",
14092
14092
  "nodeType": "Identifier",
14093
14093
  "overloadedDeclarations": [],
14094
- "referencedDeclaration": 35141,
14095
- "src": "3939:17:98",
14094
+ "referencedDeclaration": 35160,
14095
+ "src": "3934:17:98",
14096
14096
  "typeDescriptions": {
14097
14097
  "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
14098
14098
  "typeString": "function (address)"
14099
14099
  }
14100
14100
  },
14101
- "id": 35422,
14101
+ "id": 35441,
14102
14102
  "isConstant": false,
14103
14103
  "isLValue": false,
14104
14104
  "isPure": false,
@@ -14106,60 +14106,60 @@
14106
14106
  "lValueRequested": false,
14107
14107
  "names": [],
14108
14108
  "nodeType": "FunctionCall",
14109
- "src": "3939:29:98",
14109
+ "src": "3934:29:98",
14110
14110
  "tryCall": false,
14111
14111
  "typeDescriptions": {
14112
14112
  "typeIdentifier": "t_tuple$__$",
14113
14113
  "typeString": "tuple()"
14114
14114
  }
14115
14115
  },
14116
- "id": 35423,
14116
+ "id": 35442,
14117
14117
  "nodeType": "EmitStatement",
14118
- "src": "3934:34:98"
14118
+ "src": "3929:34:98"
14119
14119
  }
14120
14120
  ]
14121
14121
  },
14122
14122
  "documentation": {
14123
- "id": 35409,
14123
+ "id": 35428,
14124
14124
  "nodeType": "StructuredDocumentation",
14125
- "src": "3774:70:98",
14125
+ "src": "3769:70:98",
14126
14126
  "text": " @dev User signal that opt-out from backend upgrades"
14127
14127
  },
14128
14128
  "functionSelector": "ec328253",
14129
- "id": 35425,
14129
+ "id": 35444,
14130
14130
  "implemented": true,
14131
14131
  "kind": "function",
14132
14132
  "modifiers": [],
14133
14133
  "name": "optoutAutoUpgrades",
14134
- "nameLocation": "3858:18:98",
14134
+ "nameLocation": "3853:18:98",
14135
14135
  "nodeType": "FunctionDefinition",
14136
14136
  "parameters": {
14137
- "id": 35410,
14137
+ "id": 35429,
14138
14138
  "nodeType": "ParameterList",
14139
14139
  "parameters": [],
14140
- "src": "3876:2:98"
14140
+ "src": "3871:2:98"
14141
14141
  },
14142
14142
  "returnParameters": {
14143
- "id": 35411,
14143
+ "id": 35430,
14144
14144
  "nodeType": "ParameterList",
14145
14145
  "parameters": [],
14146
- "src": "3888:0:98"
14146
+ "src": "3883:0:98"
14147
14147
  },
14148
- "scope": 35442,
14149
- "src": "3849:126:98",
14148
+ "scope": 35461,
14149
+ "src": "3844:126:98",
14150
14150
  "stateMutability": "nonpayable",
14151
14151
  "virtual": false,
14152
14152
  "visibility": "external"
14153
14153
  },
14154
14154
  {
14155
14155
  "body": {
14156
- "id": 35440,
14156
+ "id": 35459,
14157
14157
  "nodeType": "Block",
14158
- "src": "4101:86:98",
14158
+ "src": "4096:86:98",
14159
14159
  "statements": [
14160
14160
  {
14161
14161
  "expression": {
14162
- "id": 35433,
14162
+ "id": 35452,
14163
14163
  "isConstant": false,
14164
14164
  "isLValue": false,
14165
14165
  "isPure": false,
@@ -14167,42 +14167,42 @@
14167
14167
  "nodeType": "UnaryOperation",
14168
14168
  "operator": "delete",
14169
14169
  "prefix": true,
14170
- "src": "4111:26:98",
14170
+ "src": "4106:26:98",
14171
14171
  "subExpression": {
14172
14172
  "baseExpression": {
14173
- "id": 35429,
14173
+ "id": 35448,
14174
14174
  "name": "_optout",
14175
14175
  "nodeType": "Identifier",
14176
14176
  "overloadedDeclarations": [],
14177
- "referencedDeclaration": 35149,
14178
- "src": "4118:7:98",
14177
+ "referencedDeclaration": 35168,
14178
+ "src": "4113:7:98",
14179
14179
  "typeDescriptions": {
14180
14180
  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
14181
14181
  "typeString": "mapping(address => bool)"
14182
14182
  }
14183
14183
  },
14184
- "id": 35432,
14184
+ "id": 35451,
14185
14185
  "indexExpression": {
14186
14186
  "expression": {
14187
- "id": 35430,
14187
+ "id": 35449,
14188
14188
  "name": "msg",
14189
14189
  "nodeType": "Identifier",
14190
14190
  "overloadedDeclarations": [],
14191
14191
  "referencedDeclaration": 4294967281,
14192
- "src": "4126:3:98",
14192
+ "src": "4121:3:98",
14193
14193
  "typeDescriptions": {
14194
14194
  "typeIdentifier": "t_magic_message",
14195
14195
  "typeString": "msg"
14196
14196
  }
14197
14197
  },
14198
- "id": 35431,
14198
+ "id": 35450,
14199
14199
  "isConstant": false,
14200
14200
  "isLValue": false,
14201
14201
  "isPure": false,
14202
14202
  "lValueRequested": false,
14203
14203
  "memberName": "sender",
14204
14204
  "nodeType": "MemberAccess",
14205
- "src": "4126:10:98",
14205
+ "src": "4121:10:98",
14206
14206
  "typeDescriptions": {
14207
14207
  "typeIdentifier": "t_address",
14208
14208
  "typeString": "address"
@@ -14213,7 +14213,7 @@
14213
14213
  "isPure": false,
14214
14214
  "lValueRequested": true,
14215
14215
  "nodeType": "IndexAccess",
14216
- "src": "4118:19:98",
14216
+ "src": "4113:19:98",
14217
14217
  "typeDescriptions": {
14218
14218
  "typeIdentifier": "t_bool",
14219
14219
  "typeString": "bool"
@@ -14224,34 +14224,34 @@
14224
14224
  "typeString": "tuple()"
14225
14225
  }
14226
14226
  },
14227
- "id": 35434,
14227
+ "id": 35453,
14228
14228
  "nodeType": "ExpressionStatement",
14229
- "src": "4111:26:98"
14229
+ "src": "4106:26:98"
14230
14230
  },
14231
14231
  {
14232
14232
  "eventCall": {
14233
14233
  "arguments": [
14234
14234
  {
14235
14235
  "expression": {
14236
- "id": 35436,
14236
+ "id": 35455,
14237
14237
  "name": "msg",
14238
14238
  "nodeType": "Identifier",
14239
14239
  "overloadedDeclarations": [],
14240
14240
  "referencedDeclaration": 4294967281,
14241
- "src": "4169:3:98",
14241
+ "src": "4164:3:98",
14242
14242
  "typeDescriptions": {
14243
14243
  "typeIdentifier": "t_magic_message",
14244
14244
  "typeString": "msg"
14245
14245
  }
14246
14246
  },
14247
- "id": 35437,
14247
+ "id": 35456,
14248
14248
  "isConstant": false,
14249
14249
  "isLValue": false,
14250
14250
  "isPure": false,
14251
14251
  "lValueRequested": false,
14252
14252
  "memberName": "sender",
14253
14253
  "nodeType": "MemberAccess",
14254
- "src": "4169:10:98",
14254
+ "src": "4164:10:98",
14255
14255
  "typeDescriptions": {
14256
14256
  "typeIdentifier": "t_address",
14257
14257
  "typeString": "address"
@@ -14265,18 +14265,18 @@
14265
14265
  "typeString": "address"
14266
14266
  }
14267
14267
  ],
14268
- "id": 35435,
14268
+ "id": 35454,
14269
14269
  "name": "OptinAutoUpgrade",
14270
14270
  "nodeType": "Identifier",
14271
14271
  "overloadedDeclarations": [],
14272
- "referencedDeclaration": 35145,
14273
- "src": "4152:16:98",
14272
+ "referencedDeclaration": 35164,
14273
+ "src": "4147:16:98",
14274
14274
  "typeDescriptions": {
14275
14275
  "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
14276
14276
  "typeString": "function (address)"
14277
14277
  }
14278
14278
  },
14279
- "id": 35438,
14279
+ "id": 35457,
14280
14280
  "isConstant": false,
14281
14281
  "isLValue": false,
14282
14282
  "isPure": false,
@@ -14284,66 +14284,66 @@
14284
14284
  "lValueRequested": false,
14285
14285
  "names": [],
14286
14286
  "nodeType": "FunctionCall",
14287
- "src": "4152:28:98",
14287
+ "src": "4147:28:98",
14288
14288
  "tryCall": false,
14289
14289
  "typeDescriptions": {
14290
14290
  "typeIdentifier": "t_tuple$__$",
14291
14291
  "typeString": "tuple()"
14292
14292
  }
14293
14293
  },
14294
- "id": 35439,
14294
+ "id": 35458,
14295
14295
  "nodeType": "EmitStatement",
14296
- "src": "4147:33:98"
14296
+ "src": "4142:33:98"
14297
14297
  }
14298
14298
  ]
14299
14299
  },
14300
14300
  "documentation": {
14301
- "id": 35426,
14301
+ "id": 35445,
14302
14302
  "nodeType": "StructuredDocumentation",
14303
- "src": "3981:77:98",
14303
+ "src": "3976:77:98",
14304
14304
  "text": " @dev User signal that revoke opt-out from backend upgrades"
14305
14305
  },
14306
14306
  "functionSelector": "5d730c58",
14307
- "id": 35441,
14307
+ "id": 35460,
14308
14308
  "implemented": true,
14309
14309
  "kind": "function",
14310
14310
  "modifiers": [],
14311
14311
  "name": "optinAutoUpgrades",
14312
- "nameLocation": "4072:17:98",
14312
+ "nameLocation": "4067:17:98",
14313
14313
  "nodeType": "FunctionDefinition",
14314
14314
  "parameters": {
14315
- "id": 35427,
14315
+ "id": 35446,
14316
14316
  "nodeType": "ParameterList",
14317
14317
  "parameters": [],
14318
- "src": "4089:2:98"
14318
+ "src": "4084:2:98"
14319
14319
  },
14320
14320
  "returnParameters": {
14321
- "id": 35428,
14321
+ "id": 35447,
14322
14322
  "nodeType": "ParameterList",
14323
14323
  "parameters": [],
14324
- "src": "4101:0:98"
14324
+ "src": "4096:0:98"
14325
14325
  },
14326
- "scope": 35442,
14327
- "src": "4063:124:98",
14326
+ "scope": 35461,
14327
+ "src": "4058:124:98",
14328
14328
  "stateMutability": "nonpayable",
14329
14329
  "virtual": false,
14330
14330
  "visibility": "external"
14331
14331
  }
14332
14332
  ],
14333
- "scope": 35443,
14334
- "src": "645:3544:98",
14333
+ "scope": 35462,
14334
+ "src": "645:3539:98",
14335
14335
  "usedErrors": []
14336
14336
  }
14337
14337
  ],
14338
- "src": "35:4155:98"
14338
+ "src": "35:4150:98"
14339
14339
  },
14340
14340
  "compiler": {
14341
14341
  "name": "solc",
14342
- "version": "0.8.13+commit.abaa5c0e.Emscripten.clang"
14342
+ "version": "0.8.14+commit.80d49f37.Emscripten.clang"
14343
14343
  },
14344
14344
  "networks": {},
14345
14345
  "schemaVersion": "3.4.7",
14346
- "updatedAt": "2022-06-03T09:45:14.343Z",
14346
+ "updatedAt": "2022-06-15T22:03:59.003Z",
14347
14347
  "devdoc": {
14348
14348
  "author": "Superfluid NOTE: - User would need to first SuperToken.approve the `SuperUpgrader` for the job. - Using access control to allow multiple backend agent to upgrade tokens for the users - Risk taken by the user is that the underlying tokens are converted to the Super Tokens by the upgrader agents.",
14349
14349
  "kind": "dev",
@@ -14361,7 +14361,7 @@
14361
14361
  "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role."
14362
14362
  },
14363
14363
  "grantBackendAgent(address)": {
14364
- "details": "Add account to BACKEND_ROLE "
14364
+ "details": "Add account to BACKEND_ROLE"
14365
14365
  },
14366
14366
  "grantRole(bytes32,address)": {
14367
14367
  "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role."
@@ -14370,7 +14370,7 @@
14370
14370
  "details": "Returns `true` if `account` has been granted `role`."
14371
14371
  },
14372
14372
  "isBackendAgent(address)": {
14373
- "details": "Test if account is member BACKEND_ROLE "
14373
+ "details": "Test if account is member BACKEND_ROLE"
14374
14374
  },
14375
14375
  "optinAutoUpgrades()": {
14376
14376
  "details": "User signal that revoke opt-out from backend upgrades"
@@ -14382,7 +14382,7 @@
14382
14382
  "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`."
14383
14383
  },
14384
14384
  "revokeBackendAgent(address)": {
14385
- "details": "Remove account to BACKEND_ROLE "
14385
+ "details": "Remove account to BACKEND_ROLE"
14386
14386
  },
14387
14387
  "revokeRole(bytes32,address)": {
14388
14388
  "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role."
@@ -14395,7 +14395,7 @@
14395
14395
  "params": {
14396
14396
  "account": "User address that previous approved this contract.",
14397
14397
  "amount": "Amount value to be upgraded.",
14398
- "superTokenAddr": "Super Token Address to upgrade "
14398
+ "superTokenAddr": "Super Token Address to upgrade"
14399
14399
  }
14400
14400
  }
14401
14401
  },