web3 7.0.0b1__py3-none-any.whl → 7.7.0__py3-none-any.whl

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 (261) hide show
  1. ens/__init__.py +13 -2
  2. ens/_normalization.py +4 -4
  3. ens/async_ens.py +31 -21
  4. ens/base_ens.py +3 -1
  5. ens/contract_data.py +2 -2
  6. ens/ens.py +14 -11
  7. ens/exceptions.py +16 -29
  8. ens/specs/nf.json +1 -1
  9. ens/specs/normalization_spec.json +1 -1
  10. ens/utils.py +33 -41
  11. web3/__init__.py +23 -12
  12. web3/_utils/abi.py +162 -274
  13. web3/_utils/async_transactions.py +34 -20
  14. web3/_utils/batching.py +217 -0
  15. web3/_utils/blocks.py +6 -2
  16. web3/_utils/caching/__init__.py +12 -0
  17. web3/_utils/caching/caching_utils.py +433 -0
  18. web3/_utils/caching/request_caching_validation.py +287 -0
  19. web3/_utils/compat/__init__.py +2 -3
  20. web3/_utils/contract_sources/compile_contracts.py +1 -1
  21. web3/_utils/contract_sources/contract_data/ambiguous_function_contract.py +42 -0
  22. web3/_utils/contract_sources/contract_data/arrays_contract.py +3 -3
  23. web3/_utils/contract_sources/contract_data/bytes_contracts.py +5 -5
  24. web3/_utils/contract_sources/contract_data/constructor_contracts.py +7 -7
  25. web3/_utils/contract_sources/contract_data/contract_caller_tester.py +3 -3
  26. web3/_utils/contract_sources/contract_data/emitter_contract.py +3 -3
  27. web3/_utils/contract_sources/contract_data/event_contracts.py +50 -5
  28. web3/_utils/contract_sources/contract_data/extended_resolver.py +3 -3
  29. web3/_utils/contract_sources/contract_data/fallback_function_contract.py +3 -3
  30. web3/_utils/contract_sources/contract_data/function_name_tester_contract.py +3 -3
  31. web3/_utils/contract_sources/contract_data/math_contract.py +3 -3
  32. web3/_utils/contract_sources/contract_data/offchain_lookup.py +3 -3
  33. web3/_utils/contract_sources/contract_data/offchain_resolver.py +3 -3
  34. web3/_utils/contract_sources/contract_data/panic_errors_contract.py +3 -3
  35. web3/_utils/contract_sources/contract_data/payable_tester.py +3 -3
  36. web3/_utils/contract_sources/contract_data/receive_function_contracts.py +5 -5
  37. web3/_utils/contract_sources/contract_data/reflector_contracts.py +3 -3
  38. web3/_utils/contract_sources/contract_data/revert_contract.py +3 -3
  39. web3/_utils/contract_sources/contract_data/simple_resolver.py +3 -3
  40. web3/_utils/contract_sources/contract_data/storage_contract.py +3 -3
  41. web3/_utils/contract_sources/contract_data/string_contract.py +3 -3
  42. web3/_utils/contract_sources/contract_data/tuple_contracts.py +5 -5
  43. web3/_utils/contracts.py +172 -220
  44. web3/_utils/datatypes.py +5 -1
  45. web3/_utils/decorators.py +6 -1
  46. web3/_utils/empty.py +1 -1
  47. web3/_utils/encoding.py +16 -12
  48. web3/_utils/error_formatters_utils.py +5 -3
  49. web3/_utils/events.py +78 -72
  50. web3/_utils/fee_utils.py +1 -3
  51. web3/_utils/filters.py +24 -22
  52. web3/_utils/formatters.py +2 -2
  53. web3/_utils/http.py +8 -2
  54. web3/_utils/http_session_manager.py +314 -0
  55. web3/_utils/math.py +14 -15
  56. web3/_utils/method_formatters.py +161 -34
  57. web3/_utils/module.py +2 -1
  58. web3/_utils/module_testing/__init__.py +3 -2
  59. web3/_utils/module_testing/eth_module.py +736 -583
  60. web3/_utils/module_testing/go_ethereum_debug_module.py +128 -0
  61. web3/_utils/module_testing/module_testing_utils.py +81 -24
  62. web3/_utils/module_testing/persistent_connection_provider.py +702 -220
  63. web3/_utils/module_testing/utils.py +114 -33
  64. web3/_utils/module_testing/web3_module.py +438 -17
  65. web3/_utils/normalizers.py +13 -11
  66. web3/_utils/rpc_abi.py +10 -22
  67. web3/_utils/threads.py +8 -7
  68. web3/_utils/transactions.py +32 -25
  69. web3/_utils/type_conversion.py +5 -1
  70. web3/_utils/validation.py +20 -17
  71. web3/beacon/__init__.py +5 -0
  72. web3/beacon/api_endpoints.py +3 -0
  73. web3/beacon/async_beacon.py +29 -6
  74. web3/beacon/beacon.py +24 -6
  75. web3/contract/__init__.py +7 -0
  76. web3/contract/async_contract.py +285 -82
  77. web3/contract/base_contract.py +556 -258
  78. web3/contract/contract.py +295 -84
  79. web3/contract/utils.py +251 -55
  80. web3/datastructures.py +56 -41
  81. web3/eth/__init__.py +7 -0
  82. web3/eth/async_eth.py +89 -69
  83. web3/eth/base_eth.py +7 -3
  84. web3/eth/eth.py +43 -66
  85. web3/exceptions.py +158 -83
  86. web3/gas_strategies/time_based.py +8 -6
  87. web3/geth.py +53 -184
  88. web3/main.py +77 -43
  89. web3/manager.py +368 -101
  90. web3/method.py +43 -15
  91. web3/middleware/__init__.py +26 -8
  92. web3/middleware/attrdict.py +12 -22
  93. web3/middleware/base.py +55 -2
  94. web3/middleware/filter.py +45 -23
  95. web3/middleware/formatting.py +6 -3
  96. web3/middleware/names.py +4 -1
  97. web3/middleware/signing.py +15 -6
  98. web3/middleware/stalecheck.py +2 -1
  99. web3/module.py +62 -26
  100. web3/providers/__init__.py +21 -0
  101. web3/providers/async_base.py +93 -38
  102. web3/providers/base.py +85 -40
  103. web3/providers/eth_tester/__init__.py +5 -0
  104. web3/providers/eth_tester/defaults.py +2 -55
  105. web3/providers/eth_tester/main.py +57 -35
  106. web3/providers/eth_tester/middleware.py +16 -17
  107. web3/providers/ipc.py +42 -18
  108. web3/providers/legacy_websocket.py +27 -2
  109. web3/providers/persistent/__init__.py +7 -0
  110. web3/providers/persistent/async_ipc.py +61 -121
  111. web3/providers/persistent/persistent.py +324 -17
  112. web3/providers/persistent/persistent_connection.py +54 -5
  113. web3/providers/persistent/request_processor.py +136 -56
  114. web3/providers/persistent/subscription_container.py +56 -0
  115. web3/providers/persistent/subscription_manager.py +233 -0
  116. web3/providers/persistent/websocket.py +29 -92
  117. web3/providers/rpc/__init__.py +5 -0
  118. web3/providers/rpc/async_rpc.py +73 -18
  119. web3/providers/rpc/rpc.py +73 -30
  120. web3/providers/rpc/utils.py +1 -13
  121. web3/scripts/install_pre_releases.py +33 -0
  122. web3/scripts/parse_pygeth_version.py +16 -0
  123. web3/testing.py +4 -4
  124. web3/tracing.py +9 -5
  125. web3/types.py +141 -74
  126. web3/utils/__init__.py +64 -5
  127. web3/utils/abi.py +790 -10
  128. web3/utils/address.py +8 -0
  129. web3/utils/async_exception_handling.py +20 -11
  130. web3/utils/caching.py +34 -4
  131. web3/utils/exception_handling.py +9 -12
  132. web3/utils/subscriptions.py +285 -0
  133. {web3-7.0.0b1.dist-info → web3-7.7.0.dist-info}/LICENSE +1 -1
  134. web3-7.7.0.dist-info/METADATA +130 -0
  135. web3-7.7.0.dist-info/RECORD +171 -0
  136. {web3-7.0.0b1.dist-info → web3-7.7.0.dist-info}/WHEEL +1 -1
  137. {web3-7.0.0b1.dist-info → web3-7.7.0.dist-info}/top_level.txt +0 -1
  138. ethpm/__init__.py +0 -20
  139. ethpm/_utils/__init__.py +0 -0
  140. ethpm/_utils/backend.py +0 -93
  141. ethpm/_utils/cache.py +0 -44
  142. ethpm/_utils/chains.py +0 -119
  143. ethpm/_utils/contract.py +0 -35
  144. ethpm/_utils/deployments.py +0 -145
  145. ethpm/_utils/ipfs.py +0 -116
  146. ethpm/_utils/protobuf/__init__.py +0 -0
  147. ethpm/_utils/protobuf/ipfs_file_pb2.py +0 -33
  148. ethpm/_utils/registry.py +0 -29
  149. ethpm/assets/__init__.py +0 -0
  150. ethpm/assets/ens/v3.json +0 -1
  151. ethpm/assets/escrow/with_bytecode_v3.json +0 -1
  152. ethpm/assets/ipfs_file.proto +0 -32
  153. ethpm/assets/owned/output_v3.json +0 -1
  154. ethpm/assets/owned/with_contract_type_v3.json +0 -1
  155. ethpm/assets/registry/contracts/Authority.sol +0 -156
  156. ethpm/assets/registry/contracts/IndexedOrderedSetLib.sol +0 -106
  157. ethpm/assets/registry/contracts/PackageDB.sol +0 -225
  158. ethpm/assets/registry/contracts/PackageRegistry.sol +0 -361
  159. ethpm/assets/registry/contracts/PackageRegistryInterface.sol +0 -97
  160. ethpm/assets/registry/contracts/ReleaseDB.sol +0 -309
  161. ethpm/assets/registry/contracts/ReleaseValidator.sol +0 -152
  162. ethpm/assets/registry/solc_input.json +0 -1
  163. ethpm/assets/registry/solc_output.json +0 -1
  164. ethpm/assets/registry/v3.json +0 -1
  165. ethpm/assets/safe-math-lib/v3-strict-no-deployments.json +0 -1
  166. ethpm/assets/simple-registry/contracts/Ownable.sol +0 -63
  167. ethpm/assets/simple-registry/contracts/PackageRegistry.sol +0 -373
  168. ethpm/assets/simple-registry/contracts/PackageRegistryInterface.sol +0 -96
  169. ethpm/assets/simple-registry/solc_input.json +0 -33
  170. ethpm/assets/simple-registry/solc_output.json +0 -1
  171. ethpm/assets/simple-registry/v3.json +0 -1
  172. ethpm/assets/standard-token/output_v3.json +0 -1
  173. ethpm/assets/standard-token/with_bytecode_v3.json +0 -1
  174. ethpm/assets/vyper_registry/0.1.0.json +0 -1
  175. ethpm/assets/vyper_registry/registry.vy +0 -216
  176. ethpm/assets/vyper_registry/registry_with_delete.vy +0 -244
  177. ethpm/backends/__init__.py +0 -0
  178. ethpm/backends/base.py +0 -43
  179. ethpm/backends/http.py +0 -108
  180. ethpm/backends/ipfs.py +0 -219
  181. ethpm/backends/registry.py +0 -154
  182. ethpm/constants.py +0 -17
  183. ethpm/contract.py +0 -187
  184. ethpm/dependencies.py +0 -58
  185. ethpm/deployments.py +0 -80
  186. ethpm/ethpm-spec/examples/escrow/1.0.0-pretty.json +0 -146
  187. ethpm/ethpm-spec/examples/escrow/1.0.0.json +0 -1
  188. ethpm/ethpm-spec/examples/escrow/contracts/Escrow.sol +0 -32
  189. ethpm/ethpm-spec/examples/escrow/contracts/SafeSendLib.sol +0 -20
  190. ethpm/ethpm-spec/examples/escrow/v3-pretty.json +0 -171
  191. ethpm/ethpm-spec/examples/escrow/v3.json +0 -1
  192. ethpm/ethpm-spec/examples/owned/1.0.0-pretty.json +0 -21
  193. ethpm/ethpm-spec/examples/owned/1.0.0.json +0 -1
  194. ethpm/ethpm-spec/examples/owned/contracts/Owned.sol +0 -12
  195. ethpm/ethpm-spec/examples/owned/v3-pretty.json +0 -27
  196. ethpm/ethpm-spec/examples/owned/v3.json +0 -1
  197. ethpm/ethpm-spec/examples/piper-coin/1.0.0-pretty.json +0 -31
  198. ethpm/ethpm-spec/examples/piper-coin/1.0.0.json +0 -1
  199. ethpm/ethpm-spec/examples/piper-coin/v3-pretty.json +0 -21
  200. ethpm/ethpm-spec/examples/piper-coin/v3.json +0 -1
  201. ethpm/ethpm-spec/examples/safe-math-lib/1.0.0-pretty.json +0 -85
  202. ethpm/ethpm-spec/examples/safe-math-lib/1.0.0.json +0 -1
  203. ethpm/ethpm-spec/examples/safe-math-lib/contracts/SafeMathLib.sol +0 -24
  204. ethpm/ethpm-spec/examples/safe-math-lib/v3-pretty.json +0 -117
  205. ethpm/ethpm-spec/examples/safe-math-lib/v3.json +0 -1
  206. ethpm/ethpm-spec/examples/standard-token/1.0.0-pretty.json +0 -55
  207. ethpm/ethpm-spec/examples/standard-token/1.0.0.json +0 -1
  208. ethpm/ethpm-spec/examples/standard-token/contracts/AbstractToken.sol +0 -20
  209. ethpm/ethpm-spec/examples/standard-token/contracts/StandardToken.sol +0 -84
  210. ethpm/ethpm-spec/examples/standard-token/v3-pretty.json +0 -460
  211. ethpm/ethpm-spec/examples/standard-token/v3.json +0 -1
  212. ethpm/ethpm-spec/examples/transferable/1.0.0-pretty.json +0 -21
  213. ethpm/ethpm-spec/examples/transferable/1.0.0.json +0 -1
  214. ethpm/ethpm-spec/examples/transferable/contracts/Transferable.sol +0 -14
  215. ethpm/ethpm-spec/examples/transferable/v3-pretty.json +0 -27
  216. ethpm/ethpm-spec/examples/transferable/v3.json +0 -1
  217. ethpm/ethpm-spec/examples/wallet/1.0.0-pretty.json +0 -120
  218. ethpm/ethpm-spec/examples/wallet/1.0.0.json +0 -1
  219. ethpm/ethpm-spec/examples/wallet/contracts/Wallet.sol +0 -41
  220. ethpm/ethpm-spec/examples/wallet/v3-pretty.json +0 -181
  221. ethpm/ethpm-spec/examples/wallet/v3.json +0 -1
  222. ethpm/ethpm-spec/examples/wallet-with-send/1.0.0-pretty.json +0 -135
  223. ethpm/ethpm-spec/examples/wallet-with-send/1.0.0.json +0 -1
  224. ethpm/ethpm-spec/examples/wallet-with-send/contracts/WalletWithSend.sol +0 -18
  225. ethpm/ethpm-spec/examples/wallet-with-send/v3-pretty.json +0 -207
  226. ethpm/ethpm-spec/examples/wallet-with-send/v3.json +0 -1
  227. ethpm/ethpm-spec/spec/package.spec.json +0 -379
  228. ethpm/ethpm-spec/spec/v3.spec.json +0 -483
  229. ethpm/exceptions.py +0 -68
  230. ethpm/package.py +0 -438
  231. ethpm/tools/__init__.py +0 -4
  232. ethpm/tools/builder.py +0 -930
  233. ethpm/tools/checker.py +0 -312
  234. ethpm/tools/get_manifest.py +0 -19
  235. ethpm/uri.py +0 -141
  236. ethpm/validation/__init__.py +0 -0
  237. ethpm/validation/manifest.py +0 -146
  238. ethpm/validation/misc.py +0 -39
  239. ethpm/validation/package.py +0 -80
  240. ethpm/validation/uri.py +0 -163
  241. web3/_utils/caching.py +0 -155
  242. web3/_utils/contract_sources/contract_data/address_reflector.py +0 -29
  243. web3/_utils/module_testing/go_ethereum_personal_module.py +0 -300
  244. web3/_utils/request.py +0 -265
  245. web3/pm.py +0 -602
  246. web3/tools/__init__.py +0 -4
  247. web3/tools/benchmark/__init__.py +0 -0
  248. web3/tools/benchmark/main.py +0 -185
  249. web3/tools/benchmark/node.py +0 -126
  250. web3/tools/benchmark/reporting.py +0 -39
  251. web3/tools/benchmark/utils.py +0 -69
  252. web3/tools/pytest_ethereum/__init__.py +0 -0
  253. web3/tools/pytest_ethereum/_utils.py +0 -145
  254. web3/tools/pytest_ethereum/deployer.py +0 -48
  255. web3/tools/pytest_ethereum/exceptions.py +0 -22
  256. web3/tools/pytest_ethereum/linker.py +0 -128
  257. web3/tools/pytest_ethereum/plugins.py +0 -33
  258. web3-7.0.0b1.dist-info/METADATA +0 -114
  259. web3-7.0.0b1.dist-info/RECORD +0 -280
  260. web3-7.0.0b1.dist-info/entry_points.txt +0 -2
  261. /web3/_utils/{function_identifiers.py → abi_element_identifiers.py} +0 -0
@@ -1 +0,0 @@
1
- {"compilers":[{"contractTypes":["Ownable","PackageRegistry","PackageRegistryInterface"],"name":"solc","settings":{"optimize":false},"version":"0.5.10+commit.5a6ea5b1"}],"contractTypes":{"Ownable":{"abi":[{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}],"deploymentBytecode":{"bytecode":"0x"},"devdoc":{"details":"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. * This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.","methods":{"constructor":{"details":"Initializes the contract setting the deployer as the initial owner."},"isOwner()":{"details":"Returns true if the caller is the current owner."},"owner()":{"details":"Returns the address of the current owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}}},"runtimeBytecode":{"bytecode":"0x"},"sourceId":"Ownable.sol"},"PackageRegistry":{"abi":[{"constant":true,"inputs":[{"name":"packageId","type":"bytes32"}],"name":"getPackageName","outputs":[{"name":"packageName","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"packageName","type":"string"},{"name":"version","type":"string"}],"name":"getReleaseId","outputs":[{"name":"releaseId","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"packageName","type":"string"},{"name":"version","type":"string"},{"name":"manifestURI","type":"string"}],"name":"release","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"offset","type":"uint256"},{"name":"limit","type":"uint256"}],"name":"getAllPackageIds","outputs":[{"name":"packageIds","type":"bytes32[]"},{"name":"pointer","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"releaseId","type":"bytes32"}],"name":"getReleaseData","outputs":[{"name":"packageName","type":"string"},{"name":"version","type":"string"},{"name":"manifestURI","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"packages","outputs":[{"name":"exists","type":"bool"},{"name":"createdAt","type":"uint256"},{"name":"updatedAt","type":"uint256"},{"name":"releaseCount","type":"uint256"},{"name":"name","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"value","type":"string"}],"name":"validateStringIdentifier","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"packageName","type":"string"}],"name":"packageExists","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"name","type":"string"}],"name":"validatePackageName","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"numPackageIds","outputs":[{"name":"totalCount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"name","type":"string"}],"name":"generatePackageId","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"packageName","type":"string"},{"name":"version","type":"string"}],"name":"generateReleaseId","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"releaseCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"packageName","type":"string"},{"name":"offset","type":"uint256"},{"name":"limit","type":"uint256"}],"name":"getAllReleaseIds","outputs":[{"name":"releaseIds","type":"bytes32[]"},{"name":"pointer","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"packageName","type":"string"}],"name":"numReleaseIds","outputs":[{"name":"totalCount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"packageCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"packageName","type":"string"},{"name":"version","type":"string"}],"name":"releaseExists","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"releases","outputs":[{"name":"exists","type":"bool"},{"name":"createdAt","type":"uint256"},{"name":"packageId","type":"bytes32"},{"name":"version","type":"string"},{"name":"manifestURI","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"packageName","type":"string"},{"indexed":false,"name":"version","type":"string"},{"indexed":false,"name":"manifestURI","type":"string"}],"name":"VersionRelease","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"oldOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"PackageTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}],"deploymentBytecode":{"bytecode":"0x6080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3612a21806100cf6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c8063938b056e116100b8578063c999a3b21161007c578063c999a3b214610d76578063eb8cc47c14610ea1578063ee0ebe0c14610f70578063efae87d714610f8e578063f2fde38b146110f8578063f491a84c1461113c57610137565b8063938b056e14610a32578063a54fb68514610b05578063abe827f214610b23578063b4b42e3514610bf2578063b8d08db214610d5857610137565b806371102819116100ff578063711028191461075957806382ee976f1461082057806383ea0620146108f35780638da5cb5b146109c65780638f32d59b14610a1057610137565b806306fe1fd71461013c5780631fb1c6c0146101e3578063379037dc1461034957806343212cf1146105465780634c4aea87146105da575b600080fd5b6101686004803603602081101561015257600080fd5b8101908080359060200190929190505050611268565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101a857808201518184015260208101905061018d565b50505050905090810190601f1680156101d55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610333600480360360408110156101f957600080fd5b810190808035906020019064010000000081111561021657600080fd5b82018360208201111561022857600080fd5b8035906020019184600183028401116401000000008311171561024a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506113f8565b6040518082815260200191505060405180910390f35b6105306004803603606081101561035f57600080fd5b810190808035906020019064010000000081111561037c57600080fd5b82018360208201111561038e57600080fd5b803590602001918460018302840111640100000000831117156103b057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561041357600080fd5b82018360208201111561042557600080fd5b8035906020019184600183028401116401000000008311171561044757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156104aa57600080fd5b8201836020820111156104bc57600080fd5b803590602001918460018302840111640100000000831117156104de57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611509565b6040518082815260200191505060405180910390f35b61057c6004803603604081101561055c57600080fd5b81019080803590602001909291908035906020019092919050505061169a565b6040518080602001838152602001828103825284818151815260200191508051906020019060200280838360005b838110156105c55780820151818401526020810190506105aa565b50505050905001935050505060405180910390f35b610606600480360360208110156105f057600080fd5b810190808035906020019092919050505061175c565b60405180806020018060200180602001848103845287818151815260200191508051906020019080838360005b8381101561064e578082015181840152602081019050610633565b50505050905090810190601f16801561067b5780820380516001836020036101000a031916815260200191505b50848103835286818151815260200191508051906020019080838360005b838110156106b4578082015181840152602081019050610699565b50505050905090810190601f1680156106e15780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360005b8381101561071a5780820151818401526020810190506106ff565b50505050905090810190601f1680156107475780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b6107856004803603602081101561076f57600080fd5b8101908080359060200190929190505050611a2a565b604051808615151515815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156107e15780820151818401526020810190506107c6565b50505050905090810190601f16801561080e5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b6108d96004803603602081101561083657600080fd5b810190808035906020019064010000000081111561085357600080fd5b82018360208201111561086557600080fd5b8035906020019184600183028401116401000000008311171561088757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611b05565b604051808215151515815260200191505060405180910390f35b6109ac6004803603602081101561090957600080fd5b810190808035906020019064010000000081111561092657600080fd5b82018360208201111561093857600080fd5b8035906020019184600183028401116401000000008311171561095a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611b83565b604051808215151515815260200191505060405180910390f35b6109ce611bbd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a18611be6565b604051808215151515815260200191505060405180910390f35b610aeb60048036036020811015610a4857600080fd5b8101908080359060200190640100000000811115610a6557600080fd5b820183602082011115610a7757600080fd5b80359060200191846001830284011164010000000083111715610a9957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611c3d565b604051808215151515815260200191505060405180910390f35b610b0d611cc8565b6040518082815260200191505060405180910390f35b610bdc60048036036020811015610b3957600080fd5b8101908080359060200190640100000000811115610b5657600080fd5b820183602082011115610b6857600080fd5b80359060200191846001830284011164010000000083111715610b8a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611cd2565b6040518082815260200191505060405180910390f35b610d4260048036036040811015610c0857600080fd5b8101908080359060200190640100000000811115610c2557600080fd5b820183602082011115610c3757600080fd5b80359060200191846001830284011164010000000083111715610c5957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610cbc57600080fd5b820183602082011115610cce57600080fd5b80359060200191846001830284011164010000000083111715610cf057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611d4d565b6040518082815260200191505060405180910390f35b610d60611e1c565b6040518082815260200191505060405180910390f35b610e4360048036036060811015610d8c57600080fd5b8101908080359060200190640100000000811115610da957600080fd5b820183602082011115610dbb57600080fd5b80359060200191846001830284011164010000000083111715610ddd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019092919080359060200190929190505050611e22565b6040518080602001838152602001828103825284818151815260200191508051906020019060200280838360005b83811015610e8c578082015181840152602081019050610e71565b50505050905001935050505060405180910390f35b610f5a60048036036020811015610eb757600080fd5b8101908080359060200190640100000000811115610ed457600080fd5b820183602082011115610ee657600080fd5b80359060200191846001830284011164010000000083111715610f0857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611f9c565b6040518082815260200191505060405180910390f35b610f7861204d565b6040518082815260200191505060405180910390f35b6110de60048036036040811015610fa457600080fd5b8101908080359060200190640100000000811115610fc157600080fd5b820183602082011115610fd357600080fd5b80359060200191846001830284011164010000000083111715610ff557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561105857600080fd5b82018360208201111561106a57600080fd5b8035906020019184600183028401116401000000008311171561108c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612053565b604051808215151515815260200191505060405180910390f35b61113a6004803603602081101561110e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612113565b005b6111686004803603602081101561115257600080fd5b8101908080359060200190929190505050612199565b60405180861515151581526020018581526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156111c25780820151818401526020810190506111a7565b50505050905090810190601f1680156111ef5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561122857808201518184015260208101905061120d565b50505050905090810190601f1680156112555780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b6060611272612835565b600160008481526020019081526020016000206040518060a00160405290816000820160009054906101000a900460ff16151515158152602001600182015481526020016002820154815260200160038201548152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113625780601f1061133757610100808354040283529160200191611362565b820191906000526020600020905b81548152906001019060200180831161134557829003601f168201915b50505050508152505090506001151581600001511515146113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f7061636b6167652d646f65732d6e6f742d65786973740000000000000000000081525060200191505060405180910390fd5b8060800151915050919050565b60008261140481611b83565b611476576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f7061636b6167652d646f65732d6e6f742d65786973740000000000000000000081525060200191505060405180910390fd5b83836114828282612053565b6114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f72656c656173652d646f65732d6e6f742d65786973740000000000000000000081525060200191505060405180910390fd5b6114fe8686611d4d565b935050505092915050565b6000611513611be6565b611585576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61158e84611c3d565b5061159883611b05565b506115a282611b05565b5060006115ae85611cd2565b905060006115bc8686611d4d565b90506000600160008481526020019081526020016000209050600015158160000160009054906101000a900460ff16151514156116765760018160000160006101000a81548160ff0219169083151502179055504281600101819055504281600201819055508681600401908051906020019061163a929190612866565b50600081600301819055508260046000600654815260200190815260200160002081905550600660008154809291906001019190505550611680565b4281600201819055505b61168d838389898961230c565b8193505050509392505050565b6060600060606000859050600060065482101561174c5781600654039050858111156116c4578590505b806040519080825280602002602001820160405280156116f35781602001602082028038833980820191505090505b5092505b600081111561174b576000600460008481526020019081526020016000205490508084600184038151811061172857fe5b6020026020010181815250508180600190039250508280600101935050506116f7565b5b8282945094505050509250929050565b60608060606117696128e6565b600260008681526020019081526020016000206040518060a00160405290816000820160009054906101000a900460ff161515151581526020016001820154815260200160028201548152602001600382018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561184f5780601f106118245761010080835404028352916020019161184f565b820191906000526020600020905b81548152906001019060200180831161183257829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118f15780601f106118c6576101008083540402835291602001916118f1565b820191906000526020600020905b8154815290600101906020018083116118d457829003601f168201915b5050505050815250509050611904612835565b60016000836040015181526020019081526020016000206040518060a00160405290816000820160009054906101000a900460ff16151515158152602001600182015481526020016002820154815260200160038201548152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119f85780601f106119cd576101008083540402835291602001916119f8565b820191906000526020600020905b8154815290600101906020018083116119db57829003601f168201915b505050505081525050905080608001518260600151836080015182925081915080905094509450945050509193909250565b60016020528060005260406000206000915090508060000160009054906101000a900460ff1690806001015490806002015490806003015490806004018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611afb5780601f10611ad057610100808354040283529160200191611afb565b820191906000526020600020905b815481529060010190602001808311611ade57829003601f168201915b5050505050905085565b60008082511415611b7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f696e76616c69642d737472696e672d6964656e7469666965720000000000000081525060200191505060405180910390fd5b919050565b600080611b8f83611cd2565b90506001600082815260200190815260200160002060000160009054906101000a900460ff16915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600060028251118015611c51575060ff8251105b611cc3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f696e76616c69642d7061636b6167652d6e616d6500000000000000000000000081525060200191505060405180910390fd5b919050565b6000600654905090565b6000816040516020018082805190602001908083835b60208310611d0b5780518252602082019150602081019050602083039250611ce8565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001209050919050565b600082826040516020018083805190602001908083835b60208310611d875780518252602082019150602081019050602083039250611d64565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b60208310611dd85780518252602082019150602081019050602083039250611db5565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405280519060200120905092915050565b60075481565b6060600084611e3081611b83565b611ea2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f7061636b6167652d646f65732d6e6f742d65786973740000000000000000000081525060200191505060405180910390fd5b6000611ead87611cd2565b90506000600160008381526020019081526020016000209050606060008890506000808460030154905080831015611f8757828103915089821115611ef0578991505b81604051908082528060200260200182016040528015611f1f5781602001602082028038833980820191505090505b5093505b6000821115611f86576000611f3887856126b8565b905060006003600083815260200190815260200160002054905080866001860381518110611f6257fe5b60200260200101818152505083806001900394505084806001019550505050611f23565b5b83839850985050505050505050935093915050565b600081611fa881611b83565b61201a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f7061636b6167652d646f65732d6e6f742d65786973740000000000000000000081525060200191505060405180910390fd5b600061202584611cd2565b9050600060016000838152602001908152602001600020905080600301549350505050919050565b60065481565b60008261205f81611b83565b6120d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f7061636b6167652d646f65732d6e6f742d65786973740000000000000000000081525060200191505060405180910390fd5b60006120dd8585611d4d565b905060006002600083815260200190815260200160002090508060000160009054906101000a900460ff16935050505092915050565b61211b611be6565b61218d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b612196816126f1565b50565b60026020528060005260406000206000915090508060000160009054906101000a900460ff1690806001015490806002015490806003018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122645780601f1061223957610100808354040283529160200191612264565b820191906000526020600020905b81548152906001019060200180831161224757829003601f168201915b505050505090806004018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123025780601f106122d757610100808354040283529160200191612302565b820191906000526020600020905b8154815290600101906020018083116122e557829003601f168201915b5050505050905085565b6000600260008681526020019081526020016000209050600015158160000160009054906101000a900460ff161515146123ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f72656c656173652d616c72656164792d6578697374730000000000000000000081525060200191505060405180910390fd5b60018160000160006101000a81548160ff021916908315150217905550428160010181905550858160020181905550828160030190805190602001906123f5929190612866565b508181600401908051906020019061240e929190612866565b5080600260008781526020019081526020016000206000820160009054906101000a900460ff168160000160006101000a81548160ff02191690831515021790555060018201548160010155600282015481600201556003820181600301908054600181600116156101000203166002900461248b92919061291a565b50600482018160040190805460018160011615610100020316600290046124b392919061291a565b5090505084600560006007548152602001908152602001600020819055506007600081548092919060010191905055506000600160008881526020019081526020016000209050600061250a8883600301546126b8565b905086600360008381526020019081526020016000208190555081600301600081548092919060010191905055507f489d8cf08b449d77a8953441a8d402a675aef55ac2fe367ca5b6b587737341c386868660405180806020018060200180602001848103845287818151815260200191508051906020019080838360005b838110156125a4578082015181840152602081019050612589565b50505050905090810190601f1680156125d15780820380516001836020036101000a031916815260200191505b50848103835286818151815260200191508051906020019080838360005b8381101561260a5780820151818401526020810190506125ef565b50505050905090810190601f1680156126375780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360005b83811015612670578082015181840152602081019050612655565b50505050905090810190601f16801561269d5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a15050505050505050565b60008282604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612777576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806129c76026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040518060a00160405280600015158152602001600081526020016000815260200160008152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106128a757805160ff19168380011785556128d5565b828001600101855582156128d5579182015b828111156128d45782518255916020019190600101906128b9565b5b5090506128e291906129a1565b5090565b6040518060a00160405280600015158152602001600081526020016000801916815260200160608152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106129535780548555612990565b8280016001018555821561299057600052602060002091601f016020900482015b8281111561298f578254825591600101919060010190612974565b5b50905061299d91906129a1565b5090565b6129c391905b808211156129bf5760008160009055506001016129a7565b5090565b9056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723058203303a3448bda11fd26ce9bcffb213dfc2b3f1a692632415c26340a9162d15e9c64736f6c634300050a0032"},"devdoc":{"author":"Nick Gheorghita <nickg@ethereum.org>","methods":{"generatePackageId(string)":{"details":"Returns name hash for a given package name.","params":{"name":"Package name"}},"getAllPackageIds(uint256,uint256)":{"details":"Returns a slice of the array of all package ids for the named package.","params":{"limit":"The length of the slice","offset":"The starting index for the slice."}},"getAllReleaseIds(string,uint256,uint256)":{"details":"Returns a slice of the array of all release hashes for the named package.","params":{"limit":"The length of the slice","offset":"The starting index for the slice.","packageName":"Package name"}},"getPackageName(bytes32)":{"details":"Returns the string name of the package associated with a package id","params":{"packageId":"The package id to look up"}},"getReleaseData(bytes32)":{"details":"Returns the package data for a release.","params":{"releaseId":"Release id"}},"getReleaseId(string,string)":{"details":"Returns the release id for a given name and version pair if present on registry.","params":{"packageName":"Package name","version":"Version string(ex: '1.0.0')"}},"isOwner()":{"details":"Returns true if the caller is the current owner."},"numPackageIds()":{"details":"Returns the number of packages stored on the registry"},"numReleaseIds(string)":{"details":"Returns the number of releases for a given package name on the registry","params":{"packageName":"Package name"}},"owner()":{"details":"Returns the address of the current owner."},"packageExists(string)":{"details":"Returns a bool indicating whether the given package exists in this registry.","params":{"packageName":"Package Name"}},"release(string,string,string)":{"details":"Creates a new release for the named package. If this is the first release for the given package then this will also create and store the package. Returns releaseID if successful.","params":{"manifestURI":"The URI for the release manifest for this release.","packageName":"Package name","version":"Version string (ex: '1.0.0')"}},"releaseExists(string,string)":{"details":"Returns a bool indicating whether the given release exists in this registry.","params":{"packageName":"Package Name","version":"version"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"validatePackageName(string)":{"details":"Returns boolean whether the provided package name is valid.","params":{"name":"The name of the package."}},"validateStringIdentifier(string)":{"details":"Returns boolean whether the input string has a length","params":{"value":"The string to validate."}}},"title":"Contract for an ERC1319 Registry, adapted from ethpm/escape-truffle"},"runtimeBytecode":{"bytecode":"0x608060405234801561001057600080fd5b50600436106101375760003560e01c8063938b056e116100b8578063c999a3b21161007c578063c999a3b214610d76578063eb8cc47c14610ea1578063ee0ebe0c14610f70578063efae87d714610f8e578063f2fde38b146110f8578063f491a84c1461113c57610137565b8063938b056e14610a32578063a54fb68514610b05578063abe827f214610b23578063b4b42e3514610bf2578063b8d08db214610d5857610137565b806371102819116100ff578063711028191461075957806382ee976f1461082057806383ea0620146108f35780638da5cb5b146109c65780638f32d59b14610a1057610137565b806306fe1fd71461013c5780631fb1c6c0146101e3578063379037dc1461034957806343212cf1146105465780634c4aea87146105da575b600080fd5b6101686004803603602081101561015257600080fd5b8101908080359060200190929190505050611268565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101a857808201518184015260208101905061018d565b50505050905090810190601f1680156101d55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610333600480360360408110156101f957600080fd5b810190808035906020019064010000000081111561021657600080fd5b82018360208201111561022857600080fd5b8035906020019184600183028401116401000000008311171561024a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506113f8565b6040518082815260200191505060405180910390f35b6105306004803603606081101561035f57600080fd5b810190808035906020019064010000000081111561037c57600080fd5b82018360208201111561038e57600080fd5b803590602001918460018302840111640100000000831117156103b057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561041357600080fd5b82018360208201111561042557600080fd5b8035906020019184600183028401116401000000008311171561044757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156104aa57600080fd5b8201836020820111156104bc57600080fd5b803590602001918460018302840111640100000000831117156104de57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611509565b6040518082815260200191505060405180910390f35b61057c6004803603604081101561055c57600080fd5b81019080803590602001909291908035906020019092919050505061169a565b6040518080602001838152602001828103825284818151815260200191508051906020019060200280838360005b838110156105c55780820151818401526020810190506105aa565b50505050905001935050505060405180910390f35b610606600480360360208110156105f057600080fd5b810190808035906020019092919050505061175c565b60405180806020018060200180602001848103845287818151815260200191508051906020019080838360005b8381101561064e578082015181840152602081019050610633565b50505050905090810190601f16801561067b5780820380516001836020036101000a031916815260200191505b50848103835286818151815260200191508051906020019080838360005b838110156106b4578082015181840152602081019050610699565b50505050905090810190601f1680156106e15780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360005b8381101561071a5780820151818401526020810190506106ff565b50505050905090810190601f1680156107475780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b6107856004803603602081101561076f57600080fd5b8101908080359060200190929190505050611a2a565b604051808615151515815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156107e15780820151818401526020810190506107c6565b50505050905090810190601f16801561080e5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b6108d96004803603602081101561083657600080fd5b810190808035906020019064010000000081111561085357600080fd5b82018360208201111561086557600080fd5b8035906020019184600183028401116401000000008311171561088757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611b05565b604051808215151515815260200191505060405180910390f35b6109ac6004803603602081101561090957600080fd5b810190808035906020019064010000000081111561092657600080fd5b82018360208201111561093857600080fd5b8035906020019184600183028401116401000000008311171561095a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611b83565b604051808215151515815260200191505060405180910390f35b6109ce611bbd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a18611be6565b604051808215151515815260200191505060405180910390f35b610aeb60048036036020811015610a4857600080fd5b8101908080359060200190640100000000811115610a6557600080fd5b820183602082011115610a7757600080fd5b80359060200191846001830284011164010000000083111715610a9957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611c3d565b604051808215151515815260200191505060405180910390f35b610b0d611cc8565b6040518082815260200191505060405180910390f35b610bdc60048036036020811015610b3957600080fd5b8101908080359060200190640100000000811115610b5657600080fd5b820183602082011115610b6857600080fd5b80359060200191846001830284011164010000000083111715610b8a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611cd2565b6040518082815260200191505060405180910390f35b610d4260048036036040811015610c0857600080fd5b8101908080359060200190640100000000811115610c2557600080fd5b820183602082011115610c3757600080fd5b80359060200191846001830284011164010000000083111715610c5957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610cbc57600080fd5b820183602082011115610cce57600080fd5b80359060200191846001830284011164010000000083111715610cf057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611d4d565b6040518082815260200191505060405180910390f35b610d60611e1c565b6040518082815260200191505060405180910390f35b610e4360048036036060811015610d8c57600080fd5b8101908080359060200190640100000000811115610da957600080fd5b820183602082011115610dbb57600080fd5b80359060200191846001830284011164010000000083111715610ddd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019092919080359060200190929190505050611e22565b6040518080602001838152602001828103825284818151815260200191508051906020019060200280838360005b83811015610e8c578082015181840152602081019050610e71565b50505050905001935050505060405180910390f35b610f5a60048036036020811015610eb757600080fd5b8101908080359060200190640100000000811115610ed457600080fd5b820183602082011115610ee657600080fd5b80359060200191846001830284011164010000000083111715610f0857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611f9c565b6040518082815260200191505060405180910390f35b610f7861204d565b6040518082815260200191505060405180910390f35b6110de60048036036040811015610fa457600080fd5b8101908080359060200190640100000000811115610fc157600080fd5b820183602082011115610fd357600080fd5b80359060200191846001830284011164010000000083111715610ff557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561105857600080fd5b82018360208201111561106a57600080fd5b8035906020019184600183028401116401000000008311171561108c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612053565b604051808215151515815260200191505060405180910390f35b61113a6004803603602081101561110e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612113565b005b6111686004803603602081101561115257600080fd5b8101908080359060200190929190505050612199565b60405180861515151581526020018581526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156111c25780820151818401526020810190506111a7565b50505050905090810190601f1680156111ef5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561122857808201518184015260208101905061120d565b50505050905090810190601f1680156112555780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b6060611272612835565b600160008481526020019081526020016000206040518060a00160405290816000820160009054906101000a900460ff16151515158152602001600182015481526020016002820154815260200160038201548152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113625780601f1061133757610100808354040283529160200191611362565b820191906000526020600020905b81548152906001019060200180831161134557829003601f168201915b50505050508152505090506001151581600001511515146113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f7061636b6167652d646f65732d6e6f742d65786973740000000000000000000081525060200191505060405180910390fd5b8060800151915050919050565b60008261140481611b83565b611476576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f7061636b6167652d646f65732d6e6f742d65786973740000000000000000000081525060200191505060405180910390fd5b83836114828282612053565b6114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f72656c656173652d646f65732d6e6f742d65786973740000000000000000000081525060200191505060405180910390fd5b6114fe8686611d4d565b935050505092915050565b6000611513611be6565b611585576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61158e84611c3d565b5061159883611b05565b506115a282611b05565b5060006115ae85611cd2565b905060006115bc8686611d4d565b90506000600160008481526020019081526020016000209050600015158160000160009054906101000a900460ff16151514156116765760018160000160006101000a81548160ff0219169083151502179055504281600101819055504281600201819055508681600401908051906020019061163a929190612866565b50600081600301819055508260046000600654815260200190815260200160002081905550600660008154809291906001019190505550611680565b4281600201819055505b61168d838389898961230c565b8193505050509392505050565b6060600060606000859050600060065482101561174c5781600654039050858111156116c4578590505b806040519080825280602002602001820160405280156116f35781602001602082028038833980820191505090505b5092505b600081111561174b576000600460008481526020019081526020016000205490508084600184038151811061172857fe5b6020026020010181815250508180600190039250508280600101935050506116f7565b5b8282945094505050509250929050565b60608060606117696128e6565b600260008681526020019081526020016000206040518060a00160405290816000820160009054906101000a900460ff161515151581526020016001820154815260200160028201548152602001600382018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561184f5780601f106118245761010080835404028352916020019161184f565b820191906000526020600020905b81548152906001019060200180831161183257829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118f15780601f106118c6576101008083540402835291602001916118f1565b820191906000526020600020905b8154815290600101906020018083116118d457829003601f168201915b5050505050815250509050611904612835565b60016000836040015181526020019081526020016000206040518060a00160405290816000820160009054906101000a900460ff16151515158152602001600182015481526020016002820154815260200160038201548152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119f85780601f106119cd576101008083540402835291602001916119f8565b820191906000526020600020905b8154815290600101906020018083116119db57829003601f168201915b505050505081525050905080608001518260600151836080015182925081915080905094509450945050509193909250565b60016020528060005260406000206000915090508060000160009054906101000a900460ff1690806001015490806002015490806003015490806004018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611afb5780601f10611ad057610100808354040283529160200191611afb565b820191906000526020600020905b815481529060010190602001808311611ade57829003601f168201915b5050505050905085565b60008082511415611b7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f696e76616c69642d737472696e672d6964656e7469666965720000000000000081525060200191505060405180910390fd5b919050565b600080611b8f83611cd2565b90506001600082815260200190815260200160002060000160009054906101000a900460ff16915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600060028251118015611c51575060ff8251105b611cc3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f696e76616c69642d7061636b6167652d6e616d6500000000000000000000000081525060200191505060405180910390fd5b919050565b6000600654905090565b6000816040516020018082805190602001908083835b60208310611d0b5780518252602082019150602081019050602083039250611ce8565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001209050919050565b600082826040516020018083805190602001908083835b60208310611d875780518252602082019150602081019050602083039250611d64565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b60208310611dd85780518252602082019150602081019050602083039250611db5565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405280519060200120905092915050565b60075481565b6060600084611e3081611b83565b611ea2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f7061636b6167652d646f65732d6e6f742d65786973740000000000000000000081525060200191505060405180910390fd5b6000611ead87611cd2565b90506000600160008381526020019081526020016000209050606060008890506000808460030154905080831015611f8757828103915089821115611ef0578991505b81604051908082528060200260200182016040528015611f1f5781602001602082028038833980820191505090505b5093505b6000821115611f86576000611f3887856126b8565b905060006003600083815260200190815260200160002054905080866001860381518110611f6257fe5b60200260200101818152505083806001900394505084806001019550505050611f23565b5b83839850985050505050505050935093915050565b600081611fa881611b83565b61201a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f7061636b6167652d646f65732d6e6f742d65786973740000000000000000000081525060200191505060405180910390fd5b600061202584611cd2565b9050600060016000838152602001908152602001600020905080600301549350505050919050565b60065481565b60008261205f81611b83565b6120d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f7061636b6167652d646f65732d6e6f742d65786973740000000000000000000081525060200191505060405180910390fd5b60006120dd8585611d4d565b905060006002600083815260200190815260200160002090508060000160009054906101000a900460ff16935050505092915050565b61211b611be6565b61218d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b612196816126f1565b50565b60026020528060005260406000206000915090508060000160009054906101000a900460ff1690806001015490806002015490806003018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122645780601f1061223957610100808354040283529160200191612264565b820191906000526020600020905b81548152906001019060200180831161224757829003601f168201915b505050505090806004018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123025780601f106122d757610100808354040283529160200191612302565b820191906000526020600020905b8154815290600101906020018083116122e557829003601f168201915b5050505050905085565b6000600260008681526020019081526020016000209050600015158160000160009054906101000a900460ff161515146123ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f72656c656173652d616c72656164792d6578697374730000000000000000000081525060200191505060405180910390fd5b60018160000160006101000a81548160ff021916908315150217905550428160010181905550858160020181905550828160030190805190602001906123f5929190612866565b508181600401908051906020019061240e929190612866565b5080600260008781526020019081526020016000206000820160009054906101000a900460ff168160000160006101000a81548160ff02191690831515021790555060018201548160010155600282015481600201556003820181600301908054600181600116156101000203166002900461248b92919061291a565b50600482018160040190805460018160011615610100020316600290046124b392919061291a565b5090505084600560006007548152602001908152602001600020819055506007600081548092919060010191905055506000600160008881526020019081526020016000209050600061250a8883600301546126b8565b905086600360008381526020019081526020016000208190555081600301600081548092919060010191905055507f489d8cf08b449d77a8953441a8d402a675aef55ac2fe367ca5b6b587737341c386868660405180806020018060200180602001848103845287818151815260200191508051906020019080838360005b838110156125a4578082015181840152602081019050612589565b50505050905090810190601f1680156125d15780820380516001836020036101000a031916815260200191505b50848103835286818151815260200191508051906020019080838360005b8381101561260a5780820151818401526020810190506125ef565b50505050905090810190601f1680156126375780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360005b83811015612670578082015181840152602081019050612655565b50505050905090810190601f16801561269d5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a15050505050505050565b60008282604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612777576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806129c76026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040518060a00160405280600015158152602001600081526020016000815260200160008152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106128a757805160ff19168380011785556128d5565b828001600101855582156128d5579182015b828111156128d45782518255916020019190600101906128b9565b5b5090506128e291906129a1565b5090565b6040518060a00160405280600015158152602001600081526020016000801916815260200160608152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106129535780548555612990565b8280016001018555821561299057600052602060002091601f016020900482015b8281111561298f578254825591600101919060010190612974565b5b50905061299d91906129a1565b5090565b6129c391905b808211156129bf5760008160009055506001016129a7565b5090565b9056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723058203303a3448bda11fd26ce9bcffb213dfc2b3f1a692632415c26340a9162d15e9c64736f6c634300050a0032"},"sourceId":"PackageRegistry.sol"},"PackageRegistryInterface":{"abi":[{"constant":true,"inputs":[{"name":"packageId","type":"bytes32"}],"name":"getPackageName","outputs":[{"name":"packageName","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"packageName","type":"string"},{"name":"version","type":"string"}],"name":"getReleaseId","outputs":[{"name":"releaseId","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"packageName","type":"string"},{"name":"version","type":"string"},{"name":"manifestURI","type":"string"}],"name":"release","outputs":[{"name":"releaseId","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"offset","type":"uint256"},{"name":"limit","type":"uint256"}],"name":"getAllPackageIds","outputs":[{"name":"packageIds","type":"bytes32[]"},{"name":"pointer","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"releaseId","type":"bytes32"}],"name":"getReleaseData","outputs":[{"name":"packageName","type":"string"},{"name":"version","type":"string"},{"name":"manifestURI","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numPackageIds","outputs":[{"name":"totalCount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"packageName","type":"string"},{"name":"version","type":"string"}],"name":"generateReleaseId","outputs":[{"name":"releaseId","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"packageName","type":"string"},{"name":"offset","type":"uint256"},{"name":"limit","type":"uint256"}],"name":"getAllReleaseIds","outputs":[{"name":"releaseIds","type":"bytes32[]"},{"name":"pointer","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"packageName","type":"string"}],"name":"numReleaseIds","outputs":[{"name":"totalCount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}],"deploymentBytecode":{"bytecode":"0x"},"devdoc":{"author":"Piper Merriam <pipermerriam@gmail.com>, Christopher Gewecke <christophergewecke@gmail.com>","methods":{"getAllPackageIds(uint256,uint256)":{"details":"Returns a slice of the array of all package ids for the named package.","params":{"limit":"The length of the slice","offset":"The starting index for the slice."}},"getAllReleaseIds(string,uint256,uint256)":{"details":"Returns a slice of the array of all release hashes for the named package.","params":{"limit":"The length of the slice","offset":"The starting index for the slice.","packageName":"Package name"}},"getPackageName(bytes32)":{"details":"Returns the string name of the package associated with a package id","params":{"packageId":"The package id to look up"}},"getReleaseData(bytes32)":{"details":"Returns the package data for a release.","params":{"releaseId":"Release id"}},"getReleaseId(string,string)":{"details":"Returns the release id for a given name and version pair if present on registry.","params":{"packageName":"Package name","version":"Version string(ex: '1.0.0')"}},"numPackageIds()":{"details":"Returns the number of packages stored on the registry"},"numReleaseIds(string)":{"details":"Returns the number of releases for a given package name on the registry","params":{"packageName":"Package name"}},"release(string,string,string)":{"details":"Creates a a new release for the named package.","params":{"manifestURI":"The URI for the release manifest for this release.","packageName":"Package name","version":"Version string (ex: 1.0.0)"}}},"title":"EIP 1319 Smart Contract Package Registry Interface"},"runtimeBytecode":{"bytecode":"0x"},"sourceId":"PackageRegistryInterface.sol"}},"manifest":"ethpm/3","name":"simple-registry","sources":{"./Ownable.sol":{"content":"pragma solidity ^0.5.0;\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\ncontract Ownable {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor () internal {\n _owner = msg.sender;\n emit OwnershipTransferred(address(0), _owner);\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n require(isOwner(), \"Ownable: caller is not the owner\");\n _;\n }\n\n /**\n * @dev Returns true if the caller is the current owner.\n */\n function isOwner() public view returns (bool) {\n return msg.sender == _owner;\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public onlyOwner {\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n */\n function _transferOwnership(address newOwner) internal {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n emit OwnershipTransferred(_owner, newOwner);\n _owner = newOwner;\n }\n}","installPath":"./Ownable.sol","type":"solidity"},"./PackageRegistry.sol":{"content":"pragma solidity >=0.5.10;\n\nimport {PackageRegistryInterface} from \"./PackageRegistryInterface.sol\";\nimport {Ownable} from \"./Ownable.sol\";\n\n/// @title Contract for an ERC1319 Registry, adapted from ethpm/escape-truffle\n/// @author Nick Gheorghita <nickg@ethereum.org>\ncontract PackageRegistry is PackageRegistryInterface, Ownable {\n struct Package {\n bool exists;\n uint createdAt;\n uint updatedAt;\n uint releaseCount;\n string name;\n }\n\n struct Release {\n bool exists;\n uint createdAt;\n bytes32 packageId;\n string version;\n string manifestURI;\n }\n\n mapping (bytes32 => Package) public packages;\n mapping (bytes32 => Release) public releases;\n\n // package_id#release_count => release_id\n mapping (bytes32 => bytes32) packageReleaseIndex;\n // Total package number (int128) => package_id (bytes32)\n mapping (uint => bytes32) allPackageIds;\n // Total release number (int128) => release_id (bytes32)\n mapping (uint => bytes32) allReleaseIds;\n // Total number of packages in registry\n uint public packageCount;\n // Total number of releases in registry\n uint public releaseCount;\n\n // Events\n event VersionRelease(string packageName, string version, string manifestURI);\n event PackageTransfer(address indexed oldOwner, address indexed newOwner);\n\n // Modifiers\n modifier onlyIfPackageExists(string memory packageName) {\n require(packageExists(packageName), \"package-does-not-exist\");\n _;\n }\n\n modifier onlyIfReleaseExists(string memory packageName, string memory version) {\n require (releaseExists(packageName, version), \"release-does-not-exist\");\n _;\n }\n\n //\n // ===============\n // | Write API |\n // ===============\n //\n\n /// @dev Creates a new release for the named package. If this is the first release for the given\n /// package then this will also create and store the package. Returns releaseID if successful.\n /// @notice Will create a new release the given package with the given release information.\n /// @param packageName Package name\n /// @param version Version string (ex: '1.0.0')\n /// @param manifestURI The URI for the release manifest for this release.\n function release(\n string memory packageName,\n string memory version,\n string memory manifestURI\n )\n public\n onlyOwner\n returns (bytes32)\n {\n validatePackageName(packageName);\n validateStringIdentifier(version);\n validateStringIdentifier(manifestURI);\n\n // Compute hashes\n bytes32 packageId = generatePackageId(packageName);\n bytes32 releaseId = generateReleaseId(packageName, version);\n Package storage package = packages[packageId];\n\n // If the package does not yet exist create it\n if (package.exists == false) {\n package.exists = true;\n package.createdAt = block.timestamp;\n package.updatedAt = block.timestamp;\n package.name = packageName;\n package.releaseCount = 0;\n allPackageIds[packageCount] = packageId;\n packageCount++;\n } else {\n package.updatedAt = block.timestamp;\n }\n cutRelease(packageId, releaseId, packageName, version, manifestURI);\n return releaseId;\n }\n\n function cutRelease(\n bytes32 packageId,\n bytes32 releaseId,\n string memory packageName,\n string memory version,\n string memory manifestURI\n )\n private\n {\n Release storage newRelease = releases[releaseId];\n require(newRelease.exists == false, \"release-already-exists\");\n\n // Store new release data\n newRelease.exists = true;\n newRelease.createdAt = block.timestamp;\n newRelease.packageId = packageId;\n newRelease.version = version;\n newRelease.manifestURI = manifestURI;\n\n releases[releaseId] = newRelease;\n allReleaseIds[releaseCount] = releaseId;\n releaseCount++;\n\n // Update package's release count\n Package storage package = packages[packageId];\n bytes32 packageReleaseId = generatePackageReleaseId(packageId, package.releaseCount);\n packageReleaseIndex[packageReleaseId] = releaseId;\n package.releaseCount++;\n\n // Log the release.\n emit VersionRelease(packageName, version, manifestURI);\n }\n\n //\n // ==============\n // | Read API |\n // ==============\n //\n\n /// @dev Returns the string name of the package associated with a package id\n /// @param packageId The package id to look up\n function getPackageName(bytes32 packageId)\n public\n view\n returns (string memory packageName)\n {\n Package memory targetPackage = packages[packageId];\n require (targetPackage.exists == true, \"package-does-not-exist\");\n return targetPackage.name;\n }\n\n /// @dev Returns a slice of the array of all package ids for the named package.\n /// @param offset The starting index for the slice.\n /// @param limit The length of the slice\n function getAllPackageIds(uint offset, uint limit)\n public\n view\n returns (\n bytes32[] memory packageIds,\n uint pointer\n )\n {\n bytes32[] memory hashes; // Array of package ids to return\n uint cursor = offset; // Index counter to traverse DB array\n uint remaining; // Counter to collect `limit` packages\n\n // Is request within range?\n if (cursor < packageCount){\n\n // Get total remaining records\n remaining = packageCount - cursor;\n\n // Number of records to collect is lesser of `remaining` and `limit`\n if (remaining > limit ){\n remaining = limit;\n }\n\n // Allocate return array\n hashes = new bytes32[](remaining);\n\n // Collect records.\n while(remaining > 0){\n bytes32 hash = allPackageIds[cursor];\n hashes[remaining - 1] = hash;\n remaining--;\n cursor++;\n }\n }\n return (hashes, cursor);\n }\n\n /// @dev Returns a slice of the array of all release hashes for the named package.\n /// @param packageName Package name\n /// @param offset The starting index for the slice.\n /// @param limit The length of the slice\n function getAllReleaseIds(string memory packageName, uint offset, uint limit)\n public\n view\n onlyIfPackageExists(packageName)\n returns (\n bytes32[] memory releaseIds,\n uint pointer\n )\n {\n bytes32 packageId = generatePackageId(packageName);\n Package storage package = packages[packageId];\n bytes32[] memory hashes; // Release ids to return\n uint cursor = offset; // Index counter to traverse DB array\n uint remaining; // Counter to collect `limit` packages\n uint numPackageReleases = package.releaseCount;\t\t // Total number of packages in registry\n\n // Is request within range?\n if (cursor < numPackageReleases){\n\n // Get total remaining records\n remaining = numPackageReleases - cursor;\n\n // Number of records to collect is lesser of `remaining` and `limit`\n if (remaining > limit ){\n remaining = limit;\n }\n\n // Allocate return array\n hashes = new bytes32[](remaining);\n\n // Collect records.\n while(remaining > 0){\n bytes32 packageReleaseId = generatePackageReleaseId(packageId, cursor);\n bytes32 hash = packageReleaseIndex[packageReleaseId];\n hashes[remaining - 1] = hash;\n remaining--;\n cursor++;\n }\n }\n return (hashes, cursor);\n }\n\n\n /// @dev Returns the package data for a release.\n /// @param releaseId Release id\n function getReleaseData(bytes32 releaseId)\n public\n view\n returns (\n string memory packageName, string memory version,\n string memory manifestURI\n )\n {\n Release memory targetRelease = releases[releaseId];\n Package memory targetPackage = packages[targetRelease.packageId];\n return (targetPackage.name, targetRelease.version, targetRelease.manifestURI);\n }\n\n /// @dev Returns the release id for a given name and version pair if present on registry.\n /// @param packageName Package name\n /// @param version Version string(ex: '1.0.0')\n function getReleaseId(string memory packageName, string memory version)\n public\n view\n onlyIfPackageExists(packageName)\n onlyIfReleaseExists(packageName, version)\n returns (bytes32 releaseId)\n {\n return generateReleaseId(packageName, version);\n }\n\n /// @dev Returns the number of packages stored on the registry\n function numPackageIds() public view returns (uint totalCount)\n {\n return packageCount;\n }\n\n /// @dev Returns the number of releases for a given package name on the registry\n /// @param packageName Package name\n function numReleaseIds(string memory packageName)\n public\n view\n onlyIfPackageExists(packageName)\n returns (uint totalCount)\n {\n bytes32 packageId = generatePackageId(packageName);\n Package storage package = packages[packageId];\n return package.releaseCount;\n }\n\n /// @dev Returns a bool indicating whether the given release exists in this registry.\n /// @param packageName Package Name\n /// @param version version\n function releaseExists(string memory packageName, string memory version)\n public\n view\n onlyIfPackageExists(packageName)\n returns (bool)\n {\n bytes32 releaseId = generateReleaseId(packageName, version);\n Release storage targetRelease = releases[releaseId];\n return targetRelease.exists;\n }\n\n /// @dev Returns a bool indicating whether the given package exists in this registry.\n /// @param packageName Package Name\n function packageExists(string memory packageName) public view returns (bool) {\n bytes32 packageId = generatePackageId(packageName);\n return packages[packageId].exists;\n }\n\n //\n // ====================\n // | Hash Functions |\n // ====================\n // \n\n /// @dev Returns name hash for a given package name.\n /// @param name Package name\n function generatePackageId(string memory name)\n public\n pure\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(name));\n }\n\n // @dev Returns release id that *would* be generated for a name and version pair on `release`.\n // @param packageName Package name\n // @param version Version string (ex: '1.0.0')\n function generateReleaseId(\n string memory packageName,\n string memory version\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(packageName, version));\n }\n\n function generatePackageReleaseId(\n bytes32 packageId,\n uint packageReleaseCount\n )\n private\n\t\tpure\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(packageId, packageReleaseCount));\n }\n\n\n //\n // ================\n // | Validation |\n // ================\n //\n\n /// @dev Returns boolean whether the provided package name is valid.\n /// @param name The name of the package.\n function validatePackageName(string memory name)\n public\n pure\n returns (bool)\n {\n require (bytes(name).length > 2 && bytes(name).length < 255, \"invalid-package-name\");\n }\n\n /// @dev Returns boolean whether the input string has a length\n /// @param value The string to validate.\n function validateStringIdentifier(string memory value)\n public\n pure\n returns (bool)\n {\n require (bytes(value).length != 0, \"invalid-string-identifier\");\n }\n}","installPath":"./PackageRegistry.sol","type":"solidity"},"./PackageRegistryInterface.sol":{"content":"pragma solidity >=0.5.10;\n\n\n/// @title EIP 1319 Smart Contract Package Registry Interface\n/// @author Piper Merriam <pipermerriam@gmail.com>, Christopher Gewecke <christophergewecke@gmail.com>\ncontract PackageRegistryInterface {\n\n //\n // +-------------+\n // | Write API |\n // +-------------+\n //\n\n /// @dev Creates a a new release for the named package.\n /// @notice Will create a new release the given package with the given release information.\n /// @param packageName Package name\n /// @param version Version string (ex: 1.0.0)\n /// @param manifestURI The URI for the release manifest for this release.\n function release(\n string memory packageName,\n string memory version,\n string memory manifestURI\n )\n public\n returns (bytes32 releaseId);\n\n //\n // +------------+\n // | Read API |\n // +------------+\n //\n\n /// @dev Returns the string name of the package associated with a package id\n /// @param packageId The package id to look up\n function getPackageName(bytes32 packageId)\n public\n view\n returns (string memory packageName);\n\n /// @dev Returns a slice of the array of all package ids for the named package.\n /// @param offset The starting index for the slice.\n /// @param limit The length of the slice\n function getAllPackageIds(uint offset, uint limit)\n public\n view\n returns (\n bytes32[] memory packageIds,\n uint pointer\n );\n\n /// @dev Returns a slice of the array of all release hashes for the named package.\n /// @param packageName Package name\n /// @param offset The starting index for the slice.\n /// @param limit The length of the slice\n function getAllReleaseIds(string memory packageName, uint offset, uint limit)\n public\n view\n returns (\n bytes32[] memory releaseIds,\n uint pointer\n );\n\n /// @dev Returns the package data for a release.\n /// @param releaseId Release id\n function getReleaseData(bytes32 releaseId)\n public\n view\n returns (\n string memory packageName,\n string memory version,\n string memory manifestURI\n );\n\n // @dev Returns release id that *would* be generated for a name and version pair on `release`.\n // @param packageName Package name\n // @param version Version string (ex: '1.0.0')\n function generateReleaseId(string memory packageName, string memory version)\n public\n view\n returns (bytes32 releaseId);\n\n /// @dev Returns the release id for a given name and version pair if present on registry.\n /// @param packageName Package name\n /// @param version Version string(ex: '1.0.0')\n function getReleaseId(string memory packageName, string memory version)\n public\n view\n returns (bytes32 releaseId);\n\n /// @dev Returns the number of packages stored on the registry\n function numPackageIds() public view returns (uint totalCount);\n\n /// @dev Returns the number of releases for a given package name on the registry\n /// @param packageName Package name\n function numReleaseIds(string memory packageName) public view returns (uint totalCount);\n}","installPath":"./PackageRegistryInterface.sol","type":"solidity"}},"version":"1.0.0"}
@@ -1 +0,0 @@
1
- {"contracts":{"AbstractToken.sol":{"Token":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"supply","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"Stefan George - <stefan.george@consensys.net>","methods":{},"title":"Abstract token contract - Functions to be implemented by token contracts."},"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""}},"metadata":"{\"compiler\":{\"version\":\"0.6.8+commit.0bbfe453\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"supply\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Stefan George - <stefan.george@consensys.net>\",\"methods\":{},\"title\":\"Abstract token contract - Functions to be implemented by token contracts.\"},\"userdoc\":{\"methods\":{},\"notice\":\"Implements ERC 20 Token standard: https://github.com/ethereum/EIPs/issues/20\"}},\"settings\":{\"compilationTarget\":{\"AbstractToken.sol\":\"Token\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"AbstractToken.sol\":{\"keccak256\":\"0x55bdbe74194dd5060d7ad06fc3ad21f7eddee9a2eca40fa69e949ccb13daf0fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5f917468d2d1e99ef7fe60eb3f706f3073e8e3ab4e23136f50efc60a23a4943\",\"dweb:/ipfs/QmXhHfLcnDTK6bnYj8xGKoJeDpyWqvGK4a1BENPrQvDJwj\"]}},\"version\":1}","userdoc":{"methods":{},"notice":"Implements ERC 20 Token standard: https://github.com/ethereum/EIPs/issues/20"}}},"StandardToken.sol":{"StandardToken":{"abi":[{"inputs":[{"internalType":"uint256","name":"_totalSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"Stefan George - <stefan.george@consensys.net>","methods":{"allowance(address,address)":{"details":"Returns number of allowed tokens for given address.","params":{"_owner":"Address of token owner.","_spender":"Address of token spender."}},"approve(address,uint256)":{"details":"Sets approved amount of tokens for spender. Returns success.","params":{"_spender":"Address of allowed account.","_value":"Number of approved tokens."}},"balanceOf(address)":{"details":"Returns number of tokens owned by given address.","params":{"_owner":"Address of token owner."}},"transfer(address,uint256)":{"details":"Transfers sender's tokens to a given address. Returns success.","params":{"_to":"Address of token receiver.","_value":"Number of tokens to transfer."}},"transferFrom(address,address,uint256)":{"details":"Allows allowed third party to transfer tokens from one address to another. Returns success.","params":{"_from":"Address from where tokens are withdrawn.","_to":"Address to where tokens are sent.","_value":"Number of tokens to transfer."}}},"title":"Standard token contract"},"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506040516104713803806104718339818101604052602081101561003357600080fd5b5051600281905533600081815260208181526040808320859055805185815290517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a3506103e28061008f6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c8063095ea7b31461006757806318160ddd146100a757806323b872dd146100c157806370a08231146100f7578063a9059cbb1461011d578063dd62ed3e14610149575b600080fd5b6100936004803603604081101561007d57600080fd5b506001600160a01b038135169060200135610177565b604080519115158252519081900360200190f35b6100af6101de565b60408051918252519081900360200190f35b610093600480360360608110156100d757600080fd5b506001600160a01b038135811691602081013590911690604001356101e4565b6100af6004803603602081101561010d57600080fd5b50356001600160a01b03166102cf565b6100936004803603604081101561013357600080fd5b506001600160a01b0381351690602001356102ea565b6100af6004803603604081101561015f57600080fd5b506001600160a01b0381358116916020013516610381565b3360008181526001602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b60025481565b6001600160a01b038316600090815260208190526040812054821180159061022f57506001600160a01b03841660009081526001602090815260408083203384529091529020548211155b801561023b5750600082115b156102c4576001600160a01b0380841660008181526020818152604080832080548801905593881680835284832080548890039055600182528483203384528252918490208054879003905583518681529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35060016102c8565b5060005b9392505050565b6001600160a01b031660009081526020819052604090205490565b3360009081526020819052604081205482118015906103095750600082115b156103795733600081815260208181526040808320805487900390556001600160a01b03871680845292819020805487019055805186815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060016101d8565b5060006101d8565b6001600160a01b0391821660009081526001602090815260408083209390941682529190915220549056fea26469706673582212201ef3e86e50930613493a96a0bf1506fd0a0722a20b7070971329129410e1d80e64736f6c63430006080033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x471 CODESIZE SUB DUP1 PUSH2 0x471 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 DUP2 SWAP1 SSTORE CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH2 0x3E2 DUP1 PUSH2 0x8F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xA7 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x11D JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x149 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x93 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x177 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAF PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x93 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1E4 JUMP JUMPDEST PUSH2 0xAF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CF JUMP JUMPDEST PUSH2 0x93 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2EA JUMP JUMPDEST PUSH2 0xAF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x15F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x381 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 GT DUP1 ISZERO SWAP1 PUSH2 0x22F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x23B JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST ISZERO PUSH2 0x2C4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 ADD SWAP1 SSTORE SWAP4 DUP9 AND DUP1 DUP4 MSTORE DUP5 DUP4 KECCAK256 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE PUSH1 0x1 DUP3 MSTORE DUP5 DUP4 KECCAK256 CALLER DUP5 MSTORE DUP3 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 SWAP1 SUB SWAP1 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 PUSH2 0x2C8 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 GT DUP1 ISZERO SWAP1 PUSH2 0x309 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST ISZERO PUSH2 0x379 JUMPI CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP8 SWAP1 SUB SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP5 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 PUSH2 0x1D8 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1D8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1E RETURN 0xE8 PUSH15 0x50930613493A96A0BF1506FD0A0722 LOG2 SIGNEXTEND PUSH17 0x70971329129410E1D80E64736F6C634300 MOD ADDMOD STOP CALLER ","sourceMap":"183:2765:1:-:0;;;408:188;5:9:-1;2:2;;;27:1;24;17:12;2:2;408:188:1;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;408:188:1;457:11;:26;;;502:10;493:8;:20;;;408:188;493:20;;;;;;;:35;;;543:46;;;;;;;;;;;;;;;;;;408:188;183:2765;;;;;;"}},"metadata":"{\"compiler\":{\"version\":\"0.6.8+commit.0bbfe453\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Stefan George - <stefan.george@consensys.net>\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns number of allowed tokens for given address.\",\"params\":{\"_owner\":\"Address of token owner.\",\"_spender\":\"Address of token spender.\"}},\"approve(address,uint256)\":{\"details\":\"Sets approved amount of tokens for spender. Returns success.\",\"params\":{\"_spender\":\"Address of allowed account.\",\"_value\":\"Number of approved tokens.\"}},\"balanceOf(address)\":{\"details\":\"Returns number of tokens owned by given address.\",\"params\":{\"_owner\":\"Address of token owner.\"}},\"transfer(address,uint256)\":{\"details\":\"Transfers sender's tokens to a given address. Returns success.\",\"params\":{\"_to\":\"Address of token receiver.\",\"_value\":\"Number of tokens to transfer.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Allows allowed third party to transfer tokens from one address to another. Returns success.\",\"params\":{\"_from\":\"Address from where tokens are withdrawn.\",\"_to\":\"Address to where tokens are sent.\",\"_value\":\"Number of tokens to transfer.\"}}},\"title\":\"Standard token contract\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"StandardToken.sol\":\"StandardToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"AbstractToken.sol\":{\"keccak256\":\"0x55bdbe74194dd5060d7ad06fc3ad21f7eddee9a2eca40fa69e949ccb13daf0fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5f917468d2d1e99ef7fe60eb3f706f3073e8e3ab4e23136f50efc60a23a4943\",\"dweb:/ipfs/QmXhHfLcnDTK6bnYj8xGKoJeDpyWqvGK4a1BENPrQvDJwj\"]},\"StandardToken.sol\":{\"keccak256\":\"0xff79ded4ad8e86320abfe51b9b98aba598ff6b071bc84cf45f4b74ec028063ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f428e1fdb75ab6b33f76241a113d8cfd473a272ed7c194a6d405fbf2d835ea33\",\"dweb:/ipfs/QmUofKBtNJVaqoSAtnHfrarJyyLm1oMUTAK4yCtnmYMJVy\"]}},\"version\":1}","userdoc":{"methods":{}}}}},"sources":{"AbstractToken.sol":{"id":0},"StandardToken.sol":{"id":1}}}
@@ -1 +0,0 @@
1
- {"contractTypes":{"StandardToken":{"abi":[{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_totalSupply","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}],"deploymentBytecode":{"bytecode":"0x608060405234801561001057600080fd5b506040516020806109748339810180604052810190808051906020019092919050505080600281905550806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350610897806100dd6000396000f300608060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007d57806318160ddd146100e257806323b872dd1461010d57806370a0823114610192578063a9059cbb146101e9578063dd62ed3e1461024e575b600080fd5b34801561008957600080fd5b506100c8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506102c5565b604051808215151515815260200191505060405180910390f35b3480156100ee57600080fd5b506100f76103b7565b6040518082815260200191505060405180910390f35b34801561011957600080fd5b50610178600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506103bd565b604051808215151515815260200191505060405180910390f35b34801561019e57600080fd5b506101d3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610636565b6040518082815260200191505060405180910390f35b3480156101f557600080fd5b50610234600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061067e565b604051808215151515815260200191505060405180910390f35b34801561025a57600080fd5b506102af600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107e4565b6040518082815260200191505060405180910390f35b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60025481565b6000816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610489575081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104955750600082115b1561062a57816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905061062f565b600090505b9392505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156106ce5750600082115b156107d957816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506107de565b600090505b92915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a72305820ebfb7c06473e53e0f620118e90dbccc2833e70a791699a5c51045f1a377d26ac0029"}},"Token":{"abi":[{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}],"deploymentBytecode":{"bytecode":"0x"}}},"manifest":"ethpm/3","name":"standard-token","sources":{"./AbstractToken.sol":{"urls":["ipfs://QmPhSGPNTXaan32P9hZGVFSuzDZkto1H9LNdESZMMF6R3m"]},"./StandardToken.sol":{"urls":["ipfs://QmRJHLmPVct2rbBpdGjP3xkXbF7romQigtmcs8TRfV1yC7"]}},"version":"1.0.1"}
@@ -1 +0,0 @@
1
- {"contract_types":{"registry":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"name":"_package","type":"bytes32"},{"indexed":false,"name":"_version","type":"bytes32"},{"indexed":false,"name":"_uri","type":"bytes"}],"name":"VersionRelease","type":"event"},{"constant":false,"inputs":[],"name":"__init__","outputs":[],"payable":false,"type":"constructor"},{"constant":false,"gas":35627,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"gas":1954,"inputs":[{"name":"packageName","type":"bytes32"},{"name":"version","type":"bytes32"}],"name":"getReleaseId","outputs":[{"name":"out","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"gas":1509,"inputs":[{"name":"packageName","type":"bytes32"},{"name":"version","type":"bytes32"}],"name":"generateReleaseId","outputs":[{"name":"out","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"gas":1259,"inputs":[{"name":"packageId","type":"bytes32"}],"name":"getPackageName","outputs":[{"name":"out","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"gas":1865,"inputs":[{"name":"packageName","type":"bytes32"}],"name":"getPackageData","outputs":[{"name":"out","type":"bytes32"},{"name":"out","type":"bytes32"},{"name":"out","type":"int128"}],"payable":false,"type":"function"},{"constant":false,"gas":633,"inputs":[],"name":"numPackageIds","outputs":[{"name":"out","type":"int128"}],"payable":false,"type":"function"},{"constant":false,"gas":1436,"inputs":[{"name":"packageName","type":"bytes32"}],"name":"numReleaseIds","outputs":[{"name":"out","type":"int128"}],"payable":false,"type":"function"},{"constant":false,"gas":4764,"inputs":[{"name":"offset","type":"uint256"},{"name":"length","type":"uint256"}],"name":"getAllPackageIds","outputs":[{"name":"out","type":"bytes32"},{"name":"out","type":"bytes32"},{"name":"out","type":"bytes32"},{"name":"out","type":"bytes32"},{"name":"out","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"gas":15167,"inputs":[{"name":"packageName","type":"bytes32"},{"name":"offset","type":"uint256"},{"name":"length","type":"uint256"}],"name":"getAllReleaseIds","outputs":[{"name":"out","type":"bytes32"},{"name":"out","type":"bytes32"},{"name":"out","type":"bytes32"},{"name":"out","type":"bytes32"},{"name":"out","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"gas":15331,"inputs":[{"name":"releaseId","type":"bytes32"}],"name":"getReleaseData","outputs":[{"name":"out","type":"bytes32"},{"name":"out","type":"bytes32"},{"name":"out","type":"bytes"}],"payable":false,"type":"function"},{"constant":false,"gas":1865737,"inputs":[{"name":"packageName","type":"bytes32"},{"name":"version","type":"bytes32"},{"name":"manifestURI","type":"bytes"}],"name":"release","outputs":[],"payable":false,"type":"function"},{"constant":true,"gas":873,"inputs":[],"name":"owner","outputs":[{"name":"out","type":"address"}],"payable":false,"type":"function"},{"constant":true,"gas":1108,"inputs":[{"name":"arg0","type":"bytes32"}],"name":"packages__exists","outputs":[{"name":"out","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"gas":1144,"inputs":[{"name":"arg0","type":"bytes32"}],"name":"packages__createdAt","outputs":[{"name":"out","type":"uint256","unit":"sec"}],"payable":false,"type":"function"},{"constant":true,"gas":1174,"inputs":[{"name":"arg0","type":"bytes32"}],"name":"packages__updatedAt","outputs":[{"name":"out","type":"uint256","unit":"sec"}],"payable":false,"type":"function"},{"constant":true,"gas":1204,"inputs":[{"name":"arg0","type":"bytes32"}],"name":"packages__name","outputs":[{"name":"out","type":"bytes32"}],"payable":false,"type":"function"},{"constant":true,"gas":1234,"inputs":[{"name":"arg0","type":"bytes32"}],"name":"packages__releaseCount","outputs":[{"name":"out","type":"int128"}],"payable":false,"type":"function"},{"constant":true,"gas":1258,"inputs":[{"name":"arg0","type":"bytes32"}],"name":"releases__exists","outputs":[{"name":"out","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"gas":1294,"inputs":[{"name":"arg0","type":"bytes32"}],"name":"releases__createdAt","outputs":[{"name":"out","type":"uint256","unit":"sec"}],"payable":false,"type":"function"},{"constant":true,"gas":1324,"inputs":[{"name":"arg0","type":"bytes32"}],"name":"releases__packageId","outputs":[{"name":"out","type":"bytes32"}],"payable":false,"type":"function"},{"constant":true,"gas":1354,"inputs":[{"name":"arg0","type":"bytes32"}],"name":"releases__version","outputs":[{"name":"out","type":"bytes32"}],"payable":false,"type":"function"},{"constant":true,"gas":163068,"inputs":[{"name":"arg0","type":"bytes32"}],"name":"releases__uri","outputs":[{"name":"out","type":"bytes"}],"payable":false,"type":"function"},{"constant":true,"gas":1203,"inputs":[],"name":"packageCount","outputs":[{"name":"out","type":"int128"}],"payable":false,"type":"function"},{"constant":true,"gas":1233,"inputs":[],"name":"releaseCount","outputs":[{"name":"out","type":"int128"}],"payable":false,"type":"function"}],"deployment_bytecode":{"bytecode":"0x600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a052341561009e57600080fd5b3360005561195256600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a052634fb2e45d60005114156100dd57602060046101403734156100b457600080fd5b60043560205181106100c557600080fd5b5033600054146100d457600080fd5b61014051600055005b632244dda0600051141561019357604060046101403734156100fe57600080fd5b6000610140516020826102000101526020810190506101605160208261020001015260208101905080610200526102009050805160200180610180828460006004600a8704601201f161015057600080fd5b50506101808051602082012090506102805260026102805160e05260c052604060c02060c052602060c0205461018557600080fd5b6102805160005260206000f3005b6336739429600051141561022657604060046101403734156101b457600080fd5b6000610140516020826102000101526020810190506101605160208261020001015260208101905080610200526102009050805160200180610180828460006004600a8704601201f161020657600080fd5b5050610180805160208201209050610280526102805160005260206000f3005b6306fe1fd76000511415610291576020600461014037341561024757600080fd5b60016101405160e05260c052604060c02060c052602060c0205461026a57600080fd5b600360016101405160e05260c052604060c02060c052602060c020015460005260206000f3005b63b4d6d4c7600051141561034357602060046101403734156102b257600080fd5b6101405160c052602060c0206101605260016101605160e05260c052604060c02060c052602060c020546102e557600080fd5b6060610180526101a0600360016101605160e05260c052604060c02060c052602060c02001548152610160518160200152600460016101605160e05260c052604060c02060c052602060c0200154816040015250610180516101a0f3005b63a54fb685600051141561036957341561035c57600080fd5b60045460005260206000f3005b63c18466cb60005114156103e4576020600461014037341561038a57600080fd5b6101405160c052602060c0206101605260016101605160e05260c052604060c02060c052602060c020546103bd57600080fd5b600460016101605160e05260c052604060c02060c052602060c020015460005260206000f3005b6343212cf16000511415610581576040600461014037341561040557600080fd5b6101405160405181111561041857600080fd5b610180526101605160405181111561042f57600080fd5b6101a05260056101a0511461044357600080fd5b60045461018051131561045557600080fd5b610260610180516004818352015b600454610260511315156104cf5760066102605160e05260c052604060c0205461028052610280516101c0606051610180516102605103806040519013156104aa57600080fd5b80919012156104b857600080fd5b600581106104c557600080fd5b6020020152610512565b6008546101c0606051610180516102605103806040519013156104f157600080fd5b80919012156104ff57600080fd5b6005811061050c57600080fd5b60200201525b5b8151600101808352811415610463575b505060a06102a0526102c06101c06000602002015181526101c06001602002015181602001526101c06002602002015181604001526101c06003602002015181606001526101c0600460200201518160800152506102a0516102c0f3005b600015610613575b610180526101405261016052610160516101a0526000610140516020826102400101526020810190506101a051602082610240010152602081019050806102405261024090508051602001806101c0828460006004600a8704601201f16105ef57600080fd5b50506101c08051602082012090506102c0526102c051600052600051610180515650005b63fa6bf4da60005114156108d9576060600461014037341561063457600080fd5b6101605160405181111561064757600080fd5b6101a0526101805160405181111561065e57600080fd5b6101c05260056101c0511461067257600080fd5b6101405160c052602060c0206101e05260016101e05160e05260c052604060c02060c052602060c020546106a557600080fd5b600460016101e05160e05260c052604060c02060c052602060c02001546101a05113156106d157600080fd5b6102a06101a0516004818352015b600460016101e05160e05260c052604060c02060c052602060c02001546102a051131515610827576101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c05163c658b60e6102e0526101e0516103005260605160016102a051018060405190131561076657600080fd5b809190121561077457600080fd5b61032052610320516103005160065801610589565b610380526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a052610180526101605261014052610380516102c05260036102c05160e05260c052604060c020546103a0526103a0516102006060516101a0516102a051038060405190131561080257600080fd5b809190121561081057600080fd5b6005811061081d57600080fd5b602002015261086a565b6008546102006060516101a0516102a051038060405190131561084957600080fd5b809190121561085757600080fd5b6005811061086457600080fd5b60200201525b5b81516001018083528114156106df575b505060a06103c0526103e0610200600060200201518152610200600160200201518160200152610200600260200201518160400152610200600360200201518160600152610200600460200201518160800152506103c0516103e0f3005b634c4aea876000511415610a3457602060046101403734156108fa57600080fd5b60026101405160e05260c052604060c02060c052602060c0205461091d57600080fd5b600260026101405160e05260c052604060c02060c052602060c0200154610160526060610180526101a0600360016101605160e05260c052604060c02060c052602060c02001548152600360026101405160e05260c052604060c02060c052602060c02001548160200152610180518160400152600460026101405160e05260c052604060c02060c052602060c020018060c052602060c020610180518301602082540161012060006021818352015b826101205160200211156109e057610a02565b61012051850154610120516020028501525b81516001018083528114156109cd575b5050505050506101805160206101805183015160206001820306601f820103905001016101805250610180516101a0f3005b600015610e47575b6101e0526101405261016052610180526101a0526101c052610200526000610640525b6102005160206001820306601f820103905061064051101515610a8157610a9a565b6106405161022001526106405160200161064052610a5f565b60005060026101405160e05260c052604060c02060c052602060c02060018155426001820155610160516002820155610180516003820155610200806004830160c052602060c020602082510161012060006021818352015b82610120516020021115610b0657610b28565b61012051602002850151610120518501555b8151600101808352811415610af3575b50505050505050600460016101605160e05260c052604060c02060c052602060c02001606051600182540180604051901315610b6357600080fd5b8091901215610b7157600080fd5b81555061014051600760055460e05260c052604060c020556005606051600182540180604051901315610ba357600080fd5b8091901215610bb157600080fd5b8155506101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c0516103e05161040051610420516104405161046051610480516104a0516104c0516104e05161050051610520516105405161056051610580516105a0516105c0516105e0516106005161062051610640516106605163c658b60e61068052610160516106a052600460016101605160e05260c052604060c02060c052602060c02001546106c0526106c0516106a05160065801610589565b61072052610660526106405261062052610600526105e0526105c0526105a05261058052610560526105405261052052610500526104e0526104c0526104a05261048052610460526104405261042052610400526103e0526103c0526103a05261038052610360526103405261032052610300526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a05261018052610160526101405261072051610660526101405160036106605160e05260c052604060c02055610180516107a052604061076052610760516107c052610200805160200180610760516107a001828460006004600a8704601201f1610da757600080fd5b5050610760516107a0016107408151610400818352015b61040061074051101515610dd157610dee565b6000610740516020850101535b8151600101808352811415610dbe575b5050506020610760516107a0015160206001820306601f8201039050610760510101610760526101c0517f350213af825a48db104cd58c2128537a8ece5b4f20ecb0de0680781cfd906582610760516107a0a26101e051565b63142f178c60005114156114bc5760606004610140373415610e6857600080fd5b6104086044356004016101a0376103e8604435600401351115610e8a57600080fd5b600854610140511415610e9c57600080fd5b600854610160511415610eae57600080fd5b60006101a05113610ebe57600080fd5b3360005414610ecc57600080fd5b6101405160c052602060c0206105e05260206106c060446336739429610620526101405161064052610160516106605261063c6000305af1610f0d57600080fd5b6106c05161060052600160016105e05160e05260c052604060c02060c052602060c0205414156112085760016105e05160e05260c052604060c02060c052602060c02060018155600160016105e05160e05260c052604060c02060c052602060c02001546001820155426002820155610140516003820155600460016105e05160e05260c052604060c02060c052602060c020015460048201555060026106005160e05260c052604060c02060c052602060c0205415610fcc57600080fd5b6101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c0516103e05161040051610420516104405161046051610480516104a0516104c0516104e05161050051610520516105405161056051610580516105a0516105c0516105e05161060051610620516106405161066051610680516106a0516106c05160a063836ee66e610c205261060051610c40526105e051610c605261016051610c805280610ca0526101a08080516020018084610c4001828460006004600a8704601201f16110ce57600080fd5b50508051820160206001820306601f820103905060200191505061014051610cc05250611100611140525b610ce061114051101561110b5761112f565b6000611140515114151561111f5761114051515b60206111405103611140526110f9565b610cc051610ca051610c8051610c6051610c405160065801610a3c565b6106c0526106a05261068052610660526106405261062052610600526105e0526105c0526105a05261058052610560526105405261052052610500526104e0526104c0526104a05261048052610460526104405261042052610400526103e0526103c0526103a05261038052610360526103405261032052610300526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526000506114ba565b60016105e05160e05260c052604060c02060c052602060c0206001815542600182015542600282015561014051600382015560006004820155506105e051600660045460e05260c052604060c02055600460605160018254018060405190131561127157600080fd5b809190121561127f57600080fd5b8155506101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c0516103e05161040051610420516104405161046051610480516104a0516104c0516104e05161050051610520516105405161056051610580516105a0516105c0516105e05161060051610620516106405161066051610680516106a0516106c05160a063836ee66e6106e05261060051610700526105e05161072052610160516107405280610760526101a0808051602001808461070001828460006004600a8704601201f161138457600080fd5b50508051820160206001820306601f8201039050602001915050610140516107805250610bc0610c00525b6107a0610c005110156113c1576113e5565b6000610c0051511415156113d557610c0051515b6020610c005103610c00526113af565b610780516107605161074051610720516107005160065801610a3c565b6106c0526106a05261068052610660526106405261062052610600526105e0526105c0526105a05261058052610560526105405261052052610500526104e0526104c0526104a05261048052610460526104405261042052610400526103e0526103c0526103a05261038052610360526103405261032052610300526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526000505b005b638da5cb5b60005114156114e25734156114d557600080fd5b60005460005260206000f3005b63c7f8a0446000511415611527576020600461014037341561150357600080fd5b60016101405160e05260c052604060c02060c052602060c0205460005260206000f3005b636366b2f3600051141561156f576020600461014037341561154857600080fd5b600160016101405160e05260c052604060c02060c052602060c020015460005260206000f3005b63c40509d860005114156115b7576020600461014037341561159057600080fd5b600260016101405160e05260c052604060c02060c052602060c020015460005260206000f3005b63cb4e26ec60005114156115ff57602060046101403734156115d857600080fd5b600360016101405160e05260c052604060c02060c052602060c020015460005260206000f3005b632fa39cad6000511415611647576020600461014037341561162057600080fd5b600460016101405160e05260c052604060c02060c052602060c020015460005260206000f3005b63c67790b8600051141561168c576020600461014037341561166857600080fd5b60026101405160e05260c052604060c02060c052602060c0205460005260206000f3005b63f1849be460005114156116d457602060046101403734156116ad57600080fd5b600160026101405160e05260c052604060c02060c052602060c020015460005260206000f3005b63138b7ae0600051141561171c57602060046101403734156116f557600080fd5b600260026101405160e05260c052604060c02060c052602060c020015460005260206000f3005b632ee2bcc16000511415611764576020600461014037341561173d57600080fd5b600360026101405160e05260c052604060c02060c052602060c020015460005260206000f3005b635036899c6000511415611859576020600461014037341561178557600080fd5b600460026101405160e05260c052604060c02060c052602060c020018060c052602060c0206101a0602082540161012060006021818352015b826101205160200211156117d1576117f3565b61012051850154610120516020028501525b81516001018083528114156117be575b5050505050506105e06101a0516103e8818352015b6103e86105e051111561181a57611836565b60006105e0516101c001535b8151600101808352811415611808575b505060206101805260406101a0510160206001820306601f8201039050610180f3005b63ee0ebe0c600051141561187f57341561187257600080fd5b60045460005260206000f3005b63b8d08db260005114156118a557341561189857600080fd5b60055460005260206000f3005b60006000fd5b6100a7611952036100a76000396100a7611952036000f3"},"runtime_bytecode":{"bytecode":"0x600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a052634fb2e45d60005114156100dd57602060046101403734156100b457600080fd5b60043560205181106100c557600080fd5b5033600054146100d457600080fd5b61014051600055005b632244dda0600051141561019357604060046101403734156100fe57600080fd5b6000610140516020826102000101526020810190506101605160208261020001015260208101905080610200526102009050805160200180610180828460006004600a8704601201f161015057600080fd5b50506101808051602082012090506102805260026102805160e05260c052604060c02060c052602060c0205461018557600080fd5b6102805160005260206000f3005b6336739429600051141561022657604060046101403734156101b457600080fd5b6000610140516020826102000101526020810190506101605160208261020001015260208101905080610200526102009050805160200180610180828460006004600a8704601201f161020657600080fd5b5050610180805160208201209050610280526102805160005260206000f3005b6306fe1fd76000511415610291576020600461014037341561024757600080fd5b60016101405160e05260c052604060c02060c052602060c0205461026a57600080fd5b600360016101405160e05260c052604060c02060c052602060c020015460005260206000f3005b63b4d6d4c7600051141561034357602060046101403734156102b257600080fd5b6101405160c052602060c0206101605260016101605160e05260c052604060c02060c052602060c020546102e557600080fd5b6060610180526101a0600360016101605160e05260c052604060c02060c052602060c02001548152610160518160200152600460016101605160e05260c052604060c02060c052602060c0200154816040015250610180516101a0f3005b63a54fb685600051141561036957341561035c57600080fd5b60045460005260206000f3005b63c18466cb60005114156103e4576020600461014037341561038a57600080fd5b6101405160c052602060c0206101605260016101605160e05260c052604060c02060c052602060c020546103bd57600080fd5b600460016101605160e05260c052604060c02060c052602060c020015460005260206000f3005b6343212cf16000511415610581576040600461014037341561040557600080fd5b6101405160405181111561041857600080fd5b610180526101605160405181111561042f57600080fd5b6101a05260056101a0511461044357600080fd5b60045461018051131561045557600080fd5b610260610180516004818352015b600454610260511315156104cf5760066102605160e05260c052604060c0205461028052610280516101c0606051610180516102605103806040519013156104aa57600080fd5b80919012156104b857600080fd5b600581106104c557600080fd5b6020020152610512565b6008546101c0606051610180516102605103806040519013156104f157600080fd5b80919012156104ff57600080fd5b6005811061050c57600080fd5b60200201525b5b8151600101808352811415610463575b505060a06102a0526102c06101c06000602002015181526101c06001602002015181602001526101c06002602002015181604001526101c06003602002015181606001526101c0600460200201518160800152506102a0516102c0f3005b600015610613575b610180526101405261016052610160516101a0526000610140516020826102400101526020810190506101a051602082610240010152602081019050806102405261024090508051602001806101c0828460006004600a8704601201f16105ef57600080fd5b50506101c08051602082012090506102c0526102c051600052600051610180515650005b63fa6bf4da60005114156108d9576060600461014037341561063457600080fd5b6101605160405181111561064757600080fd5b6101a0526101805160405181111561065e57600080fd5b6101c05260056101c0511461067257600080fd5b6101405160c052602060c0206101e05260016101e05160e05260c052604060c02060c052602060c020546106a557600080fd5b600460016101e05160e05260c052604060c02060c052602060c02001546101a05113156106d157600080fd5b6102a06101a0516004818352015b600460016101e05160e05260c052604060c02060c052602060c02001546102a051131515610827576101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c05163c658b60e6102e0526101e0516103005260605160016102a051018060405190131561076657600080fd5b809190121561077457600080fd5b61032052610320516103005160065801610589565b610380526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a052610180526101605261014052610380516102c05260036102c05160e05260c052604060c020546103a0526103a0516102006060516101a0516102a051038060405190131561080257600080fd5b809190121561081057600080fd5b6005811061081d57600080fd5b602002015261086a565b6008546102006060516101a0516102a051038060405190131561084957600080fd5b809190121561085757600080fd5b6005811061086457600080fd5b60200201525b5b81516001018083528114156106df575b505060a06103c0526103e0610200600060200201518152610200600160200201518160200152610200600260200201518160400152610200600360200201518160600152610200600460200201518160800152506103c0516103e0f3005b634c4aea876000511415610a3457602060046101403734156108fa57600080fd5b60026101405160e05260c052604060c02060c052602060c0205461091d57600080fd5b600260026101405160e05260c052604060c02060c052602060c0200154610160526060610180526101a0600360016101605160e05260c052604060c02060c052602060c02001548152600360026101405160e05260c052604060c02060c052602060c02001548160200152610180518160400152600460026101405160e05260c052604060c02060c052602060c020018060c052602060c020610180518301602082540161012060006021818352015b826101205160200211156109e057610a02565b61012051850154610120516020028501525b81516001018083528114156109cd575b5050505050506101805160206101805183015160206001820306601f820103905001016101805250610180516101a0f3005b600015610e47575b6101e0526101405261016052610180526101a0526101c052610200526000610640525b6102005160206001820306601f820103905061064051101515610a8157610a9a565b6106405161022001526106405160200161064052610a5f565b60005060026101405160e05260c052604060c02060c052602060c02060018155426001820155610160516002820155610180516003820155610200806004830160c052602060c020602082510161012060006021818352015b82610120516020021115610b0657610b28565b61012051602002850151610120518501555b8151600101808352811415610af3575b50505050505050600460016101605160e05260c052604060c02060c052602060c02001606051600182540180604051901315610b6357600080fd5b8091901215610b7157600080fd5b81555061014051600760055460e05260c052604060c020556005606051600182540180604051901315610ba357600080fd5b8091901215610bb157600080fd5b8155506101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c0516103e05161040051610420516104405161046051610480516104a0516104c0516104e05161050051610520516105405161056051610580516105a0516105c0516105e0516106005161062051610640516106605163c658b60e61068052610160516106a052600460016101605160e05260c052604060c02060c052602060c02001546106c0526106c0516106a05160065801610589565b61072052610660526106405261062052610600526105e0526105c0526105a05261058052610560526105405261052052610500526104e0526104c0526104a05261048052610460526104405261042052610400526103e0526103c0526103a05261038052610360526103405261032052610300526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a05261018052610160526101405261072051610660526101405160036106605160e05260c052604060c02055610180516107a052604061076052610760516107c052610200805160200180610760516107a001828460006004600a8704601201f1610da757600080fd5b5050610760516107a0016107408151610400818352015b61040061074051101515610dd157610dee565b6000610740516020850101535b8151600101808352811415610dbe575b5050506020610760516107a0015160206001820306601f8201039050610760510101610760526101c0517f350213af825a48db104cd58c2128537a8ece5b4f20ecb0de0680781cfd906582610760516107a0a26101e051565b63142f178c60005114156114bc5760606004610140373415610e6857600080fd5b6104086044356004016101a0376103e8604435600401351115610e8a57600080fd5b600854610140511415610e9c57600080fd5b600854610160511415610eae57600080fd5b60006101a05113610ebe57600080fd5b3360005414610ecc57600080fd5b6101405160c052602060c0206105e05260206106c060446336739429610620526101405161064052610160516106605261063c6000305af1610f0d57600080fd5b6106c05161060052600160016105e05160e05260c052604060c02060c052602060c0205414156112085760016105e05160e05260c052604060c02060c052602060c02060018155600160016105e05160e05260c052604060c02060c052602060c02001546001820155426002820155610140516003820155600460016105e05160e05260c052604060c02060c052602060c020015460048201555060026106005160e05260c052604060c02060c052602060c0205415610fcc57600080fd5b6101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c0516103e05161040051610420516104405161046051610480516104a0516104c0516104e05161050051610520516105405161056051610580516105a0516105c0516105e05161060051610620516106405161066051610680516106a0516106c05160a063836ee66e610c205261060051610c40526105e051610c605261016051610c805280610ca0526101a08080516020018084610c4001828460006004600a8704601201f16110ce57600080fd5b50508051820160206001820306601f820103905060200191505061014051610cc05250611100611140525b610ce061114051101561110b5761112f565b6000611140515114151561111f5761114051515b60206111405103611140526110f9565b610cc051610ca051610c8051610c6051610c405160065801610a3c565b6106c0526106a05261068052610660526106405261062052610600526105e0526105c0526105a05261058052610560526105405261052052610500526104e0526104c0526104a05261048052610460526104405261042052610400526103e0526103c0526103a05261038052610360526103405261032052610300526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526000506114ba565b60016105e05160e05260c052604060c02060c052602060c0206001815542600182015542600282015561014051600382015560006004820155506105e051600660045460e05260c052604060c02055600460605160018254018060405190131561127157600080fd5b809190121561127f57600080fd5b8155506101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c0516103e05161040051610420516104405161046051610480516104a0516104c0516104e05161050051610520516105405161056051610580516105a0516105c0516105e05161060051610620516106405161066051610680516106a0516106c05160a063836ee66e6106e05261060051610700526105e05161072052610160516107405280610760526101a0808051602001808461070001828460006004600a8704601201f161138457600080fd5b50508051820160206001820306601f8201039050602001915050610140516107805250610bc0610c00525b6107a0610c005110156113c1576113e5565b6000610c0051511415156113d557610c0051515b6020610c005103610c00526113af565b610780516107605161074051610720516107005160065801610a3c565b6106c0526106a05261068052610660526106405261062052610600526105e0526105c0526105a05261058052610560526105405261052052610500526104e0526104c0526104a05261048052610460526104405261042052610400526103e0526103c0526103a05261038052610360526103405261032052610300526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526000505b005b638da5cb5b60005114156114e25734156114d557600080fd5b60005460005260206000f3005b63c7f8a0446000511415611527576020600461014037341561150357600080fd5b60016101405160e05260c052604060c02060c052602060c0205460005260206000f3005b636366b2f3600051141561156f576020600461014037341561154857600080fd5b600160016101405160e05260c052604060c02060c052602060c020015460005260206000f3005b63c40509d860005114156115b7576020600461014037341561159057600080fd5b600260016101405160e05260c052604060c02060c052602060c020015460005260206000f3005b63cb4e26ec60005114156115ff57602060046101403734156115d857600080fd5b600360016101405160e05260c052604060c02060c052602060c020015460005260206000f3005b632fa39cad6000511415611647576020600461014037341561162057600080fd5b600460016101405160e05260c052604060c02060c052602060c020015460005260206000f3005b63c67790b8600051141561168c576020600461014037341561166857600080fd5b60026101405160e05260c052604060c02060c052602060c0205460005260206000f3005b63f1849be460005114156116d457602060046101403734156116ad57600080fd5b600160026101405160e05260c052604060c02060c052602060c020015460005260206000f3005b63138b7ae0600051141561171c57602060046101403734156116f557600080fd5b600260026101405160e05260c052604060c02060c052602060c020015460005260206000f3005b632ee2bcc16000511415611764576020600461014037341561173d57600080fd5b600360026101405160e05260c052604060c02060c052602060c020015460005260206000f3005b635036899c6000511415611859576020600461014037341561178557600080fd5b600460026101405160e05260c052604060c02060c052602060c020018060c052602060c0206101a0602082540161012060006021818352015b826101205160200211156117d1576117f3565b61012051850154610120516020028501525b81516001018083528114156117be575b5050505050506105e06101a0516103e8818352015b6103e86105e051111561181a57611836565b60006105e0516101c001535b8151600101808352811415611808575b505060206101805260406101a0510160206001820306601f8201039050610180f3005b63ee0ebe0c600051141561187f57341561187257600080fd5b60045460005260206000f3005b63b8d08db260005114156118a557341561189857600080fd5b60055460005260206000f3005b60006000fd"}},"registry_with_delete":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"name":"_package","type":"bytes32"},{"indexed":false,"name":"_version","type":"bytes32"},{"indexed":false,"name":"_uri","type":"bytes"}],"name":"VersionRelease","type":"event"},{"constant":false,"inputs":[],"name":"__init__","outputs":[],"payable":false,"type":"constructor"},{"constant":false,"gas":35627,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"gas":1954,"inputs":[{"name":"packageName","type":"bytes32"},{"name":"version","type":"bytes32"}],"name":"getReleaseId","outputs":[{"name":"out","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"gas":1509,"inputs":[{"name":"packageName","type":"bytes32"},{"name":"version","type":"bytes32"}],"name":"generateReleaseId","outputs":[{"name":"out","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"gas":1259,"inputs":[{"name":"packageId","type":"bytes32"}],"name":"getPackageName","outputs":[{"name":"out","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"gas":1865,"inputs":[{"name":"packageName","type":"bytes32"}],"name":"getPackageData","outputs":[{"name":"out","type":"bytes32"},{"name":"out","type":"bytes32"},{"name":"out","type":"int128"}],"payable":false,"type":"function"},{"constant":false,"gas":633,"inputs":[],"name":"numPackageIds","outputs":[{"name":"out","type":"int128"}],"payable":false,"type":"function"},{"constant":false,"gas":1436,"inputs":[{"name":"packageName","type":"bytes32"}],"name":"numReleaseIds","outputs":[{"name":"out","type":"int128"}],"payable":false,"type":"function"},{"constant":false,"gas":7252,"inputs":[{"name":"offset","type":"uint256"},{"name":"length","type":"uint256"}],"name":"getAllPackageIds","outputs":[{"name":"out","type":"bytes32"},{"name":"out","type":"bytes32"},{"name":"out","type":"bytes32"},{"name":"out","type":"bytes32"},{"name":"out","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"gas":17655,"inputs":[{"name":"packageName","type":"bytes32"},{"name":"offset","type":"uint256"},{"name":"length","type":"uint256"}],"name":"getAllReleaseIds","outputs":[{"name":"out","type":"bytes32"},{"name":"out","type":"bytes32"},{"name":"out","type":"bytes32"},{"name":"out","type":"bytes32"},{"name":"out","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"gas":15331,"inputs":[{"name":"releaseId","type":"bytes32"}],"name":"getReleaseData","outputs":[{"name":"out","type":"bytes32"},{"name":"out","type":"bytes32"},{"name":"out","type":"bytes"}],"payable":false,"type":"function"},{"constant":false,"gas":1937386,"inputs":[{"name":"packageName","type":"bytes32"},{"name":"version","type":"bytes32"},{"name":"manifestURI","type":"bytes"}],"name":"release","outputs":[],"payable":false,"type":"function"},{"constant":false,"gas":134511,"inputs":[{"name":"releaseId","type":"bytes32"}],"name":"deleteReleaseId","outputs":[],"payable":false,"type":"function"},{"constant":true,"gas":903,"inputs":[],"name":"owner","outputs":[{"name":"out","type":"address"}],"payable":false,"type":"function"},{"constant":true,"gas":1138,"inputs":[{"name":"arg0","type":"bytes32"}],"name":"packages__exists","outputs":[{"name":"out","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"gas":1174,"inputs":[{"name":"arg0","type":"bytes32"}],"name":"packages__createdAt","outputs":[{"name":"out","type":"uint256","unit":"sec"}],"payable":false,"type":"function"},{"constant":true,"gas":1204,"inputs":[{"name":"arg0","type":"bytes32"}],"name":"packages__updatedAt","outputs":[{"name":"out","type":"uint256","unit":"sec"}],"payable":false,"type":"function"},{"constant":true,"gas":1234,"inputs":[{"name":"arg0","type":"bytes32"}],"name":"packages__name","outputs":[{"name":"out","type":"bytes32"}],"payable":false,"type":"function"},{"constant":true,"gas":1264,"inputs":[{"name":"arg0","type":"bytes32"}],"name":"packages__releaseCount","outputs":[{"name":"out","type":"int128"}],"payable":false,"type":"function"},{"constant":true,"gas":1288,"inputs":[{"name":"arg0","type":"bytes32"}],"name":"releases__exists","outputs":[{"name":"out","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"gas":1324,"inputs":[{"name":"arg0","type":"bytes32"}],"name":"releases__createdAt","outputs":[{"name":"out","type":"uint256","unit":"sec"}],"payable":false,"type":"function"},{"constant":true,"gas":1354,"inputs":[{"name":"arg0","type":"bytes32"}],"name":"releases__packageId","outputs":[{"name":"out","type":"bytes32"}],"payable":false,"type":"function"},{"constant":true,"gas":1384,"inputs":[{"name":"arg0","type":"bytes32"}],"name":"releases__version","outputs":[{"name":"out","type":"bytes32"}],"payable":false,"type":"function"},{"constant":true,"gas":163098,"inputs":[{"name":"arg0","type":"bytes32"}],"name":"releases__uri","outputs":[{"name":"out","type":"bytes"}],"payable":false,"type":"function"},{"constant":true,"gas":1233,"inputs":[],"name":"totalPackageCount","outputs":[{"name":"out","type":"int128"}],"payable":false,"type":"function"},{"constant":true,"gas":1263,"inputs":[],"name":"activePackageCount","outputs":[{"name":"out","type":"int128"}],"payable":false,"type":"function"},{"constant":true,"gas":1293,"inputs":[],"name":"totalReleaseCount","outputs":[{"name":"out","type":"int128"}],"payable":false,"type":"function"},{"constant":true,"gas":1323,"inputs":[],"name":"activeReleaseCount","outputs":[{"name":"out","type":"int128"}],"payable":false,"type":"function"}],"deployment_bytecode":{"bytecode":"0x600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a052341561009e57600080fd5b33600055611cf556600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a052634fb2e45d60005114156100dd57602060046101403734156100b457600080fd5b60043560205181106100c557600080fd5b5033600054146100d457600080fd5b61014051600055005b632244dda0600051141561019357604060046101403734156100fe57600080fd5b6000610140516020826102000101526020810190506101605160208261020001015260208101905080610200526102009050805160200180610180828460006004600a8704601201f161015057600080fd5b50506101808051602082012090506102805260026102805160e05260c052604060c02060c052602060c0205461018557600080fd5b6102805160005260206000f3005b6336739429600051141561022657604060046101403734156101b457600080fd5b6000610140516020826102000101526020810190506101605160208261020001015260208101905080610200526102009050805160200180610180828460006004600a8704601201f161020657600080fd5b5050610180805160208201209050610280526102805160005260206000f3005b6306fe1fd76000511415610291576020600461014037341561024757600080fd5b60016101405160e05260c052604060c02060c052602060c0205461026a57600080fd5b600360016101405160e05260c052604060c02060c052602060c020015460005260206000f3005b63b4d6d4c7600051141561034357602060046101403734156102b257600080fd5b6101405160c052602060c0206101605260016101605160e05260c052604060c02060c052602060c020546102e557600080fd5b6060610180526101a0600360016101605160e05260c052604060c02060c052602060c02001548152610160518160200152600460016101605160e05260c052604060c02060c052602060c0200154816040015250610180516101a0f3005b63a54fb685600051141561036957341561035c57600080fd5b60055460005260206000f3005b63c18466cb60005114156103e4576020600461014037341561038a57600080fd5b6101405160c052602060c0206101605260016101605160e05260c052604060c02060c052602060c020546103bd57600080fd5b600460016101605160e05260c052604060c02060c052602060c020015460005260206000f3005b6343212cf160005114156105e8576040600461014037341561040557600080fd5b6101405160405181111561041857600080fd5b610180526101605160405181111561042f57600080fd5b6101a05260056101a0511461044357600080fd5b60055461018051131561045557600080fd5b610260610180516004818352015b600554610260511315156105365760086102605160e05260c052604060c020546102805260016102805160e05260c052604060c02060c052602060c02054156104ee57610280516101c0606051610180516102605103806040519013156104c957600080fd5b80919012156104d757600080fd5b600581106104e457600080fd5b6020020152610531565b600a546101c06060516101805161026051038060405190131561051057600080fd5b809190121561051e57600080fd5b6005811061052b57600080fd5b60200201525b610579565b600a546101c06060516101805161026051038060405190131561055857600080fd5b809190121561056657600080fd5b6005811061057357600080fd5b60200201525b5b8151600101808352811415610463575b505060a06102a0526102c06101c06000602002015181526101c06001602002015181602001526101c06002602002015181604001526101c06003602002015181606001526101c0600460200201518160800152506102a0516102c0f3005b60001561067a575b610180526101405261016052610160516101a0526000610140516020826102400101526020810190506101a051602082610240010152602081019050806102405261024090508051602001806101c0828460006004600a8704601201f161065657600080fd5b50506101c08051602082012090506102c0526102c051600052600051610180515650005b63fa6bf4da60005114156109a7576060600461014037341561069b57600080fd5b610160516040518111156106ae57600080fd5b6101a052610180516040518111156106c557600080fd5b6101c05260056101c051146106d957600080fd5b6101405160c052602060c0206101e05260016101e05160e05260c052604060c02060c052602060c0205461070c57600080fd5b600460016101e05160e05260c052604060c02060c052602060c02001546101a051131561073857600080fd5b6102a06101a0516004818352015b600460016101e05160e05260c052604060c02060c052602060c02001546102a0511315156108f5576101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c05163c658b60e6102e0526101e0516103005260605160016102a05101806040519013156107cd57600080fd5b80919012156107db57600080fd5b610320526103205161030051600658016105f0565b610380526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a052610180526101605261014052610380516102c05260036102c05160e05260c052604060c020546103a05260026103a05160e05260c052604060c02060c052602060c02054156108ad576103a0516102006060516101a0516102a051038060405190131561088857600080fd5b809190121561089657600080fd5b600581106108a357600080fd5b60200201526108f0565b600a546102006060516101a0516102a05103806040519013156108cf57600080fd5b80919012156108dd57600080fd5b600581106108ea57600080fd5b60200201525b610938565b600a546102006060516101a0516102a051038060405190131561091757600080fd5b809190121561092557600080fd5b6005811061093257600080fd5b60200201525b5b8151600101808352811415610746575b505060a06103c0526103e0610200600060200201518152610200600160200201518160200152610200600260200201518160400152610200600360200201518160600152610200600460200201518160800152506103c0516103e0f3005b634c4aea876000511415610b0257602060046101403734156109c857600080fd5b60026101405160e05260c052604060c02060c052602060c020546109eb57600080fd5b600260026101405160e05260c052604060c02060c052602060c0200154610160526060610180526101a0600360016101605160e05260c052604060c02060c052602060c02001548152600360026101405160e05260c052604060c02060c052602060c02001548160200152610180518160400152600460026101405160e05260c052604060c02060c052602060c020018060c052602060c020610180518301602082540161012060006021818352015b82610120516020021115610aae57610ad0565b61012051850154610120516020028501525b8151600101808352811415610a9b575b5050505050506101805160206101805183015160206001820306601f820103905001016101805250610180516101a0f3005b600015610f67575b6101e0526101405261016052610180526101a0526101c052610200526000610640525b6102005160206001820306601f820103905061064051101515610b4f57610b68565b6106405161022001526106405160200161064052610b2d565b600050600160026101405160e05260c052604060c02060c052602060c020015415610b9257600080fd5b60026101405160e05260c052604060c02060c052602060c02060018155426001820155610160516002820155610180516003820155610200806004830160c052602060c020602082510161012060006021818352015b82610120516020021115610bfb57610c1d565b61012051602002850151610120518501555b8151600101808352811415610be8575b50505050505050600460016101605160e05260c052604060c02060c052602060c02001606051600182540180604051901315610c5857600080fd5b8091901215610c6657600080fd5b81555061014051600960065460e05260c052604060c020556006606051600182540180604051901315610c9857600080fd5b8091901215610ca657600080fd5b8155506007606051600182540180604051901315610cc357600080fd5b8091901215610cd157600080fd5b8155506101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c0516103e05161040051610420516104405161046051610480516104a0516104c0516104e05161050051610520516105405161056051610580516105a0516105c0516105e0516106005161062051610640516106605163c658b60e61068052610160516106a052600460016101605160e05260c052604060c02060c052602060c02001546106c0526106c0516106a051600658016105f0565b61072052610660526106405261062052610600526105e0526105c0526105a05261058052610560526105405261052052610500526104e0526104c0526104a05261048052610460526104405261042052610400526103e0526103c0526103a05261038052610360526103405261032052610300526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a05261018052610160526101405261072051610660526101405160036106605160e05260c052604060c02055610180516107a052604061076052610760516107c052610200805160200180610760516107a001828460006004600a8704601201f1610ec757600080fd5b5050610760516107a0016107408151610400818352015b61040061074051101515610ef157610f0e565b6000610740516020850101535b8151600101808352811415610ede575b5050506020610760516107a0015160206001820306601f8201039050610760510101610760526101c0517f350213af825a48db104cd58c2128537a8ece5b4f20ecb0de0680781cfd906582610760516107a0a26101e051565b63142f178c600051141561160a5760606004610140373415610f8857600080fd5b6104086044356004016101a0376103e8604435600401351115610faa57600080fd5b600a54610140511415610fbc57600080fd5b600a54610160511415610fce57600080fd5b60006101a05113610fde57600080fd5b3360005414610fec57600080fd5b6101405160c052602060c0206105e05260206106c060446336739429610620526101405161064052610160516106605261063c6000305af161102d57600080fd5b6106c05161060052600160016105e05160e05260c052604060c02060c052602060c0205414156113045760016105e05160e05260c052604060c02060c052602060c02060018155600160016105e05160e05260c052604060c02060c052602060c02001546001820155426002820155610140516003820155600460016105e05160e05260c052604060c02060c052602060c02001546004820155506101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c0516103e05161040051610420516104405161046051610480516104a0516104c0516104e05161050051610520516105405161056051610580516105a0516105c0516105e05161060051610620516106405161066051610680516106a0516106c05160a063836ee66e610c205261060051610c40526105e051610c605261016051610c805280610ca0526101a08080516020018084610c4001828460006004600a8704601201f16111ca57600080fd5b50508051820160206001820306601f820103905060200191505061014051610cc05250611100611140525b610ce06111405110156112075761122b565b6000611140515114151561121b5761114051515b60206111405103611140526111f5565b610cc051610ca051610c8051610c6051610c405160065801610b0a565b6106c0526106a05261068052610660526106405261062052610600526105e0526105c0526105a05261058052610560526105405261052052610500526104e0526104c0526104a05261048052610460526104405261042052610400526103e0526103c0526103a05261038052610360526103405261032052610300526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a052610180526101605261014052600050611608565b600160016105e05160e05260c052604060c02060c052602060c02001541561132b57600080fd5b60016105e05160e05260c052604060c02060c052602060c0206001815542600182015542600282015561014051600382015560006004820155506105e051600860045460e05260c052604060c02055600460605160018254018060405190131561139457600080fd5b80919012156113a257600080fd5b81555060056060516001825401806040519013156113bf57600080fd5b80919012156113cd57600080fd5b8155506101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c0516103e05161040051610420516104405161046051610480516104a0516104c0516104e05161050051610520516105405161056051610580516105a0516105c0516105e05161060051610620516106405161066051610680516106a0516106c05160a063836ee66e6106e05261060051610700526105e05161072052610160516107405280610760526101a0808051602001808461070001828460006004600a8704601201f16114d257600080fd5b50508051820160206001820306601f8201039050602001915050610140516107805250610bc0610c00525b6107a0610c0051101561150f57611533565b6000610c00515114151561152357610c0051515b6020610c005103610c00526114fd565b610780516107605161074051610720516107005160065801610b0a565b6106c0526106a05261068052610660526106405261062052610600526105e0526105c0526105a05261058052610560526105405261052052610500526104e0526104c0526104a05261048052610460526104405261042052610400526103e0526103c0526103a05261038052610360526103405261032052610300526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526000505b005b637cfd7cd26000511415611813576020600461014037341561162b57600080fd5b336000541461163957600080fd5b60026101405160e05260c052604060c02060c052602060c0205461165c57600080fd5b600260026101405160e05260c052604060c02060c052602060c02001546101605260016101605160e05260c052604060c02060c052602060c020546116a057600080fd5b6000600460016101605160e05260c052604060c02060c052602060c0200154136116c957600080fd5b6001600460016101605160e05260c052604060c02060c052602060c02001541415611784576000600460016101605160e05260c052604060c02060c052602060c0200155600060016101605160e05260c052604060c02060c052602060c02055600560605160018254038060405190131561174357600080fd5b809190121561175157600080fd5b815550600760605160018254038060405190131561176e57600080fd5b809190121561177c57600080fd5b8155506117f5565b600460016101605160e05260c052604060c02060c052602060c020016060516001825403806040519013156117b857600080fd5b80919012156117c657600080fd5b81555060076060516001825403806040519013156117e357600080fd5b80919012156117f157600080fd5b8155505b600060026101405160e05260c052604060c02060c052602060c02055005b638da5cb5b600051141561183957341561182c57600080fd5b60005460005260206000f3005b63c7f8a044600051141561187e576020600461014037341561185a57600080fd5b60016101405160e05260c052604060c02060c052602060c0205460005260206000f3005b636366b2f360005114156118c6576020600461014037341561189f57600080fd5b600160016101405160e05260c052604060c02060c052602060c020015460005260206000f3005b63c40509d8600051141561190e57602060046101403734156118e757600080fd5b600260016101405160e05260c052604060c02060c052602060c020015460005260206000f3005b63cb4e26ec6000511415611956576020600461014037341561192f57600080fd5b600360016101405160e05260c052604060c02060c052602060c020015460005260206000f3005b632fa39cad600051141561199e576020600461014037341561197757600080fd5b600460016101405160e05260c052604060c02060c052602060c020015460005260206000f3005b63c67790b860005114156119e357602060046101403734156119bf57600080fd5b60026101405160e05260c052604060c02060c052602060c0205460005260206000f3005b63f1849be46000511415611a2b5760206004610140373415611a0457600080fd5b600160026101405160e05260c052604060c02060c052602060c020015460005260206000f3005b63138b7ae06000511415611a735760206004610140373415611a4c57600080fd5b600260026101405160e05260c052604060c02060c052602060c020015460005260206000f3005b632ee2bcc16000511415611abb5760206004610140373415611a9457600080fd5b600360026101405160e05260c052604060c02060c052602060c020015460005260206000f3005b635036899c6000511415611bb05760206004610140373415611adc57600080fd5b600460026101405160e05260c052604060c02060c052602060c020018060c052602060c0206101a0602082540161012060006021818352015b82610120516020021115611b2857611b4a565b61012051850154610120516020028501525b8151600101808352811415611b15575b5050505050506105e06101a0516103e8818352015b6103e86105e0511115611b7157611b8d565b60006105e0516101c001535b8151600101808352811415611b5f575b505060206101805260406101a0510160206001820306601f8201039050610180f3005b63a23b48786000511415611bd6573415611bc957600080fd5b60045460005260206000f3005b633062afe46000511415611bfc573415611bef57600080fd5b60055460005260206000f3005b630350ebbe6000511415611c22573415611c1557600080fd5b60065460005260206000f3005b6349504c006000511415611c48573415611c3b57600080fd5b60075460005260206000f3005b60006000fd5b6100a7611cf5036100a76000396100a7611cf5036000f3"},"runtime_bytecode":{"bytecode":"0x600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a052634fb2e45d60005114156100dd57602060046101403734156100b457600080fd5b60043560205181106100c557600080fd5b5033600054146100d457600080fd5b61014051600055005b632244dda0600051141561019357604060046101403734156100fe57600080fd5b6000610140516020826102000101526020810190506101605160208261020001015260208101905080610200526102009050805160200180610180828460006004600a8704601201f161015057600080fd5b50506101808051602082012090506102805260026102805160e05260c052604060c02060c052602060c0205461018557600080fd5b6102805160005260206000f3005b6336739429600051141561022657604060046101403734156101b457600080fd5b6000610140516020826102000101526020810190506101605160208261020001015260208101905080610200526102009050805160200180610180828460006004600a8704601201f161020657600080fd5b5050610180805160208201209050610280526102805160005260206000f3005b6306fe1fd76000511415610291576020600461014037341561024757600080fd5b60016101405160e05260c052604060c02060c052602060c0205461026a57600080fd5b600360016101405160e05260c052604060c02060c052602060c020015460005260206000f3005b63b4d6d4c7600051141561034357602060046101403734156102b257600080fd5b6101405160c052602060c0206101605260016101605160e05260c052604060c02060c052602060c020546102e557600080fd5b6060610180526101a0600360016101605160e05260c052604060c02060c052602060c02001548152610160518160200152600460016101605160e05260c052604060c02060c052602060c0200154816040015250610180516101a0f3005b63a54fb685600051141561036957341561035c57600080fd5b60055460005260206000f3005b63c18466cb60005114156103e4576020600461014037341561038a57600080fd5b6101405160c052602060c0206101605260016101605160e05260c052604060c02060c052602060c020546103bd57600080fd5b600460016101605160e05260c052604060c02060c052602060c020015460005260206000f3005b6343212cf160005114156105e8576040600461014037341561040557600080fd5b6101405160405181111561041857600080fd5b610180526101605160405181111561042f57600080fd5b6101a05260056101a0511461044357600080fd5b60055461018051131561045557600080fd5b610260610180516004818352015b600554610260511315156105365760086102605160e05260c052604060c020546102805260016102805160e05260c052604060c02060c052602060c02054156104ee57610280516101c0606051610180516102605103806040519013156104c957600080fd5b80919012156104d757600080fd5b600581106104e457600080fd5b6020020152610531565b600a546101c06060516101805161026051038060405190131561051057600080fd5b809190121561051e57600080fd5b6005811061052b57600080fd5b60200201525b610579565b600a546101c06060516101805161026051038060405190131561055857600080fd5b809190121561056657600080fd5b6005811061057357600080fd5b60200201525b5b8151600101808352811415610463575b505060a06102a0526102c06101c06000602002015181526101c06001602002015181602001526101c06002602002015181604001526101c06003602002015181606001526101c0600460200201518160800152506102a0516102c0f3005b60001561067a575b610180526101405261016052610160516101a0526000610140516020826102400101526020810190506101a051602082610240010152602081019050806102405261024090508051602001806101c0828460006004600a8704601201f161065657600080fd5b50506101c08051602082012090506102c0526102c051600052600051610180515650005b63fa6bf4da60005114156109a7576060600461014037341561069b57600080fd5b610160516040518111156106ae57600080fd5b6101a052610180516040518111156106c557600080fd5b6101c05260056101c051146106d957600080fd5b6101405160c052602060c0206101e05260016101e05160e05260c052604060c02060c052602060c0205461070c57600080fd5b600460016101e05160e05260c052604060c02060c052602060c02001546101a051131561073857600080fd5b6102a06101a0516004818352015b600460016101e05160e05260c052604060c02060c052602060c02001546102a0511315156108f5576101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c05163c658b60e6102e0526101e0516103005260605160016102a05101806040519013156107cd57600080fd5b80919012156107db57600080fd5b610320526103205161030051600658016105f0565b610380526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a052610180526101605261014052610380516102c05260036102c05160e05260c052604060c020546103a05260026103a05160e05260c052604060c02060c052602060c02054156108ad576103a0516102006060516101a0516102a051038060405190131561088857600080fd5b809190121561089657600080fd5b600581106108a357600080fd5b60200201526108f0565b600a546102006060516101a0516102a05103806040519013156108cf57600080fd5b80919012156108dd57600080fd5b600581106108ea57600080fd5b60200201525b610938565b600a546102006060516101a0516102a051038060405190131561091757600080fd5b809190121561092557600080fd5b6005811061093257600080fd5b60200201525b5b8151600101808352811415610746575b505060a06103c0526103e0610200600060200201518152610200600160200201518160200152610200600260200201518160400152610200600360200201518160600152610200600460200201518160800152506103c0516103e0f3005b634c4aea876000511415610b0257602060046101403734156109c857600080fd5b60026101405160e05260c052604060c02060c052602060c020546109eb57600080fd5b600260026101405160e05260c052604060c02060c052602060c0200154610160526060610180526101a0600360016101605160e05260c052604060c02060c052602060c02001548152600360026101405160e05260c052604060c02060c052602060c02001548160200152610180518160400152600460026101405160e05260c052604060c02060c052602060c020018060c052602060c020610180518301602082540161012060006021818352015b82610120516020021115610aae57610ad0565b61012051850154610120516020028501525b8151600101808352811415610a9b575b5050505050506101805160206101805183015160206001820306601f820103905001016101805250610180516101a0f3005b600015610f67575b6101e0526101405261016052610180526101a0526101c052610200526000610640525b6102005160206001820306601f820103905061064051101515610b4f57610b68565b6106405161022001526106405160200161064052610b2d565b600050600160026101405160e05260c052604060c02060c052602060c020015415610b9257600080fd5b60026101405160e05260c052604060c02060c052602060c02060018155426001820155610160516002820155610180516003820155610200806004830160c052602060c020602082510161012060006021818352015b82610120516020021115610bfb57610c1d565b61012051602002850151610120518501555b8151600101808352811415610be8575b50505050505050600460016101605160e05260c052604060c02060c052602060c02001606051600182540180604051901315610c5857600080fd5b8091901215610c6657600080fd5b81555061014051600960065460e05260c052604060c020556006606051600182540180604051901315610c9857600080fd5b8091901215610ca657600080fd5b8155506007606051600182540180604051901315610cc357600080fd5b8091901215610cd157600080fd5b8155506101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c0516103e05161040051610420516104405161046051610480516104a0516104c0516104e05161050051610520516105405161056051610580516105a0516105c0516105e0516106005161062051610640516106605163c658b60e61068052610160516106a052600460016101605160e05260c052604060c02060c052602060c02001546106c0526106c0516106a051600658016105f0565b61072052610660526106405261062052610600526105e0526105c0526105a05261058052610560526105405261052052610500526104e0526104c0526104a05261048052610460526104405261042052610400526103e0526103c0526103a05261038052610360526103405261032052610300526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a05261018052610160526101405261072051610660526101405160036106605160e05260c052604060c02055610180516107a052604061076052610760516107c052610200805160200180610760516107a001828460006004600a8704601201f1610ec757600080fd5b5050610760516107a0016107408151610400818352015b61040061074051101515610ef157610f0e565b6000610740516020850101535b8151600101808352811415610ede575b5050506020610760516107a0015160206001820306601f8201039050610760510101610760526101c0517f350213af825a48db104cd58c2128537a8ece5b4f20ecb0de0680781cfd906582610760516107a0a26101e051565b63142f178c600051141561160a5760606004610140373415610f8857600080fd5b6104086044356004016101a0376103e8604435600401351115610faa57600080fd5b600a54610140511415610fbc57600080fd5b600a54610160511415610fce57600080fd5b60006101a05113610fde57600080fd5b3360005414610fec57600080fd5b6101405160c052602060c0206105e05260206106c060446336739429610620526101405161064052610160516106605261063c6000305af161102d57600080fd5b6106c05161060052600160016105e05160e05260c052604060c02060c052602060c0205414156113045760016105e05160e05260c052604060c02060c052602060c02060018155600160016105e05160e05260c052604060c02060c052602060c02001546001820155426002820155610140516003820155600460016105e05160e05260c052604060c02060c052602060c02001546004820155506101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c0516103e05161040051610420516104405161046051610480516104a0516104c0516104e05161050051610520516105405161056051610580516105a0516105c0516105e05161060051610620516106405161066051610680516106a0516106c05160a063836ee66e610c205261060051610c40526105e051610c605261016051610c805280610ca0526101a08080516020018084610c4001828460006004600a8704601201f16111ca57600080fd5b50508051820160206001820306601f820103905060200191505061014051610cc05250611100611140525b610ce06111405110156112075761122b565b6000611140515114151561121b5761114051515b60206111405103611140526111f5565b610cc051610ca051610c8051610c6051610c405160065801610b0a565b6106c0526106a05261068052610660526106405261062052610600526105e0526105c0526105a05261058052610560526105405261052052610500526104e0526104c0526104a05261048052610460526104405261042052610400526103e0526103c0526103a05261038052610360526103405261032052610300526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a052610180526101605261014052600050611608565b600160016105e05160e05260c052604060c02060c052602060c02001541561132b57600080fd5b60016105e05160e05260c052604060c02060c052602060c0206001815542600182015542600282015561014051600382015560006004820155506105e051600860045460e05260c052604060c02055600460605160018254018060405190131561139457600080fd5b80919012156113a257600080fd5b81555060056060516001825401806040519013156113bf57600080fd5b80919012156113cd57600080fd5b8155506101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c0516103e05161040051610420516104405161046051610480516104a0516104c0516104e05161050051610520516105405161056051610580516105a0516105c0516105e05161060051610620516106405161066051610680516106a0516106c05160a063836ee66e6106e05261060051610700526105e05161072052610160516107405280610760526101a0808051602001808461070001828460006004600a8704601201f16114d257600080fd5b50508051820160206001820306601f8201039050602001915050610140516107805250610bc0610c00525b6107a0610c0051101561150f57611533565b6000610c00515114151561152357610c0051515b6020610c005103610c00526114fd565b610780516107605161074051610720516107005160065801610b0a565b6106c0526106a05261068052610660526106405261062052610600526105e0526105c0526105a05261058052610560526105405261052052610500526104e0526104c0526104a05261048052610460526104405261042052610400526103e0526103c0526103a05261038052610360526103405261032052610300526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526000505b005b637cfd7cd26000511415611813576020600461014037341561162b57600080fd5b336000541461163957600080fd5b60026101405160e05260c052604060c02060c052602060c0205461165c57600080fd5b600260026101405160e05260c052604060c02060c052602060c02001546101605260016101605160e05260c052604060c02060c052602060c020546116a057600080fd5b6000600460016101605160e05260c052604060c02060c052602060c0200154136116c957600080fd5b6001600460016101605160e05260c052604060c02060c052602060c02001541415611784576000600460016101605160e05260c052604060c02060c052602060c0200155600060016101605160e05260c052604060c02060c052602060c02055600560605160018254038060405190131561174357600080fd5b809190121561175157600080fd5b815550600760605160018254038060405190131561176e57600080fd5b809190121561177c57600080fd5b8155506117f5565b600460016101605160e05260c052604060c02060c052602060c020016060516001825403806040519013156117b857600080fd5b80919012156117c657600080fd5b81555060076060516001825403806040519013156117e357600080fd5b80919012156117f157600080fd5b8155505b600060026101405160e05260c052604060c02060c052602060c02055005b638da5cb5b600051141561183957341561182c57600080fd5b60005460005260206000f3005b63c7f8a044600051141561187e576020600461014037341561185a57600080fd5b60016101405160e05260c052604060c02060c052602060c0205460005260206000f3005b636366b2f360005114156118c6576020600461014037341561189f57600080fd5b600160016101405160e05260c052604060c02060c052602060c020015460005260206000f3005b63c40509d8600051141561190e57602060046101403734156118e757600080fd5b600260016101405160e05260c052604060c02060c052602060c020015460005260206000f3005b63cb4e26ec6000511415611956576020600461014037341561192f57600080fd5b600360016101405160e05260c052604060c02060c052602060c020015460005260206000f3005b632fa39cad600051141561199e576020600461014037341561197757600080fd5b600460016101405160e05260c052604060c02060c052602060c020015460005260206000f3005b63c67790b860005114156119e357602060046101403734156119bf57600080fd5b60026101405160e05260c052604060c02060c052602060c0205460005260206000f3005b63f1849be46000511415611a2b5760206004610140373415611a0457600080fd5b600160026101405160e05260c052604060c02060c052602060c020015460005260206000f3005b63138b7ae06000511415611a735760206004610140373415611a4c57600080fd5b600260026101405160e05260c052604060c02060c052602060c020015460005260206000f3005b632ee2bcc16000511415611abb5760206004610140373415611a9457600080fd5b600360026101405160e05260c052604060c02060c052602060c020015460005260206000f3005b635036899c6000511415611bb05760206004610140373415611adc57600080fd5b600460026101405160e05260c052604060c02060c052602060c020018060c052602060c0206101a0602082540161012060006021818352015b82610120516020021115611b2857611b4a565b61012051850154610120516020028501525b8151600101808352811415611b15575b5050505050506105e06101a0516103e8818352015b6103e86105e0511115611b7157611b8d565b60006105e0516101c001535b8151600101808352811415611b5f575b505060206101805260406101a0510160206001820306601f8201039050610180f3005b63a23b48786000511415611bd6573415611bc957600080fd5b60045460005260206000f3005b633062afe46000511415611bfc573415611bef57600080fd5b60055460005260206000f3005b630350ebbe6000511415611c22573415611c1557600080fd5b60065460005260206000f3005b6349504c006000511415611c48573415611c3b57600080fd5b60075460005260206000f3005b60006000fd"}}},"deployments":{"blockchain://5c4f59274a0b01d050ac6f5c1e9c11b7975c0fdc82f8daa75925cd97b99cbacf/block/6fd5ae3341d910d1b9c3d069090eb578d8d7ad6eb6f5f90f8c706663a6863706":{"registry":{"address":"0xf2e246bb76df876cef8b38ae84130f4f55de395b","block":"0x6fd5ae3341d910d1b9c3d069090eb578d8d7ad6eb6f5f90f8c706663a6863706","contract_type":"registry","transaction":"0x2fe41fd7791b7bc884deef0c1b5ec99bc922fab955c543480ed628c59e4f3409"}}},"manifest_version":"2","meta":{"authors":["Nick Gheorghita"],"description":"[WARNING: This package is unaudited and unmaintained. It should not be used for production use cases unless the contents are independently verified.] Vyper reference implementations of ERC1319 (EthPM Package Registry). registry.vy: Does *not* allow for releases to be deleted after they're published. Package created Feb 12, 2019.","keywords":["ethpm","ERC1319","registry","vyper","unaudited package"],"license":"MIT","links":{"website":"https://github.com/ethereum/EIPs/issues/1319"}},"package_name":"vyper-registry","sources":{"./registry.vy":"# Vyper Reference Implementation of ERC1319\n\n# Structs\nstruct Package:\n\texists: bool\n\tcreatedAt: timestamp\n\tupdatedAt: timestamp\n\tname: bytes32\n\treleaseCount: int128\n\nstruct Release:\n\texists: bool\n\tcreatedAt: timestamp\n\tpackageId: bytes32\n\tversion: bytes32\n\turi: bytes[1000]\n\n\t\n# Events\nVersionRelease: event({_package: indexed(bytes32), _version: bytes32, _uri: bytes[1000]})\n\nowner: public(address)\n\n# Package Data: (package_id => value)\npackages: public(map(bytes32, Package))\n\n# Release Data: (release_id => value)\nreleases: public(map(bytes32, Release))\n\n\n# package_id#release_count => release_id\npackageReleaseIndex: map(bytes32, bytes32)\n# Total number of packages in registry\npackageCount: public(int128)\n# Total number of releases in registry\nreleaseCount: public(int128)\n# Total package number (int128) => package_id (bytes32)\npackageIds: map(int128, bytes32)\n# Total release number (int128) => release_id (bytes32)\nreleaseIds: map(int128, bytes32)\n\nEMPTY_BYTES: bytes32\n\n\n@public\ndef __init__():\n self.owner = msg.sender\n\n\n@public\ndef transferOwner(newOwner: address):\n assert self.owner == msg.sender\n self.owner = newOwner\n\n\n@public\ndef getReleaseId(packageName: bytes32, version: bytes32) -> bytes32:\n releaseConcat: bytes[64] = concat(packageName, version)\n releaseId: bytes32 = sha3(releaseConcat)\n assert self.releases[releaseId].exists\n return releaseId\n\n\n@public\ndef generateReleaseId(packageName: bytes32, version: bytes32) -> bytes32:\n releaseConcat: bytes[64] = concat(packageName, version)\n releaseId: bytes32 = sha3(releaseConcat)\n return releaseId\n\n\n@public\ndef getPackageName(packageId: bytes32) -> bytes32:\n assert self.packages[packageId].exists\n return self.packages[packageId].name\n\n\n@public\ndef getPackageData(packageName: bytes32) -> (bytes32, bytes32, int128):\n packageId: bytes32 = sha3(packageName)\n assert self.packages[packageId].exists\n return (\n self.packages[packageId].name,\n packageId,\n self.packages[packageId].releaseCount,\n )\n\n\n@public\ndef numPackageIds() -> int128:\n return self.packageCount\n\n\n@public\ndef numReleaseIds(packageName: bytes32) -> int128:\n packageId: bytes32 = sha3(packageName)\n assert self.packages[packageId].exists\n return self.packages[packageId].releaseCount\n\n\n@public\ndef getAllPackageIds(\n offset: uint256, length: uint256\n) -> (bytes32, bytes32, bytes32, bytes32, bytes32):\n offset_int: int128 = convert(offset, int128)\n length_int: int128 = convert(length, int128)\n assert length_int == 5\n assert offset_int <= self.packageCount\n ids: bytes32[5]\n for idx in range(offset_int, offset_int + 4):\n if idx <= self.packageCount:\n packageId: bytes32 = self.packageIds[idx]\n ids[(idx - offset_int)] = packageId\n else:\n ids[(idx - offset_int)] = self.EMPTY_BYTES\n return (ids[0], ids[1], ids[2], ids[3], ids[4])\n\n\n@private\ndef generatePackageReleaseId(packageId: bytes32, count: int128) -> bytes32:\n countBytes: bytes32 = convert(count, bytes32)\n packageReleaseTag: bytes[64] = concat(packageId, countBytes)\n packageReleaseId: bytes32 = sha3(packageReleaseTag)\n return packageReleaseId\n\n\n@public\ndef getAllReleaseIds(\n packageName: bytes32, offset: uint256, length: uint256\n) -> (bytes32, bytes32, bytes32, bytes32, bytes32):\n offset_int: int128 = convert(offset, int128)\n length_int: int128 = convert(length, int128)\n assert length_int == 5\n packageId: bytes32 = sha3(packageName)\n assert self.packages[packageId].exists\n assert offset_int <= self.packages[packageId].releaseCount\n ids: bytes32[5]\n for idx in range(offset_int, offset_int + 4):\n if idx <= self.packages[packageId].releaseCount:\n packageReleaseId: bytes32 = self.generatePackageReleaseId(\n packageId, (idx + 1)\n )\n releaseId: bytes32 = self.packageReleaseIndex[packageReleaseId]\n ids[(idx - offset_int)] = releaseId\n else:\n ids[(idx - offset_int)] = self.EMPTY_BYTES\n return (ids[0], ids[1], ids[2], ids[3], ids[4])\n\n\n@public\ndef getReleaseData(releaseId: bytes32) -> (bytes32, bytes32, bytes[1000]):\n assert self.releases[releaseId].exists\n packageId: bytes32 = self.releases[releaseId].packageId\n return (\n self.packages[packageId].name,\n self.releases[releaseId].version,\n self.releases[releaseId].uri,\n )\n\n\n@private\ndef cutRelease(\n releaseId: bytes32,\n packageId: bytes32,\n version: bytes32,\n uri: bytes[1000],\n name: bytes32,\n):\n self.releases[releaseId] = Release({\n exists: True,\n createdAt: block.timestamp,\n packageId: packageId,\n version: version,\n uri: uri,\n })\n self.packages[packageId].releaseCount += 1\n self.releaseIds[self.releaseCount] = releaseId\n self.releaseCount += 1\n packageReleaseId: bytes32 = self.generatePackageReleaseId(\n packageId, self.packages[packageId].releaseCount\n )\n self.packageReleaseIndex[packageReleaseId] = releaseId\n log.VersionRelease(name, version, uri)\n\n\n@public\ndef release(packageName: bytes32, version: bytes32, manifestURI: bytes[1000]):\n assert packageName != self.EMPTY_BYTES\n assert version != self.EMPTY_BYTES\n assert len(manifestURI) > 0\n assert self.owner == msg.sender\n\n\n packageId: bytes32 = sha3(packageName)\n releaseId: bytes32 = self.generateReleaseId(packageName, version)\n\n if self.packages[packageId].exists == True:\n self.packages[packageId] = Package({\n exists: True,\n createdAt: self.packages[packageId].createdAt,\n updatedAt: block.timestamp,\n name: packageName,\n releaseCount: self.packages[packageId].releaseCount,\n })\n assert self.releases[releaseId].exists == False\n self.cutRelease(releaseId, packageId, version, manifestURI, packageName)\n else:\n self.packages[packageId] = Package({\n exists: True,\n createdAt: block.timestamp,\n updatedAt: block.timestamp,\n name: packageName,\n releaseCount: 0,\n })\n self.packageIds[self.packageCount] = packageId\n self.packageCount += 1\n self.cutRelease(releaseId, packageId, version, manifestURI, packageName)","./registry_with_delete.vy":"# Vyper Reference Implementation of ERC1319 - with delete\n# Once all the releaseIds of a package are deleted - package namespace is permanently unavailable\n\n# Structs\nstruct Package:\n\texists: bool\n\tcreatedAt: timestamp\n\tupdatedAt: timestamp\n\tname: bytes32\n\treleaseCount: int128\n\nstruct Release:\n\texists: bool\n\tcreatedAt: timestamp\n\tpackageId: bytes32\n\tversion: bytes32\n\turi: bytes[1000]\n\n# Events\nVersionRelease: event({_package: indexed(bytes32), _version: bytes32, _uri: bytes[1000]})\n\nowner: public(address)\n\n# Package Data: (package_id => value)\npackages: public(map(bytes32, Package))\n\n# Release Data: (release_id => value)\nreleases: public(map(bytes32, Release))\n\n# package_id#release_count => release_id\npackageReleaseIndex: map(bytes32, bytes32)\n# Total number of packages in registry\ntotalPackageCount: public(int128)\nactivePackageCount: public(int128)\n# Total number of releases in registry\ntotalReleaseCount: public(int128)\nactiveReleaseCount: public(int128)\n# Total package number (int128) => package_id (bytes32)\npackageIds: map(int128, bytes32)\n# Total release number (int128) => release_id (bytes32)\nreleaseIds: map(int128, bytes32)\n\nEMPTY_BYTES: bytes32\n\n\n@public\ndef __init__():\n self.owner = msg.sender\n\n\n@public\ndef transferOwner(newOwner: address):\n assert self.owner == msg.sender\n self.owner = newOwner\n\n\n@public\ndef getReleaseId(packageName: bytes32, version: bytes32) -> bytes32:\n releaseConcat: bytes[64] = concat(packageName, version)\n releaseId: bytes32 = sha3(releaseConcat)\n assert self.releases[releaseId].exists\n return releaseId\n\n\n@public\ndef generateReleaseId(packageName: bytes32, version: bytes32) -> bytes32:\n releaseConcat: bytes[64] = concat(packageName, version)\n releaseId: bytes32 = sha3(releaseConcat)\n return releaseId\n\n\n@public\ndef getPackageName(packageId: bytes32) -> bytes32:\n assert self.packages[packageId].exists\n return self.packages[packageId].name\n\n\n@public\ndef getPackageData(packageName: bytes32) -> (bytes32, bytes32, int128):\n packageId: bytes32 = sha3(packageName)\n assert self.packages[packageId].exists\n return (\n self.packages[packageId].name,\n packageId,\n self.packages[packageId].releaseCount,\n )\n\n\n@public\ndef numPackageIds() -> int128:\n return self.activePackageCount\n\n\n@public\ndef numReleaseIds(packageName: bytes32) -> int128:\n packageId: bytes32 = sha3(packageName)\n assert self.packages[packageId].exists\n return self.packages[packageId].releaseCount\n\n\n@public\ndef getAllPackageIds(\n offset: uint256, length: uint256\n) -> (bytes32, bytes32, bytes32, bytes32, bytes32):\n offset_int: int128 = convert(offset, int128)\n length_int: int128 = convert(length, int128)\n assert length_int == 5\n assert offset_int <= self.activePackageCount\n ids: bytes32[5]\n for idx in range(offset_int, offset_int + 4):\n if idx <= self.activePackageCount:\n packageId: bytes32 = self.packageIds[idx]\n if self.packages[packageId].exists:\n ids[(idx - offset_int)] = packageId\n else:\n ids[(idx - offset_int)] = self.EMPTY_BYTES\n else:\n ids[(idx - offset_int)] = self.EMPTY_BYTES\n return (ids[0], ids[1], ids[2], ids[3], ids[4])\n\n\n@private\ndef generatePackageReleaseId(packageId: bytes32, count: int128) -> bytes32:\n countBytes: bytes32 = convert(count, bytes32)\n packageReleaseTag: bytes[64] = concat(packageId, countBytes)\n packageReleaseId: bytes32 = sha3(packageReleaseTag)\n return packageReleaseId\n\n\n@public\ndef getAllReleaseIds(\n packageName: bytes32, offset: uint256, length: uint256\n) -> (bytes32, bytes32, bytes32, bytes32, bytes32):\n offset_int: int128 = convert(offset, int128)\n length_int: int128 = convert(length, int128)\n assert length_int == 5\n packageId: bytes32 = sha3(packageName)\n assert self.packages[packageId].exists\n assert offset_int <= self.packages[packageId].releaseCount\n ids: bytes32[5]\n for idx in range(offset_int, offset_int + 4):\n if idx <= self.packages[packageId].releaseCount:\n packageReleaseId: bytes32 = self.generatePackageReleaseId(\n packageId, (idx + 1)\n )\n releaseId: bytes32 = self.packageReleaseIndex[packageReleaseId]\n if self.releases[releaseId].exists:\n ids[(idx - offset_int)] = releaseId\n else:\n ids[(idx - offset_int)] = self.EMPTY_BYTES\n else:\n ids[(idx - offset_int)] = self.EMPTY_BYTES\n return (ids[0], ids[1], ids[2], ids[3], ids[4])\n\n\n@public\ndef getReleaseData(releaseId: bytes32) -> (bytes32, bytes32, bytes[1000]):\n assert self.releases[releaseId].exists\n packageId: bytes32 = self.releases[releaseId].packageId\n return (\n self.packages[packageId].name,\n self.releases[releaseId].version,\n self.releases[releaseId].uri,\n )\n\n\n@private\ndef cutRelease(\n releaseId: bytes32,\n packageId: bytes32,\n version: bytes32,\n uri: bytes[1000],\n name: bytes32,\n):\n assert self.releases[releaseId].createdAt == 0\n self.releases[releaseId] = Release({\n exists: True,\n createdAt: block.timestamp,\n packageId: packageId,\n version: version,\n uri: uri,\n })\n self.packages[packageId].releaseCount += 1\n self.releaseIds[self.totalReleaseCount] = releaseId\n self.totalReleaseCount += 1\n self.activeReleaseCount += 1\n packageReleaseId: bytes32 = self.generatePackageReleaseId(\n packageId, self.packages[packageId].releaseCount\n )\n self.packageReleaseIndex[packageReleaseId] = releaseId\n log.VersionRelease(name, version, uri)\n\n\n@public\ndef release(packageName: bytes32, version: bytes32, manifestURI: bytes[1000]):\n assert packageName != self.EMPTY_BYTES\n assert version != self.EMPTY_BYTES\n assert len(manifestURI) > 0\n assert self.owner == msg.sender\n\n\n packageId: bytes32 = sha3(packageName)\n releaseId: bytes32 = self.generateReleaseId(packageName, version)\n\n if self.packages[packageId].exists == True:\n self.packages[packageId] = Package({\n exists: True,\n createdAt: self.packages[packageId].createdAt,\n updatedAt: block.timestamp,\n name: packageName,\n releaseCount: self.packages[packageId].releaseCount,\n })\n self.cutRelease(releaseId, packageId, version, manifestURI, packageName)\n else:\n assert self.packages[packageId].createdAt == 0\n self.packages[packageId] = Package({\n exists: True,\n createdAt: block.timestamp,\n updatedAt: block.timestamp,\n name: packageName,\n releaseCount: 0,\n })\n self.packageIds[self.totalPackageCount] = packageId\n self.totalPackageCount += 1\n self.activePackageCount += 1\n self.cutRelease(releaseId, packageId, version, manifestURI, packageName)\n\t\n\n@public\ndef deleteReleaseId(releaseId: bytes32):\n assert self.owner == msg.sender\n assert self.releases[releaseId].exists\n packageId: bytes32 = self.releases[releaseId].packageId\n assert self.packages[packageId].exists\n assert self.packages[packageId].releaseCount > 0\n if self.packages[packageId].releaseCount == 1:\n self.packages[packageId].releaseCount = 0\n self.packages[packageId].exists = False\n self.activePackageCount -= 1\n self.activeReleaseCount -= 1\n else:\n self.packages[packageId].releaseCount -= 1\n self.activeReleaseCount -= 1\n self.releases[releaseId].exists = False"},"version":"0.1.0"}