@etherisc/gif-next 0.0.2-96853ac-143 → 0.0.2-9a053fa-993

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 (306) hide show
  1. package/README.md +76 -0
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
  3. package/artifacts/contracts/components/{Component.sol/Component.json → BaseComponent.sol/BaseComponent.json} +26 -57
  4. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +4 -0
  5. package/artifacts/contracts/{instance/component/IComponent.sol/IComponentContract.json → components/IBaseComponent.sol/IBaseComponent.json} +26 -57
  6. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +356 -0
  8. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/{IPool.sol/IPoolComponent.json → IProductComponent.sol/IProductComponent.json} +89 -65
  10. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  11. package/artifacts/contracts/components/Pool.sol/Pool.json +134 -75
  12. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  13. package/artifacts/contracts/components/Product.sol/Product.json +72 -113
  14. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  15. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +2 -2
  16. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  17. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +2 -2
  18. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +2 -2
  20. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +2 -2
  22. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  30. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  34. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  36. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +2 -2
  38. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  39. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +2 -2
  40. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +790 -247
  42. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +4 -0
  43. package/artifacts/contracts/instance/{component/IComponent.sol → IInstanceLinked.sol}/IInstanceLinked.json +1 -1
  44. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.dbg.json +4 -0
  45. package/artifacts/contracts/instance/{access/IAccess.sol/IAccessComponentTypeRoles.json → IServiceLinked.sol/IServiceLinked.json} +14 -14
  46. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  47. package/artifacts/contracts/instance/Instance.sol/Instance.json +926 -363
  48. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +4 -0
  49. package/artifacts/contracts/instance/{component/ComponentModule.sol/ComponentModule.json → InstanceBase.sol/InstanceBase.json} +143 -129
  50. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +4 -0
  51. package/artifacts/contracts/instance/{access → module/access}/Access.sol/AccessModule.json +85 -152
  52. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +4 -0
  53. package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccess.json +1 -1
  54. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +4 -0
  55. package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccessModule.json +96 -99
  56. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +4 -0
  57. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +276 -0
  58. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +4 -0
  59. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.json +10 -0
  60. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +4 -0
  61. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +276 -0
  62. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +4 -0
  63. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +188 -0
  64. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +4 -0
  65. package/artifacts/contracts/instance/{component → module/component}/IComponent.sol/IComponent.json +1 -1
  66. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +4 -0
  67. package/artifacts/contracts/instance/{component → module/component}/IComponent.sol/IComponentModule.json +33 -62
  68. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  69. package/artifacts/contracts/instance/{lifecycle → module/lifecycle}/ILifecycle.sol/ILifecycle.json +1 -1
  70. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +4 -0
  71. package/artifacts/contracts/instance/{lifecycle → module/lifecycle}/ILifecycle.sol/ILifecycleModule.json +1 -1
  72. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +4 -0
  73. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.json +221 -0
  74. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +4 -0
  75. package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicy.json +1 -1
  76. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +4 -0
  77. package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicyModule.json +132 -125
  78. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +4 -0
  79. package/artifacts/contracts/instance/{policy → module/policy}/PolicyModule.sol/PolicyModule.json +132 -125
  80. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +4 -0
  81. package/artifacts/contracts/instance/{pool → module/pool}/IPoolModule.sol/IPool.json +1 -1
  82. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +4 -0
  83. package/artifacts/contracts/instance/{pool → module/pool}/IPoolModule.sol/IPoolModule.json +67 -47
  84. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +4 -0
  85. package/artifacts/contracts/instance/{pool → module/pool}/PoolModule.sol/PoolModule.json +51 -57
  86. package/artifacts/contracts/instance/module/product/IProductModule.sol/IProductModule.dbg.json +4 -0
  87. package/artifacts/contracts/instance/module/product/IProductModule.sol/IProductModule.json +10 -0
  88. package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.dbg.json +4 -0
  89. package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.json +10 -0
  90. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +4 -0
  91. package/artifacts/contracts/instance/{treasury → module/treasury}/ITreasury.sol/ITreasury.json +1 -1
  92. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +4 -0
  93. package/artifacts/contracts/instance/{treasury → module/treasury}/ITreasury.sol/ITreasuryModule.json +100 -52
  94. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  95. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +76 -0
  96. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +4 -0
  97. package/artifacts/contracts/instance/{treasury → module/treasury}/TreasuryModule.sol/TreasuryModule.json +100 -52
  98. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +519 -0
  100. package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
  101. package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.json +300 -0
  102. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +364 -0
  104. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  105. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +376 -0
  106. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  107. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +477 -0
  108. package/artifacts/contracts/instance/service/IService.sol/IService.dbg.json +4 -0
  109. package/artifacts/contracts/instance/service/IService.sol/IService.json +300 -0
  110. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  111. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +499 -0
  112. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  113. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +685 -0
  114. package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.dbg.json +4 -0
  115. package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.json +300 -0
  116. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  117. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +65 -2
  118. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
  119. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  120. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +147 -30
  121. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  122. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +24 -0
  123. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  124. package/artifacts/contracts/registry/Registry.sol/Registry.json +241 -25
  125. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  126. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +35 -0
  127. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +4 -0
  128. package/artifacts/contracts/{registry/IRegistry.sol → shared/IOwnable.sol}/IOwnable.json +1 -1
  129. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  130. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegisterable.sol}/IRegisterable.json +16 -61
  131. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  132. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +164 -0
  133. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  134. package/artifacts/contracts/{registry/Registry.sol → shared/Registerable.sol}/Registerable.json +16 -61
  135. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  136. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +164 -0
  137. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  138. package/artifacts/contracts/test/TestFee.sol/TestFee.json +95 -0
  139. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +4 -0
  140. package/artifacts/contracts/test/TestPool.sol/TestPool.json +387 -0
  141. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +4 -0
  142. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +393 -0
  143. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  144. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +137 -0
  145. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  146. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +82 -0
  147. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  148. package/artifacts/contracts/test/TestService.sol/TestService.json +407 -0
  149. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  150. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +338 -0
  151. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  152. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +222 -0
  153. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  154. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +230 -0
  155. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  156. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  157. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  158. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  159. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  160. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
  161. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  162. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  163. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  164. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +10 -0
  165. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  167. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  168. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  169. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  170. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +64 -2
  171. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +62 -88
  173. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  174. package/artifacts/contracts/types/Version.sol/VersionLib.json +78 -0
  175. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  176. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +30 -0
  177. package/contracts/components/BaseComponent.sol +89 -0
  178. package/contracts/components/IBaseComponent.sol +19 -0
  179. package/contracts/components/IPoolComponent.sol +57 -0
  180. package/contracts/components/{IProduct.sol → IProductComponent.sol} +9 -6
  181. package/contracts/components/Pool.sol +140 -18
  182. package/contracts/components/Product.sol +53 -25
  183. package/contracts/instance/IInstance.sol +35 -10
  184. package/contracts/instance/IInstanceLinked.sol +8 -0
  185. package/contracts/instance/IServiceLinked.sol +12 -0
  186. package/contracts/instance/Instance.sol +40 -50
  187. package/contracts/instance/InstanceBase.sol +74 -0
  188. package/contracts/instance/module/access/Access.sol +149 -0
  189. package/contracts/instance/module/access/IAccess.sol +53 -0
  190. package/contracts/instance/module/bundle/BundleModule.sol +228 -0
  191. package/contracts/instance/module/bundle/IBundle.sol +53 -0
  192. package/contracts/instance/module/component/ComponentModule.sol +104 -0
  193. package/contracts/instance/module/component/IComponent.sol +53 -0
  194. package/contracts/instance/{lifecycle → module/lifecycle}/ILifecycle.sol +3 -3
  195. package/contracts/instance/{lifecycle → module/lifecycle}/LifecycleModule.sol +5 -4
  196. package/contracts/instance/module/policy/IPolicy.sol +60 -0
  197. package/contracts/instance/module/policy/PolicyModule.sol +84 -0
  198. package/contracts/instance/module/pool/IPoolModule.sol +41 -0
  199. package/contracts/instance/module/pool/PoolModule.sol +87 -0
  200. package/contracts/instance/module/product/IProductModule.sol +6 -0
  201. package/contracts/instance/module/product/ProductModule.sol +8 -0
  202. package/contracts/instance/{treasury → module/treasury}/ITreasury.sol +25 -12
  203. package/contracts/instance/module/treasury/TokenHandler.sol +48 -0
  204. package/contracts/instance/{treasury → module/treasury}/TreasuryModule.sol +33 -53
  205. package/contracts/instance/service/ComponentOwnerService.sol +174 -0
  206. package/contracts/instance/service/ComponentServiceBase.sol +41 -0
  207. package/contracts/instance/service/IComponentOwnerService.sol +22 -0
  208. package/contracts/instance/service/IPoolService.sol +30 -0
  209. package/contracts/instance/service/IProductService.sol +58 -0
  210. package/contracts/instance/service/IService.sol +15 -0
  211. package/contracts/instance/service/PoolService.sol +98 -0
  212. package/contracts/instance/service/ProductService.sol +358 -0
  213. package/contracts/instance/service/ServiceBase.sol +39 -0
  214. package/contracts/registry/ChainNft.sol +61 -37
  215. package/contracts/registry/IRegistry.sol +24 -34
  216. package/contracts/registry/IRegistryLinked.sol +8 -0
  217. package/contracts/registry/Registry.sol +284 -85
  218. package/contracts/shared/ERC165.sol +21 -0
  219. package/contracts/shared/IOwnable.sol +6 -0
  220. package/contracts/shared/IRegisterable.sol +24 -0
  221. package/contracts/shared/IVersionable.sol +52 -0
  222. package/contracts/shared/Registerable.sol +86 -0
  223. package/contracts/shared/Versionable.sol +92 -0
  224. package/contracts/test/TestFee.sol +25 -0
  225. package/contracts/test/TestPool.sol +22 -0
  226. package/contracts/test/TestProduct.sol +44 -0
  227. package/contracts/test/TestRegisterable.sol +19 -0
  228. package/contracts/test/TestRoleId.sol +14 -0
  229. package/contracts/test/TestService.sol +35 -0
  230. package/contracts/test/TestToken.sol +26 -0
  231. package/contracts/test/TestVersion.sol +47 -0
  232. package/contracts/test/TestVersionable.sol +20 -0
  233. package/contracts/types/AddressSet.sol +58 -0
  234. package/contracts/types/NftId.sol +7 -1
  235. package/contracts/types/NftIdSet.sol +60 -0
  236. package/contracts/types/ObjectType.sol +22 -14
  237. package/contracts/types/RoleId.sol +36 -0
  238. package/contracts/types/StateId.sol +6 -2
  239. package/contracts/types/Timestamp.sol +22 -1
  240. package/contracts/types/UFixed.sol +25 -29
  241. package/contracts/types/Version.sol +91 -0
  242. package/package.json +9 -6
  243. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  244. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  245. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  246. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  247. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  248. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -74
  249. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  250. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  251. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  252. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  253. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  254. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  255. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  256. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  257. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -202
  258. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  259. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  260. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  261. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  262. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -141
  263. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  264. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  265. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  266. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  267. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  268. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  269. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  270. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  271. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  272. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  273. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  274. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  275. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  276. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  277. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -127
  278. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  279. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  280. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  281. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -196
  282. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  283. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  284. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  285. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.json +0 -45
  286. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  287. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  288. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  289. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  290. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  291. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  292. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  293. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  294. package/contracts/components/Component.sol +0 -77
  295. package/contracts/components/IPool.sol +0 -15
  296. package/contracts/instance/access/Access.sol +0 -165
  297. package/contracts/instance/access/IAccess.sol +0 -63
  298. package/contracts/instance/component/ComponentModule.sol +0 -274
  299. package/contracts/instance/component/IComponent.sol +0 -74
  300. package/contracts/instance/policy/IPolicy.sol +0 -50
  301. package/contracts/instance/policy/PolicyModule.sol +0 -114
  302. package/contracts/instance/pool/IPoolModule.sol +0 -23
  303. package/contracts/instance/pool/PoolModule.sol +0 -81
  304. package/contracts/instance/product/IProductService.sol +0 -36
  305. package/contracts/instance/product/ProductService.sol +0 -136
  306. package/contracts/instance/treasury/TokenHandler.sol +0 -24
@@ -16,6 +16,96 @@
16
16
  "stateMutability": "view",
17
17
  "type": "function"
18
18
  },
19
+ {
20
+ "inputs": [],
21
+ "name": "getChainNft",
22
+ "outputs": [
23
+ {
24
+ "internalType": "contract IChainNft",
25
+ "name": "",
26
+ "type": "address"
27
+ }
28
+ ],
29
+ "stateMutability": "view",
30
+ "type": "function"
31
+ },
32
+ {
33
+ "inputs": [],
34
+ "name": "getData",
35
+ "outputs": [
36
+ {
37
+ "internalType": "bytes",
38
+ "name": "data",
39
+ "type": "bytes"
40
+ }
41
+ ],
42
+ "stateMutability": "pure",
43
+ "type": "function"
44
+ },
45
+ {
46
+ "inputs": [
47
+ {
48
+ "internalType": "NftId",
49
+ "name": "nftId",
50
+ "type": "uint96"
51
+ }
52
+ ],
53
+ "name": "getName",
54
+ "outputs": [
55
+ {
56
+ "internalType": "string",
57
+ "name": "name",
58
+ "type": "string"
59
+ }
60
+ ],
61
+ "stateMutability": "view",
62
+ "type": "function"
63
+ },
64
+ {
65
+ "inputs": [],
66
+ "name": "getNftId",
67
+ "outputs": [
68
+ {
69
+ "internalType": "NftId",
70
+ "name": "nftId",
71
+ "type": "uint96"
72
+ }
73
+ ],
74
+ "stateMutability": "view",
75
+ "type": "function"
76
+ },
77
+ {
78
+ "inputs": [
79
+ {
80
+ "internalType": "address",
81
+ "name": "object",
82
+ "type": "address"
83
+ }
84
+ ],
85
+ "name": "getNftId",
86
+ "outputs": [
87
+ {
88
+ "internalType": "NftId",
89
+ "name": "id",
90
+ "type": "uint96"
91
+ }
92
+ ],
93
+ "stateMutability": "view",
94
+ "type": "function"
95
+ },
96
+ {
97
+ "inputs": [],
98
+ "name": "getObjectCount",
99
+ "outputs": [
100
+ {
101
+ "internalType": "uint256",
102
+ "name": "",
103
+ "type": "uint256"
104
+ }
105
+ ],
106
+ "stateMutability": "view",
107
+ "type": "function"
108
+ },
19
109
  {
20
110
  "inputs": [
21
111
  {
@@ -24,7 +114,7 @@
24
114
  "type": "uint96"
25
115
  }
26
116
  ],
27
- "name": "getInfo",
117
+ "name": "getObjectInfo",
28
118
  "outputs": [
29
119
  {
30
120
  "components": [
@@ -52,9 +142,14 @@
52
142
  "internalType": "address",
53
143
  "name": "initialOwner",
54
144
  "type": "address"
145
+ },
146
+ {
147
+ "internalType": "bytes",
148
+ "name": "data",
149
+ "type": "bytes"
55
150
  }
56
151
  ],
57
- "internalType": "struct IRegistry.RegistryInfo",
152
+ "internalType": "struct IRegistry.ObjectInfo",
58
153
  "name": "info",
59
154
  "type": "tuple"
60
155
  }
@@ -64,11 +159,11 @@
64
159
  },
65
160
  {
66
161
  "inputs": [],
67
- "name": "getNftAddress",
162
+ "name": "getOwner",
68
163
  "outputs": [
69
164
  {
70
165
  "internalType": "address",
71
- "name": "nft",
166
+ "name": "owner",
72
167
  "type": "address"
73
168
  }
74
169
  ],
@@ -77,17 +172,30 @@
77
172
  },
78
173
  {
79
174
  "inputs": [
175
+ {
176
+ "internalType": "NftId",
177
+ "name": "nftId",
178
+ "type": "uint96"
179
+ }
180
+ ],
181
+ "name": "getOwner",
182
+ "outputs": [
80
183
  {
81
184
  "internalType": "address",
82
- "name": "object",
185
+ "name": "",
83
186
  "type": "address"
84
187
  }
85
188
  ],
86
- "name": "getNftId",
189
+ "stateMutability": "view",
190
+ "type": "function"
191
+ },
192
+ {
193
+ "inputs": [],
194
+ "name": "getParentNftId",
87
195
  "outputs": [
88
196
  {
89
197
  "internalType": "NftId",
90
- "name": "id",
198
+ "name": "nftId",
91
199
  "type": "uint96"
92
200
  }
93
201
  ],
@@ -96,12 +204,25 @@
96
204
  },
97
205
  {
98
206
  "inputs": [],
99
- "name": "getObjectCount",
207
+ "name": "getProtocolOwner",
100
208
  "outputs": [
101
209
  {
102
- "internalType": "uint256",
210
+ "internalType": "address",
103
211
  "name": "",
104
- "type": "uint256"
212
+ "type": "address"
213
+ }
214
+ ],
215
+ "stateMutability": "view",
216
+ "type": "function"
217
+ },
218
+ {
219
+ "inputs": [],
220
+ "name": "getRegistry",
221
+ "outputs": [
222
+ {
223
+ "internalType": "contract IRegistry",
224
+ "name": "registry",
225
+ "type": "address"
105
226
  }
106
227
  ],
107
228
  "stateMutability": "view",
@@ -110,28 +231,51 @@
110
231
  {
111
232
  "inputs": [
112
233
  {
113
- "internalType": "NftId",
114
- "name": "nftId",
115
- "type": "uint96"
234
+ "internalType": "string",
235
+ "name": "serviceName",
236
+ "type": "string"
237
+ },
238
+ {
239
+ "internalType": "VersionPart",
240
+ "name": "majorVersion",
241
+ "type": "uint8"
116
242
  }
117
243
  ],
118
- "name": "getOwner",
244
+ "name": "getServiceAddress",
119
245
  "outputs": [
120
246
  {
121
247
  "internalType": "address",
122
- "name": "",
248
+ "name": "serviceAddress",
123
249
  "type": "address"
124
250
  }
125
251
  ],
126
252
  "stateMutability": "view",
127
253
  "type": "function"
128
254
  },
255
+ {
256
+ "inputs": [],
257
+ "name": "getType",
258
+ "outputs": [
259
+ {
260
+ "internalType": "ObjectType",
261
+ "name": "objectType",
262
+ "type": "uint8"
263
+ }
264
+ ],
265
+ "stateMutability": "pure",
266
+ "type": "function"
267
+ },
129
268
  {
130
269
  "inputs": [
131
270
  {
132
271
  "internalType": "address",
133
272
  "name": "chainNft",
134
273
  "type": "address"
274
+ },
275
+ {
276
+ "internalType": "address",
277
+ "name": "protocolOwner",
278
+ "type": "address"
135
279
  }
136
280
  ],
137
281
  "name": "initialize",
@@ -158,6 +302,38 @@
158
302
  "stateMutability": "view",
159
303
  "type": "function"
160
304
  },
305
+ {
306
+ "inputs": [
307
+ {
308
+ "internalType": "NftId",
309
+ "name": "nftId",
310
+ "type": "uint96"
311
+ }
312
+ ],
313
+ "name": "isRegistered",
314
+ "outputs": [
315
+ {
316
+ "internalType": "bool",
317
+ "name": "",
318
+ "type": "bool"
319
+ }
320
+ ],
321
+ "stateMutability": "view",
322
+ "type": "function"
323
+ },
324
+ {
325
+ "inputs": [],
326
+ "name": "register",
327
+ "outputs": [
328
+ {
329
+ "internalType": "NftId",
330
+ "name": "nftId",
331
+ "type": "uint96"
332
+ }
333
+ ],
334
+ "stateMutability": "pure",
335
+ "type": "function"
336
+ },
161
337
  {
162
338
  "inputs": [
163
339
  {
@@ -193,6 +369,11 @@
193
369
  "internalType": "address",
194
370
  "name": "initialOwner",
195
371
  "type": "address"
372
+ },
373
+ {
374
+ "internalType": "bytes",
375
+ "name": "data",
376
+ "type": "bytes"
196
377
  }
197
378
  ],
198
379
  "name": "registerObjectForInstance",
@@ -205,28 +386,55 @@
205
386
  ],
206
387
  "stateMutability": "nonpayable",
207
388
  "type": "function"
389
+ },
390
+ {
391
+ "inputs": [
392
+ {
393
+ "internalType": "bytes4",
394
+ "name": "interfaceId",
395
+ "type": "bytes4"
396
+ }
397
+ ],
398
+ "name": "supportsInterface",
399
+ "outputs": [
400
+ {
401
+ "internalType": "bool",
402
+ "name": "",
403
+ "type": "bool"
404
+ }
405
+ ],
406
+ "stateMutability": "pure",
407
+ "type": "function"
208
408
  }
209
409
  ],
210
- "bytecode": "0x608060405234801561001057600080fd5b50611002806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063be9a71bd11610066578063be9a71bd14610229578063c3c5a5471461024e578063c4d66de814610271578063d272ac1e14610286578063df33330b146102b857600080fd5b80631a848cfb146100a35780631d1b0cac146100be5780633fe9300e146100e95780634420e4861461010c5780634c3371cd1461011f575b600080fd5b6100ab6102cb565b6040519081526020015b60405180910390f35b6100d16100cc366004610e29565b61033e565b6040516001600160601b0390911681526020016100b5565b6100ff6040518060200160405280600081525081565b6040516100b59190610eba565b6100d161011a366004610ed4565b610505565b6101cc61012d366004610ef1565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506001600160601b0390811660009081526020818152604091829020825160a08101845281548086168252600160601b810490951692810192909252600160c01b90930460ff169181019190915260018201546001600160a01b039081166060830152600290920154909116608082015290565b6040516100b5919081516001600160601b0390811682526020808401519091169082015260408083015160ff16908201526060808301516001600160a01b0390811691830191909152608092830151169181019190915260a00190565b6003546001600160a01b03165b6040516001600160a01b0390911681526020016100b5565b61026161025c366004610ed4565b610bd2565b60405190151581526020016100b5565b61028461027f366004610ed4565b610c6e565b005b6100d1610294366004610ed4565b6001600160a01b03166000908152600260205260409020546001600160601b031690565b6102366102c6366004610ef1565b610cf3565b600354604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa158015610315573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103399190610f0e565b905090565b600061035283605a5b60ff90811691161490565b806103635750610363836051610347565b6103b45760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a5245472d3030353a545950455f494e56414c494400000000000060448201526064015b60405180910390fd5b600354604080516020810182526000808252915163d0def52160e01b815291926001600160a01b03169163d0def521916103f391879190600401610f27565b6020604051808303816000875af1158015610412573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104369190610f0e565b9050806040805160a0810182526001600160601b03808416808352988116602080840191825260ff998a168486019081526000606086018181526001600160a01b039b8c16608088019081529d825292819052959095209351845492519551909a16600160c01b0260ff60c01b19958416600160601b026001600160c01b03199093169a90931699909917179290921691909117815594516001860180549186166001600160a01b03199283161790559551600290950180549590941694909516939093179091555090919050565b6001600160a01b038116600090815260026020526040808220549051630a4d29dd60e31b81526001600160601b03909116600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906352694ee890602401602060405180830381865af4158015610577573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059b9190610f53565b6105e75760405162461bcd60e51b815260206004820181905260248201527f4552524f523a5245472d3030323a414c52454144595f5245474953544552454460448201526064016103ab565b6000829050806001600160a01b03166379e829d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064e9190610f53565b61069a5760405162461bcd60e51b815260206004820152601e60248201527f4552524f523a5245472d3030333a4e4f545f524547495354455241424c45000060448201526064016103ab565b610709816001600160a01b03166315dae03e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ff9190610f75565b60ff166032141590565b156108a9576000806000836001600160a01b03166331b62a3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610751573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107759190610f92565b6001600160601b0390811682526020808301939093526040918201600020825160a0810184528154808416808352600160601b820490941695820195909552600160c01b90940460ff168484015260018101546001600160a01b03908116606086015260029091015416608084015290516330b8415f60e01b8152600481019190915290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085b9190610f53565b6108a75760405162461bcd60e51b815260206004820152601e60248201527f4552524f523a5245472d3030343a504152454e545f4e4f545f464f554e44000060448201526064016103ab565b505b6000600360009054906101000a90046001600160a01b03166001600160a01b031663d0def521836001600160a01b031663fb2cb1016040518163ffffffff1660e01b8152600401602060405180830381865afa15801561090d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109319190610faf565b604051806020016040528060008152506040518363ffffffff1660e01b815260040161095e929190610f27565b6020604051808303816000875af115801561097d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a19190610f0e565b905080925060006040518060a00160405280856001600160601b03168152602001846001600160a01b03166331b62a3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a249190610f92565b6001600160601b03168152602001846001600160a01b03166315dae03e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a949190610f75565b60ff168152602001866001600160a01b03168152602001846001600160a01b031663fb2cb1016040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0d9190610faf565b6001600160a01b039081169091526001600160601b0380871660008181526020818152604080832087518154848a0151848b015160ff16600160c01b0260ff60c01b19918a16600160601b026001600160c01b03199093169390991692909217171695909517855560608701516001860180549188166001600160a01b031992831617905560809097015160029586018054918816919098161790965599909316835297522080546bffffffffffffffffffffffff1916909517909455509092915050565b6001600160a01b0381166000908152600260205260408082205490516330b8415f60e01b81526001600160601b03909116600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610c44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c689190610f53565b92915050565b6003546001600160a01b031615610cd15760405162461bcd60e51b815260206004820152602160248201527f4552524f523a5245472d3030313a414c52454144595f494e495449414c495a456044820152601160fa1b60648201526084016103ab565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b60035460405163046e44af60e11b81526001600160601b03831660048201526000916001600160a01b031690636352211e9073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906308dc895e90602401602060405180830381865af4158015610d61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d859190610f92565b6040516001600160e01b031960e084901b1681526001600160601b039091166004820152602401602060405180830381865afa158015610dc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c689190610faf565b6001600160601b0381168114610e0257600080fd5b50565b60ff81168114610e0257600080fd5b6001600160a01b0381168114610e0257600080fd5b600080600060608486031215610e3e57600080fd5b8335610e4981610ded565b92506020840135610e5981610e05565b91506040840135610e6981610e14565b809150509250925092565b6000815180845260005b81811015610e9a57602081850181015186830182015201610e7e565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610ecd6020830184610e74565b9392505050565b600060208284031215610ee657600080fd5b8135610ecd81610e14565b600060208284031215610f0357600080fd5b8135610ecd81610ded565b600060208284031215610f2057600080fd5b5051919050565b6001600160a01b0383168152604060208201819052600090610f4b90830184610e74565b949350505050565b600060208284031215610f6557600080fd5b81518015158114610ecd57600080fd5b600060208284031215610f8757600080fd5b8151610ecd81610e05565b600060208284031215610fa457600080fd5b8151610ecd81610ded565b600060208284031215610fc157600080fd5b8151610ecd81610e1456fea2646970667358221220f0ef03c7270dd053385ad4000788b7842ce2ba361d0334bb8ebf29059ea7427664736f6c63430008140033",
211
- "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063be9a71bd11610066578063be9a71bd14610229578063c3c5a5471461024e578063c4d66de814610271578063d272ac1e14610286578063df33330b146102b857600080fd5b80631a848cfb146100a35780631d1b0cac146100be5780633fe9300e146100e95780634420e4861461010c5780634c3371cd1461011f575b600080fd5b6100ab6102cb565b6040519081526020015b60405180910390f35b6100d16100cc366004610e29565b61033e565b6040516001600160601b0390911681526020016100b5565b6100ff6040518060200160405280600081525081565b6040516100b59190610eba565b6100d161011a366004610ed4565b610505565b6101cc61012d366004610ef1565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506001600160601b0390811660009081526020818152604091829020825160a08101845281548086168252600160601b810490951692810192909252600160c01b90930460ff169181019190915260018201546001600160a01b039081166060830152600290920154909116608082015290565b6040516100b5919081516001600160601b0390811682526020808401519091169082015260408083015160ff16908201526060808301516001600160a01b0390811691830191909152608092830151169181019190915260a00190565b6003546001600160a01b03165b6040516001600160a01b0390911681526020016100b5565b61026161025c366004610ed4565b610bd2565b60405190151581526020016100b5565b61028461027f366004610ed4565b610c6e565b005b6100d1610294366004610ed4565b6001600160a01b03166000908152600260205260409020546001600160601b031690565b6102366102c6366004610ef1565b610cf3565b600354604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa158015610315573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103399190610f0e565b905090565b600061035283605a5b60ff90811691161490565b806103635750610363836051610347565b6103b45760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a5245472d3030353a545950455f494e56414c494400000000000060448201526064015b60405180910390fd5b600354604080516020810182526000808252915163d0def52160e01b815291926001600160a01b03169163d0def521916103f391879190600401610f27565b6020604051808303816000875af1158015610412573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104369190610f0e565b9050806040805160a0810182526001600160601b03808416808352988116602080840191825260ff998a168486019081526000606086018181526001600160a01b039b8c16608088019081529d825292819052959095209351845492519551909a16600160c01b0260ff60c01b19958416600160601b026001600160c01b03199093169a90931699909917179290921691909117815594516001860180549186166001600160a01b03199283161790559551600290950180549590941694909516939093179091555090919050565b6001600160a01b038116600090815260026020526040808220549051630a4d29dd60e31b81526001600160601b03909116600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906352694ee890602401602060405180830381865af4158015610577573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059b9190610f53565b6105e75760405162461bcd60e51b815260206004820181905260248201527f4552524f523a5245472d3030323a414c52454144595f5245474953544552454460448201526064016103ab565b6000829050806001600160a01b03166379e829d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064e9190610f53565b61069a5760405162461bcd60e51b815260206004820152601e60248201527f4552524f523a5245472d3030333a4e4f545f524547495354455241424c45000060448201526064016103ab565b610709816001600160a01b03166315dae03e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ff9190610f75565b60ff166032141590565b156108a9576000806000836001600160a01b03166331b62a3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610751573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107759190610f92565b6001600160601b0390811682526020808301939093526040918201600020825160a0810184528154808416808352600160601b820490941695820195909552600160c01b90940460ff168484015260018101546001600160a01b03908116606086015260029091015416608084015290516330b8415f60e01b8152600481019190915290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085b9190610f53565b6108a75760405162461bcd60e51b815260206004820152601e60248201527f4552524f523a5245472d3030343a504152454e545f4e4f545f464f554e44000060448201526064016103ab565b505b6000600360009054906101000a90046001600160a01b03166001600160a01b031663d0def521836001600160a01b031663fb2cb1016040518163ffffffff1660e01b8152600401602060405180830381865afa15801561090d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109319190610faf565b604051806020016040528060008152506040518363ffffffff1660e01b815260040161095e929190610f27565b6020604051808303816000875af115801561097d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a19190610f0e565b905080925060006040518060a00160405280856001600160601b03168152602001846001600160a01b03166331b62a3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a249190610f92565b6001600160601b03168152602001846001600160a01b03166315dae03e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a949190610f75565b60ff168152602001866001600160a01b03168152602001846001600160a01b031663fb2cb1016040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0d9190610faf565b6001600160a01b039081169091526001600160601b0380871660008181526020818152604080832087518154848a0151848b015160ff16600160c01b0260ff60c01b19918a16600160601b026001600160c01b03199093169390991692909217171695909517855560608701516001860180549188166001600160a01b031992831617905560809097015160029586018054918816919098161790965599909316835297522080546bffffffffffffffffffffffff1916909517909455509092915050565b6001600160a01b0381166000908152600260205260408082205490516330b8415f60e01b81526001600160601b03909116600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610c44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c689190610f53565b92915050565b6003546001600160a01b031615610cd15760405162461bcd60e51b815260206004820152602160248201527f4552524f523a5245472d3030313a414c52454144595f494e495449414c495a456044820152601160fa1b60648201526084016103ab565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b60035460405163046e44af60e11b81526001600160601b03831660048201526000916001600160a01b031690636352211e9073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906308dc895e90602401602060405180830381865af4158015610d61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d859190610f92565b6040516001600160e01b031960e084901b1681526001600160601b039091166004820152602401602060405180830381865afa158015610dc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c689190610faf565b6001600160601b0381168114610e0257600080fd5b50565b60ff81168114610e0257600080fd5b6001600160a01b0381168114610e0257600080fd5b600080600060608486031215610e3e57600080fd5b8335610e4981610ded565b92506020840135610e5981610e05565b91506040840135610e6981610e14565b809150509250925092565b6000815180845260005b81811015610e9a57602081850181015186830182015201610e7e565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610ecd6020830184610e74565b9392505050565b600060208284031215610ee657600080fd5b8135610ecd81610e14565b600060208284031215610f0357600080fd5b8135610ecd81610ded565b600060208284031215610f2057600080fd5b5051919050565b6001600160a01b0383168152604060208201819052600090610f4b90830184610e74565b949350505050565b600060208284031215610f6557600080fd5b81518015158114610ecd57600080fd5b600060208284031215610f8757600080fd5b8151610ecd81610e05565b600060208284031215610fa457600080fd5b8151610ecd81610ded565b600060208284031215610fc157600080fd5b8151610ecd81610e1456fea2646970667358221220f0ef03c7270dd053385ad4000788b7842ce2ba361d0334bb8ebf29059ea7427664736f6c63430008140033",
410
+ "bytecode": "0x608060405234801561001057600080fd5b50614958806100206000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80635ef14b5e116100b8578063bc36dc911161007c578063bc36dc911461037f578063c3c5a5471461039d578063d272ac1e146103cd578063df33330b146103fd578063e74d052f1461042d578063f16f93c21461045d57610142565b80635ef14b5e146102b3578063644c45e0146102e3578063893d20e814610301578063a3bcd81d1461031f578063a48f42e01461034f57610142565b806331b62a3b1161010a57806331b62a3b146101ef5780633bc5de301461020d5780633fe9300e1461022b5780634420e48614610249578063485cc955146102795780635ab1bd531461029557610142565b8063015654ff1461014757806301ffc9a71461016557806315dae03e146101955780631a848cfb146101b35780631aa3a008146101d1575b600080fd5b61014f61048d565b60405161015c919061330a565b60405180910390f35b61017f600480360381019061017a9190613391565b6104b7565b60405161018c91906133d9565b60405180910390f35b61019d610521565b6040516101aa919061343c565b60405180910390f35b6101bb610530565b6040516101c89190613470565b60405180910390f35b6101d96105c8565b6040516101e691906134d4565b60405180910390f35b6101f76105d7565b60405161020491906134d4565b60405180910390f35b610215610720565b604051610222919061357f565b60405180910390f35b610233610737565b60405161024091906135f6565b60405180910390f35b610263600480360381019061025e9190613644565b61074a565b60405161027091906134d4565b60405180910390f35b610293600480360381019061028e9190613671565b6110b2565b005b61029d61129b565b6040516102aa9190613706565b60405180910390f35b6102cd60048036038101906102c891906138ae565b6112a3565b6040516102da91906134d4565b60405180910390f35b6102eb6115b7565b6040516102f891906134d4565b60405180910390f35b6103096115d9565b604051610316919061330a565b60405180910390f35b610339600480360381019061033491906139fe565b611743565b604051610346919061330a565b60405180910390f35b61036960048036038101906103649190613a5a565b6117c3565b6040516103769190613b87565b60405180910390f35b6103876119e2565b6040516103949190613bca565b60405180910390f35b6103b760048036038101906103b29190613644565b611a0c565b6040516103c491906133d9565b60405180910390f35b6103e760048036038101906103e29190613644565b611af4565b6040516103f491906134d4565b60405180910390f35b61041760048036038101906104129190613a5a565b611b55565b604051610424919061330a565b60405180910390f35b61044760048036038101906104429190613a5a565b611c81565b60405161045491906133d9565b60405180910390f35b61047760048036038101906104729190613a5a565b611d45565b60405161048491906135f6565b60405180910390f35b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60007f06ecd8ef000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600061052b611e06565b905090565b60006007600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561059f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c39190613c11565b905090565b60006105d2611e17565b905090565b6000600146036106815761067a600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663598e28926040518163ffffffff1660e01b8152600401602060405180830381865afa158015610651573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106759190613c11565b611e1c565b905061071d565b61071a600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e85b1f36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107159190613c11565b611e1c565b90505b90565b606060405180602001604052806000815250905090565b6040518060200160405280600081525081565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1673__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__6352694ee890916040518263ffffffff1660e01b81526004016107ea9190613c4d565b602060405180830381865af4158015610807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082b9190613c94565b61086a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086190613d0d565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f3bf74c8e000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016108c89190613d3c565b602060405180830381865afa1580156108e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109099190613c94565b610948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093f90613da3565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166315dae03e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610995573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b99190613dd8565b9050600360008260ff1660ff16815260200190815260200160002060009054906101000a900460ff16610a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1890613e51565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166331b62a3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a929190613e86565b9050610a9d81611c81565b610adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad390613f25565b60405180910390fd5b600460008360ff1660ff1681526020019081526020016000206000806000846bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060000160189054906101000a900460ff1660ff1660ff16815260200190815260200160002060009054906101000a900460ff16610b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8e90613fb7565b60405180910390fd5b60006007600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0def5218573ffffffffffffffffffffffffffffffffffffffff1663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c469190613fec565b604051806020016040528060008152506040518363ffffffff1660e01b8152600401610c73929190614019565b6020604051808303816000875af1158015610c92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb69190613c11565b9050610cc181611e1c565b9450610d428473ffffffffffffffffffffffffffffffffffffffff166315dae03e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d359190613dd8565b610d3d611e26565b611e37565b1561109f5760008690508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fda309788000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610da59190613d3c565b602060405180830381865afa158015610dc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de69190613c94565b610e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1c90614095565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166317d7de7c6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610e72573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610e9b9190614125565b905060008273ffffffffffffffffffffffffffffffffffffffff1663cde749f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0e9190614183565b9050600082604051602001610f2391906135f6565b60405160208183030381529060405280519060200120905082600560008b6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020016000209081610f7791906143b2565b50600073ffffffffffffffffffffffffffffffffffffffff166006600083815260200190815260200160002060008460ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611031576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611028906144d0565b60405180910390fd5b896006600083815260200190815260200160002060008460ff1660ff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505b6110a98486611e4a565b50505050919050565b600073ffffffffffffffffffffffffffffffffffffffff166007600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113a90614562565b60405180910390fd5b33600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816007600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061124f612261565b6112576125da565b600760006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061128f6127e6565b611297612a22565b5050565b600030905090565b60006112b6846112b1612d8a565b611e37565b806112ce57506112cd846112c8612d9b565b611e37565b5b61130d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611304906145ce565b60405180910390fd5b60006007600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0def52185604051806020016040528060008152506040518363ffffffff1660e01b815260040161137b929190614019565b6020604051808303816000875af115801561139a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113be9190613c11565b90506113c981611e1c565b915060006040518060c00160405280846bffffffffffffffffffffffff168152602001886bffffffffffffffffffffffff1681526020018760ff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff16815260200185815250905080600080856bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060408201518160000160186101000a81548160ff021916908360ff16021790555060608201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160030190816115a99190614649565b509050505050949350505050565b6000600760009054906101000a90046bffffffffffffffffffffffff16905090565b6000600760009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1673__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__6330b8415f90916040518263ffffffff1660e01b815260040161163c9190613c4d565b602060405180830381865af4158015611659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167d9190613c94565b6116a957600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661173e565b3073ffffffffffffffffffffffffffffffffffffffff1663df33330b600760009054906101000a90046bffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016116fc91906134d4565b602060405180830381865afa158015611719573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173d9190613fec565b5b905090565b6000808360405160200161175791906135f6565b6040516020818303038152906040528051906020012090506006600082815260200190815260200160002060008460ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505092915050565b6117cb613248565b600080836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020016000206040518060c00160405290816000820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600c9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020016000820160189054906101000a900460ff1660ff1660ff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382018054611959906141df565b80601f0160208091040260200160405190810160405280929190818152602001828054611985906141df565b80156119d25780601f106119a7576101008083540402835291602001916119d2565b820191906000526020600020905b8154815290600101906020018083116119b557829003601f168201915b5050505050815250509050919050565b60006007600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1673__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__6330b8415f90916040518263ffffffff1660e01b8152600401611aac9190613c4d565b602060405180830381865af4158015611ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aed9190613c94565b9050919050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff169050919050565b60006007600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836bffffffffffffffffffffffff1673__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__6308dc895e90916040518263ffffffff1660e01b8152600401611bdc9190613c4d565b602060405180830381865af4158015611bf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1d9190614747565b6040518263ffffffff1660e01b8152600401611c3991906147a5565b602060405180830381865afa158015611c56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7a9190613fec565b9050919050565b6000806000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060000160189054906101000a900460ff1660ff1673__$fb4566b39bd2075cb32f600f6f40bfaef2$__63b2466acf90916040518263ffffffff1660e01b8152600401611cfd91906147cf565b602060405180830381865af4158015611d1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3e9190613c94565b9050919050565b606060056000836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020016000208054611d81906141df565b80601f0160208091040260200160405190810160405280929190818152602001828054611dad906141df565b8015611dfa5780601f10611dcf57610100808354040283529160200191611dfa565b820191906000526020600020905b815481529060010190602001808311611ddd57829003601f168201915b50505050509050919050565b6000611e126014612dac565b905090565b600090565b6000819050919050565b6000611e326028612dac565b905090565b60008160ff168360ff1614905092915050565b600082905060006040518060c00160405280846bffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff166331b62a3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ebb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611edf9190613e86565b6bffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff166315dae03e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f619190613dd8565b60ff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff49190613fec565b73ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16633bc5de306040518163ffffffff1660e01b8152600401600060405180830381865afa15801561205a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612083919061485a565b815250905080600080856bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060408201518160000160186101000a81548160ff021916908360ff16021790555060608201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160030190816121e99190614649565b5090505082600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555050505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663598e28926040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f49190613c11565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016123759291906148a3565b600060405180830381600087803b15801561238f57600080fd5b505af11580156123a3573d6000803e3d6000fd5b5050505060006123b282611e1c565b905060006040518060c00160405280836bffffffffffffffffffffffff1681526020016123dd611e17565b6bffffffffffffffffffffffff1681526020016123f8612db6565b60ff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052806000815250815250905080600080846bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060408201518160000160186101000a81548160ff021916908360ff16021790555060608201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160030190816125d19190614649565b50905050505050565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630559ea4760026040518263ffffffff1660e01b81526004016126399190614907565b602060405180830381865afa158015612656573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267a9190613c11565b905061268581611e1c565b9150600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e85b1f36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127189190613c11565b811461272757612726612dc7565b5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016127a69291906148a3565b600060405180830381600087803b1580156127c057600080fd5b505af11580156127d4573d6000803e3d6000fd5b505050506127e23083611e4a565b5090565b6001600360006127f4611e06565b60ff1660ff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600061282d6131d1565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000612866611e26565b60ff1660ff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600061289f6131e2565b60ff1660ff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360006128d86131f3565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000612911613204565b60ff1660ff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600061294a613215565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000612983613226565b60ff1660ff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360006129bc612d8a565b60ff1660ff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360006129f5612d9b565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550565b600160046000612a306131d1565b60ff1660ff1681526020019081526020016000206000612a4e611e06565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000612a87611e26565b60ff1660ff1681526020019081526020016000206000612aa5611e06565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000612ade6131e2565b60ff1660ff1681526020019081526020016000206000612afc611e06565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000612b35613204565b60ff1660ff1681526020019081526020016000206000612b536131e2565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000612b8c613237565b60ff1660ff1681526020019081526020016000206000612baa6131e2565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000612be3613215565b60ff1660ff1681526020019081526020016000206000612c016131e2565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000612c3a613226565b60ff1660ff1681526020019081526020016000206000612c586131e2565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000612c91612d8a565b60ff1660ff1681526020019081526020016000206000612caf613204565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000612ce8612d9b565b60ff1660ff1681526020019081526020016000206000612d06613226565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000612d3f6131f3565b60ff1660ff1681526020019081526020016000206000612d5d613226565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550565b6000612d9660c8612dac565b905090565b6000612da760d2612dac565b905090565b6000819050919050565b6000612dc2600a612dac565b905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e85b1f36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5a9190613c11565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401612edb9291906148a3565b600060405180830381600087803b158015612ef557600080fd5b505af1158015612f09573d6000803e3d6000fd5b505050506000612f1882611e1c565b905060006040518060c00160405280836bffffffffffffffffffffffff168152602001612fd4600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663598e28926040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fcf9190613c11565b611e1c565b6bffffffffffffffffffffffff168152602001612fef611e06565b60ff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052806000815250815250905080600080846bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060408201518160000160186101000a81548160ff021916908360ff16021790555060608201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160030190816131c89190614649565b50905050505050565b60006131dd601e612dac565b905090565b60006131ee6032612dac565b905090565b60006131ff603c612dac565b905090565b60006132106064612dac565b905090565b60006132216078612dac565b905090565b60006132326082612dac565b905090565b6000613243606e612dac565b905090565b6040518060c0016040528060006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132f4826132c9565b9050919050565b613304816132e9565b82525050565b600060208201905061331f60008301846132fb565b92915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61336e81613339565b811461337957600080fd5b50565b60008135905061338b81613365565b92915050565b6000602082840312156133a7576133a661332f565b5b60006133b58482850161337c565b91505092915050565b60008115159050919050565b6133d3816133be565b82525050565b60006020820190506133ee60008301846133ca565b92915050565b600060ff82169050919050565b6000819050919050565b600061342661342161341c846133f4565b613401565b6133f4565b9050919050565b6134368161340b565b82525050565b6000602082019050613451600083018461342d565b92915050565b6000819050919050565b61346a81613457565b82525050565b60006020820190506134856000830184613461565b92915050565b60006bffffffffffffffffffffffff82169050919050565b60006134be6134b96134b48461348b565b613401565b61348b565b9050919050565b6134ce816134a3565b82525050565b60006020820190506134e960008301846134c5565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561352957808201518184015260208101905061350e565b60008484015250505050565b6000601f19601f8301169050919050565b6000613551826134ef565b61355b81856134fa565b935061356b81856020860161350b565b61357481613535565b840191505092915050565b600060208201905081810360008301526135998184613546565b905092915050565b600081519050919050565b600082825260208201905092915050565b60006135c8826135a1565b6135d281856135ac565b93506135e281856020860161350b565b6135eb81613535565b840191505092915050565b6000602082019050818103600083015261361081846135bd565b905092915050565b613621816132e9565b811461362c57600080fd5b50565b60008135905061363e81613618565b92915050565b60006020828403121561365a5761365961332f565b5b60006136688482850161362f565b91505092915050565b600080604083850312156136885761368761332f565b5b60006136968582860161362f565b92505060206136a78582860161362f565b9150509250929050565b60006136cc6136c76136c2846132c9565b613401565b6132c9565b9050919050565b60006136de826136b1565b9050919050565b60006136f0826136d3565b9050919050565b613700816136e5565b82525050565b600060208201905061371b60008301846136f7565b92915050565b61372a8161348b565b811461373557600080fd5b50565b60008135905061374781613721565b92915050565b613756816133f4565b811461376157600080fd5b50565b6000813590506137738161374d565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6137bb82613535565b810181811067ffffffffffffffff821117156137da576137d9613783565b5b80604052505050565b60006137ed613325565b90506137f982826137b2565b919050565b600067ffffffffffffffff82111561381957613818613783565b5b61382282613535565b9050602081019050919050565b82818337600083830152505050565b600061385161384c846137fe565b6137e3565b90508281526020810184848401111561386d5761386c61377e565b5b61387884828561382f565b509392505050565b600082601f83011261389557613894613779565b5b81356138a584826020860161383e565b91505092915050565b600080600080608085870312156138c8576138c761332f565b5b60006138d687828801613738565b94505060206138e787828801613764565b93505060406138f88782880161362f565b925050606085013567ffffffffffffffff81111561391957613918613334565b5b61392587828801613880565b91505092959194509250565b600067ffffffffffffffff82111561394c5761394b613783565b5b61395582613535565b9050602081019050919050565b600061397561397084613931565b6137e3565b9050828152602081018484840111156139915761399061377e565b5b61399c84828561382f565b509392505050565b600082601f8301126139b9576139b8613779565b5b81356139c9848260208601613962565b91505092915050565b6139db816133f4565b81146139e657600080fd5b50565b6000813590506139f8816139d2565b92915050565b60008060408385031215613a1557613a1461332f565b5b600083013567ffffffffffffffff811115613a3357613a32613334565b5b613a3f858286016139a4565b9250506020613a50858286016139e9565b9150509250929050565b600060208284031215613a7057613a6f61332f565b5b6000613a7e84828501613738565b91505092915050565b613a90816134a3565b82525050565b613a9f8161340b565b82525050565b613aae816132e9565b82525050565b600082825260208201905092915050565b6000613ad0826134ef565b613ada8185613ab4565b9350613aea81856020860161350b565b613af381613535565b840191505092915050565b600060c083016000830151613b166000860182613a87565b506020830151613b296020860182613a87565b506040830151613b3c6040860182613a96565b506060830151613b4f6060860182613aa5565b506080830151613b626080860182613aa5565b5060a083015184820360a0860152613b7a8282613ac5565b9150508091505092915050565b60006020820190508181036000830152613ba18184613afe565b905092915050565b6000613bb4826136d3565b9050919050565b613bc481613ba9565b82525050565b6000602082019050613bdf6000830184613bbb565b92915050565b613bee81613457565b8114613bf957600080fd5b50565b600081519050613c0b81613be5565b92915050565b600060208284031215613c2757613c2661332f565b5b6000613c3584828501613bfc565b91505092915050565b613c47816134a3565b82525050565b6000602082019050613c626000830184613c3e565b92915050565b613c71816133be565b8114613c7c57600080fd5b50565b600081519050613c8e81613c68565b92915050565b600060208284031215613caa57613ca961332f565b5b6000613cb884828501613c7f565b91505092915050565b7f4552524f523a5245472d3030323a414c52454144595f52454749535445524544600082015250565b6000613cf76020836135ac565b9150613d0282613cc1565b602082019050919050565b60006020820190508181036000830152613d2681613cea565b9050919050565b613d3681613339565b82525050565b6000602082019050613d516000830184613d2d565b92915050565b7f4552524f523a5245472d3030333a4e4f545f524547495354455241424c450000600082015250565b6000613d8d601e836135ac565b9150613d9882613d57565b602082019050919050565b60006020820190508181036000830152613dbc81613d80565b9050919050565b600081519050613dd28161374d565b92915050565b600060208284031215613dee57613ded61332f565b5b6000613dfc84828501613dc3565b91505092915050565b7f4552524f523a5245472d3030343a545950455f494e56414c4944000000000000600082015250565b6000613e3b601a836135ac565b9150613e4682613e05565b602082019050919050565b60006020820190508181036000830152613e6a81613e2e565b9050919050565b600081519050613e8081613721565b92915050565b600060208284031215613e9c57613e9b61332f565b5b6000613eaa84828501613e71565b91505092915050565b7f4552524f523a5245472d3030353a504152454e545f4e4f545f5245474953544560008201527f5245440000000000000000000000000000000000000000000000000000000000602082015250565b6000613f0f6023836135ac565b9150613f1a82613eb3565b604082019050919050565b60006020820190508181036000830152613f3e81613f02565b9050919050565b7f4552524f523a5245472d3030363a504152454e545f545950455f494e56414c4960008201527f4400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fa16021836135ac565b9150613fac82613f45565b604082019050919050565b60006020820190508181036000830152613fd081613f94565b9050919050565b600081519050613fe681613618565b92915050565b6000602082840312156140025761400161332f565b5b600061401084828501613fd7565b91505092915050565b600060408201905061402e60008301856132fb565b818103602083015261404081846135bd565b90509392505050565b7f4552524f523a5245472d3030373a4e4f545f5345525649434500000000000000600082015250565b600061407f6019836135ac565b915061408a82614049565b602082019050919050565b600060208201905081810360008301526140ae81614072565b9050919050565b60006140c86140c384613931565b6137e3565b9050828152602081018484840111156140e4576140e361377e565b5b6140ef84828561350b565b509392505050565b600082601f83011261410c5761410b613779565b5b815161411c8482602086016140b5565b91505092915050565b60006020828403121561413b5761413a61332f565b5b600082015167ffffffffffffffff81111561415957614158613334565b5b614165848285016140f7565b91505092915050565b60008151905061417d816139d2565b92915050565b6000602082840312156141995761419861332f565b5b60006141a78482850161416e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806141f757607f821691505b60208210810361420a576142096141b0565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026142727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614235565b61427c8683614235565b95508019841693508086168417925050509392505050565b60006142af6142aa6142a584613457565b613401565b613457565b9050919050565b6000819050919050565b6142c983614294565b6142dd6142d5826142b6565b848454614242565b825550505050565b600090565b6142f26142e5565b6142fd8184846142c0565b505050565b5b81811015614321576143166000826142ea565b600181019050614303565b5050565b601f8211156143665761433781614210565b61434084614225565b8101602085101561434f578190505b61436361435b85614225565b830182614302565b50505b505050565b600082821c905092915050565b60006143896000198460080261436b565b1980831691505092915050565b60006143a28383614378565b9150826002028217905092915050565b6143bb826135a1565b67ffffffffffffffff8111156143d4576143d3613783565b5b6143de82546141df565b6143e9828285614325565b600060209050601f83116001811461441c576000841561440a578287015190505b6144148582614396565b86555061447c565b601f19841661442a86614210565b60005b828110156144525784890151825560018201915060208501945060208101905061442d565b8683101561446f578489015161446b601f891682614378565b8355505b6001600288020188555050505b505050505050565b7f4552524f523a5245472d3030383a414c52454144595f52454749535445524544600082015250565b60006144ba6020836135ac565b91506144c582614484565b602082019050919050565b600060208201905081810360008301526144e9816144ad565b9050919050565b7f4552524f523a5245472d3030313a414c52454144595f494e495449414c495a4560008201527f4400000000000000000000000000000000000000000000000000000000000000602082015250565b600061454c6021836135ac565b9150614557826144f0565b604082019050919050565b6000602082019050818103600083015261457b8161453f565b9050919050565b7f4552524f523a5245472d3031303a545950455f494e56414c4944000000000000600082015250565b60006145b8601a836135ac565b91506145c382614582565b602082019050919050565b600060208201905081810360008301526145e7816145ab565b9050919050565b60008190508160005260206000209050919050565b601f82111561464457614615816145ee565b61461e84614225565b8101602085101561462d578190505b61464161463985614225565b830182614302565b50505b505050565b614652826134ef565b67ffffffffffffffff81111561466b5761466a613783565b5b61467582546141df565b614680828285614603565b600060209050601f8311600181146146b357600084156146a1578287015190505b6146ab8582614396565b865550614713565b601f1984166146c1866145ee565b60005b828110156146e9578489015182556001820191506020850194506020810190506146c4565b868310156147065784890151614702601f891682614378565b8355505b6001600288020188555050505b505050505050565b6147248161348b565b811461472f57600080fd5b50565b6000815190506147418161471b565b92915050565b60006020828403121561475d5761475c61332f565b5b600061476b84828501614732565b91505092915050565b600061478f61478a6147858461348b565b613401565b613457565b9050919050565b61479f81614774565b82525050565b60006020820190506147ba6000830184614796565b92915050565b6147c98161340b565b82525050565b60006020820190506147e460008301846147c0565b92915050565b60006147fd6147f8846137fe565b6137e3565b9050828152602081018484840111156148195761481861377e565b5b61482484828561350b565b509392505050565b600082601f83011261484157614840613779565b5b81516148518482602086016147ea565b91505092915050565b6000602082840312156148705761486f61332f565b5b600082015167ffffffffffffffff81111561488e5761488d613334565b5b61489a8482850161482c565b91505092915050565b60006040820190506148b860008301856132fb565b6148c56020830184613461565b9392505050565b6000819050919050565b60006148f16148ec6148e7846148cc565b613401565b613457565b9050919050565b614901816148d6565b82525050565b600060208201905061491c60008301846148f8565b9291505056fea2646970667358221220bd6f3563e70c851a7043ec07508deb827acc217c75a21d54c90612939eaea97964736f6c63430008140033",
411
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101425760003560e01c80635ef14b5e116100b8578063bc36dc911161007c578063bc36dc911461037f578063c3c5a5471461039d578063d272ac1e146103cd578063df33330b146103fd578063e74d052f1461042d578063f16f93c21461045d57610142565b80635ef14b5e146102b3578063644c45e0146102e3578063893d20e814610301578063a3bcd81d1461031f578063a48f42e01461034f57610142565b806331b62a3b1161010a57806331b62a3b146101ef5780633bc5de301461020d5780633fe9300e1461022b5780634420e48614610249578063485cc955146102795780635ab1bd531461029557610142565b8063015654ff1461014757806301ffc9a71461016557806315dae03e146101955780631a848cfb146101b35780631aa3a008146101d1575b600080fd5b61014f61048d565b60405161015c919061330a565b60405180910390f35b61017f600480360381019061017a9190613391565b6104b7565b60405161018c91906133d9565b60405180910390f35b61019d610521565b6040516101aa919061343c565b60405180910390f35b6101bb610530565b6040516101c89190613470565b60405180910390f35b6101d96105c8565b6040516101e691906134d4565b60405180910390f35b6101f76105d7565b60405161020491906134d4565b60405180910390f35b610215610720565b604051610222919061357f565b60405180910390f35b610233610737565b60405161024091906135f6565b60405180910390f35b610263600480360381019061025e9190613644565b61074a565b60405161027091906134d4565b60405180910390f35b610293600480360381019061028e9190613671565b6110b2565b005b61029d61129b565b6040516102aa9190613706565b60405180910390f35b6102cd60048036038101906102c891906138ae565b6112a3565b6040516102da91906134d4565b60405180910390f35b6102eb6115b7565b6040516102f891906134d4565b60405180910390f35b6103096115d9565b604051610316919061330a565b60405180910390f35b610339600480360381019061033491906139fe565b611743565b604051610346919061330a565b60405180910390f35b61036960048036038101906103649190613a5a565b6117c3565b6040516103769190613b87565b60405180910390f35b6103876119e2565b6040516103949190613bca565b60405180910390f35b6103b760048036038101906103b29190613644565b611a0c565b6040516103c491906133d9565b60405180910390f35b6103e760048036038101906103e29190613644565b611af4565b6040516103f491906134d4565b60405180910390f35b61041760048036038101906104129190613a5a565b611b55565b604051610424919061330a565b60405180910390f35b61044760048036038101906104429190613a5a565b611c81565b60405161045491906133d9565b60405180910390f35b61047760048036038101906104729190613a5a565b611d45565b60405161048491906135f6565b60405180910390f35b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60007f06ecd8ef000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600061052b611e06565b905090565b60006007600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561059f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c39190613c11565b905090565b60006105d2611e17565b905090565b6000600146036106815761067a600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663598e28926040518163ffffffff1660e01b8152600401602060405180830381865afa158015610651573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106759190613c11565b611e1c565b905061071d565b61071a600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e85b1f36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107159190613c11565b611e1c565b90505b90565b606060405180602001604052806000815250905090565b6040518060200160405280600081525081565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1673__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__6352694ee890916040518263ffffffff1660e01b81526004016107ea9190613c4d565b602060405180830381865af4158015610807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082b9190613c94565b61086a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086190613d0d565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f3bf74c8e000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016108c89190613d3c565b602060405180830381865afa1580156108e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109099190613c94565b610948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093f90613da3565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166315dae03e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610995573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b99190613dd8565b9050600360008260ff1660ff16815260200190815260200160002060009054906101000a900460ff16610a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1890613e51565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166331b62a3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a929190613e86565b9050610a9d81611c81565b610adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad390613f25565b60405180910390fd5b600460008360ff1660ff1681526020019081526020016000206000806000846bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060000160189054906101000a900460ff1660ff1660ff16815260200190815260200160002060009054906101000a900460ff16610b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8e90613fb7565b60405180910390fd5b60006007600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0def5218573ffffffffffffffffffffffffffffffffffffffff1663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c469190613fec565b604051806020016040528060008152506040518363ffffffff1660e01b8152600401610c73929190614019565b6020604051808303816000875af1158015610c92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb69190613c11565b9050610cc181611e1c565b9450610d428473ffffffffffffffffffffffffffffffffffffffff166315dae03e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d359190613dd8565b610d3d611e26565b611e37565b1561109f5760008690508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fda309788000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610da59190613d3c565b602060405180830381865afa158015610dc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de69190613c94565b610e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1c90614095565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166317d7de7c6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610e72573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610e9b9190614125565b905060008273ffffffffffffffffffffffffffffffffffffffff1663cde749f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0e9190614183565b9050600082604051602001610f2391906135f6565b60405160208183030381529060405280519060200120905082600560008b6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020016000209081610f7791906143b2565b50600073ffffffffffffffffffffffffffffffffffffffff166006600083815260200190815260200160002060008460ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611031576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611028906144d0565b60405180910390fd5b896006600083815260200190815260200160002060008460ff1660ff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505b6110a98486611e4a565b50505050919050565b600073ffffffffffffffffffffffffffffffffffffffff166007600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113a90614562565b60405180910390fd5b33600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816007600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061124f612261565b6112576125da565b600760006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061128f6127e6565b611297612a22565b5050565b600030905090565b60006112b6846112b1612d8a565b611e37565b806112ce57506112cd846112c8612d9b565b611e37565b5b61130d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611304906145ce565b60405180910390fd5b60006007600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0def52185604051806020016040528060008152506040518363ffffffff1660e01b815260040161137b929190614019565b6020604051808303816000875af115801561139a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113be9190613c11565b90506113c981611e1c565b915060006040518060c00160405280846bffffffffffffffffffffffff168152602001886bffffffffffffffffffffffff1681526020018760ff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff16815260200185815250905080600080856bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060408201518160000160186101000a81548160ff021916908360ff16021790555060608201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160030190816115a99190614649565b509050505050949350505050565b6000600760009054906101000a90046bffffffffffffffffffffffff16905090565b6000600760009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1673__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__6330b8415f90916040518263ffffffff1660e01b815260040161163c9190613c4d565b602060405180830381865af4158015611659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167d9190613c94565b6116a957600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661173e565b3073ffffffffffffffffffffffffffffffffffffffff1663df33330b600760009054906101000a90046bffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016116fc91906134d4565b602060405180830381865afa158015611719573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173d9190613fec565b5b905090565b6000808360405160200161175791906135f6565b6040516020818303038152906040528051906020012090506006600082815260200190815260200160002060008460ff1660ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505092915050565b6117cb613248565b600080836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020016000206040518060c00160405290816000820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600c9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020016000820160189054906101000a900460ff1660ff1660ff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382018054611959906141df565b80601f0160208091040260200160405190810160405280929190818152602001828054611985906141df565b80156119d25780601f106119a7576101008083540402835291602001916119d2565b820191906000526020600020905b8154815290600101906020018083116119b557829003601f168201915b5050505050815250509050919050565b60006007600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1673__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__6330b8415f90916040518263ffffffff1660e01b8152600401611aac9190613c4d565b602060405180830381865af4158015611ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aed9190613c94565b9050919050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff169050919050565b60006007600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836bffffffffffffffffffffffff1673__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__6308dc895e90916040518263ffffffff1660e01b8152600401611bdc9190613c4d565b602060405180830381865af4158015611bf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1d9190614747565b6040518263ffffffff1660e01b8152600401611c3991906147a5565b602060405180830381865afa158015611c56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7a9190613fec565b9050919050565b6000806000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060000160189054906101000a900460ff1660ff1673__$fb4566b39bd2075cb32f600f6f40bfaef2$__63b2466acf90916040518263ffffffff1660e01b8152600401611cfd91906147cf565b602060405180830381865af4158015611d1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3e9190613c94565b9050919050565b606060056000836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020016000208054611d81906141df565b80601f0160208091040260200160405190810160405280929190818152602001828054611dad906141df565b8015611dfa5780601f10611dcf57610100808354040283529160200191611dfa565b820191906000526020600020905b815481529060010190602001808311611ddd57829003601f168201915b50505050509050919050565b6000611e126014612dac565b905090565b600090565b6000819050919050565b6000611e326028612dac565b905090565b60008160ff168360ff1614905092915050565b600082905060006040518060c00160405280846bffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff166331b62a3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ebb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611edf9190613e86565b6bffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff166315dae03e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f619190613dd8565b60ff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff49190613fec565b73ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16633bc5de306040518163ffffffff1660e01b8152600401600060405180830381865afa15801561205a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612083919061485a565b815250905080600080856bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060408201518160000160186101000a81548160ff021916908360ff16021790555060608201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160030190816121e99190614649565b5090505082600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555050505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663598e28926040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f49190613c11565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016123759291906148a3565b600060405180830381600087803b15801561238f57600080fd5b505af11580156123a3573d6000803e3d6000fd5b5050505060006123b282611e1c565b905060006040518060c00160405280836bffffffffffffffffffffffff1681526020016123dd611e17565b6bffffffffffffffffffffffff1681526020016123f8612db6565b60ff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052806000815250815250905080600080846bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060408201518160000160186101000a81548160ff021916908360ff16021790555060608201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160030190816125d19190614649565b50905050505050565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630559ea4760026040518263ffffffff1660e01b81526004016126399190614907565b602060405180830381865afa158015612656573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267a9190613c11565b905061268581611e1c565b9150600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e85b1f36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127189190613c11565b811461272757612726612dc7565b5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016127a69291906148a3565b600060405180830381600087803b1580156127c057600080fd5b505af11580156127d4573d6000803e3d6000fd5b505050506127e23083611e4a565b5090565b6001600360006127f4611e06565b60ff1660ff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600061282d6131d1565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000612866611e26565b60ff1660ff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600061289f6131e2565b60ff1660ff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360006128d86131f3565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000612911613204565b60ff1660ff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600061294a613215565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000612983613226565b60ff1660ff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360006129bc612d8a565b60ff1660ff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360006129f5612d9b565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550565b600160046000612a306131d1565b60ff1660ff1681526020019081526020016000206000612a4e611e06565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000612a87611e26565b60ff1660ff1681526020019081526020016000206000612aa5611e06565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000612ade6131e2565b60ff1660ff1681526020019081526020016000206000612afc611e06565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000612b35613204565b60ff1660ff1681526020019081526020016000206000612b536131e2565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000612b8c613237565b60ff1660ff1681526020019081526020016000206000612baa6131e2565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000612be3613215565b60ff1660ff1681526020019081526020016000206000612c016131e2565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000612c3a613226565b60ff1660ff1681526020019081526020016000206000612c586131e2565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000612c91612d8a565b60ff1660ff1681526020019081526020016000206000612caf613204565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000612ce8612d9b565b60ff1660ff1681526020019081526020016000206000612d06613226565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000612d3f6131f3565b60ff1660ff1681526020019081526020016000206000612d5d613226565b60ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550565b6000612d9660c8612dac565b905090565b6000612da760d2612dac565b905090565b6000819050919050565b6000612dc2600a612dac565b905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e85b1f36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5a9190613c11565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401612edb9291906148a3565b600060405180830381600087803b158015612ef557600080fd5b505af1158015612f09573d6000803e3d6000fd5b505050506000612f1882611e1c565b905060006040518060c00160405280836bffffffffffffffffffffffff168152602001612fd4600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663598e28926040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fcf9190613c11565b611e1c565b6bffffffffffffffffffffffff168152602001612fef611e06565b60ff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052806000815250815250905080600080846bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060408201518160000160186101000a81548160ff021916908360ff16021790555060608201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160030190816131c89190614649565b50905050505050565b60006131dd601e612dac565b905090565b60006131ee6032612dac565b905090565b60006131ff603c612dac565b905090565b60006132106064612dac565b905090565b60006132216078612dac565b905090565b60006132326082612dac565b905090565b6000613243606e612dac565b905090565b6040518060c0016040528060006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132f4826132c9565b9050919050565b613304816132e9565b82525050565b600060208201905061331f60008301846132fb565b92915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61336e81613339565b811461337957600080fd5b50565b60008135905061338b81613365565b92915050565b6000602082840312156133a7576133a661332f565b5b60006133b58482850161337c565b91505092915050565b60008115159050919050565b6133d3816133be565b82525050565b60006020820190506133ee60008301846133ca565b92915050565b600060ff82169050919050565b6000819050919050565b600061342661342161341c846133f4565b613401565b6133f4565b9050919050565b6134368161340b565b82525050565b6000602082019050613451600083018461342d565b92915050565b6000819050919050565b61346a81613457565b82525050565b60006020820190506134856000830184613461565b92915050565b60006bffffffffffffffffffffffff82169050919050565b60006134be6134b96134b48461348b565b613401565b61348b565b9050919050565b6134ce816134a3565b82525050565b60006020820190506134e960008301846134c5565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561352957808201518184015260208101905061350e565b60008484015250505050565b6000601f19601f8301169050919050565b6000613551826134ef565b61355b81856134fa565b935061356b81856020860161350b565b61357481613535565b840191505092915050565b600060208201905081810360008301526135998184613546565b905092915050565b600081519050919050565b600082825260208201905092915050565b60006135c8826135a1565b6135d281856135ac565b93506135e281856020860161350b565b6135eb81613535565b840191505092915050565b6000602082019050818103600083015261361081846135bd565b905092915050565b613621816132e9565b811461362c57600080fd5b50565b60008135905061363e81613618565b92915050565b60006020828403121561365a5761365961332f565b5b60006136688482850161362f565b91505092915050565b600080604083850312156136885761368761332f565b5b60006136968582860161362f565b92505060206136a78582860161362f565b9150509250929050565b60006136cc6136c76136c2846132c9565b613401565b6132c9565b9050919050565b60006136de826136b1565b9050919050565b60006136f0826136d3565b9050919050565b613700816136e5565b82525050565b600060208201905061371b60008301846136f7565b92915050565b61372a8161348b565b811461373557600080fd5b50565b60008135905061374781613721565b92915050565b613756816133f4565b811461376157600080fd5b50565b6000813590506137738161374d565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6137bb82613535565b810181811067ffffffffffffffff821117156137da576137d9613783565b5b80604052505050565b60006137ed613325565b90506137f982826137b2565b919050565b600067ffffffffffffffff82111561381957613818613783565b5b61382282613535565b9050602081019050919050565b82818337600083830152505050565b600061385161384c846137fe565b6137e3565b90508281526020810184848401111561386d5761386c61377e565b5b61387884828561382f565b509392505050565b600082601f83011261389557613894613779565b5b81356138a584826020860161383e565b91505092915050565b600080600080608085870312156138c8576138c761332f565b5b60006138d687828801613738565b94505060206138e787828801613764565b93505060406138f88782880161362f565b925050606085013567ffffffffffffffff81111561391957613918613334565b5b61392587828801613880565b91505092959194509250565b600067ffffffffffffffff82111561394c5761394b613783565b5b61395582613535565b9050602081019050919050565b600061397561397084613931565b6137e3565b9050828152602081018484840111156139915761399061377e565b5b61399c84828561382f565b509392505050565b600082601f8301126139b9576139b8613779565b5b81356139c9848260208601613962565b91505092915050565b6139db816133f4565b81146139e657600080fd5b50565b6000813590506139f8816139d2565b92915050565b60008060408385031215613a1557613a1461332f565b5b600083013567ffffffffffffffff811115613a3357613a32613334565b5b613a3f858286016139a4565b9250506020613a50858286016139e9565b9150509250929050565b600060208284031215613a7057613a6f61332f565b5b6000613a7e84828501613738565b91505092915050565b613a90816134a3565b82525050565b613a9f8161340b565b82525050565b613aae816132e9565b82525050565b600082825260208201905092915050565b6000613ad0826134ef565b613ada8185613ab4565b9350613aea81856020860161350b565b613af381613535565b840191505092915050565b600060c083016000830151613b166000860182613a87565b506020830151613b296020860182613a87565b506040830151613b3c6040860182613a96565b506060830151613b4f6060860182613aa5565b506080830151613b626080860182613aa5565b5060a083015184820360a0860152613b7a8282613ac5565b9150508091505092915050565b60006020820190508181036000830152613ba18184613afe565b905092915050565b6000613bb4826136d3565b9050919050565b613bc481613ba9565b82525050565b6000602082019050613bdf6000830184613bbb565b92915050565b613bee81613457565b8114613bf957600080fd5b50565b600081519050613c0b81613be5565b92915050565b600060208284031215613c2757613c2661332f565b5b6000613c3584828501613bfc565b91505092915050565b613c47816134a3565b82525050565b6000602082019050613c626000830184613c3e565b92915050565b613c71816133be565b8114613c7c57600080fd5b50565b600081519050613c8e81613c68565b92915050565b600060208284031215613caa57613ca961332f565b5b6000613cb884828501613c7f565b91505092915050565b7f4552524f523a5245472d3030323a414c52454144595f52454749535445524544600082015250565b6000613cf76020836135ac565b9150613d0282613cc1565b602082019050919050565b60006020820190508181036000830152613d2681613cea565b9050919050565b613d3681613339565b82525050565b6000602082019050613d516000830184613d2d565b92915050565b7f4552524f523a5245472d3030333a4e4f545f524547495354455241424c450000600082015250565b6000613d8d601e836135ac565b9150613d9882613d57565b602082019050919050565b60006020820190508181036000830152613dbc81613d80565b9050919050565b600081519050613dd28161374d565b92915050565b600060208284031215613dee57613ded61332f565b5b6000613dfc84828501613dc3565b91505092915050565b7f4552524f523a5245472d3030343a545950455f494e56414c4944000000000000600082015250565b6000613e3b601a836135ac565b9150613e4682613e05565b602082019050919050565b60006020820190508181036000830152613e6a81613e2e565b9050919050565b600081519050613e8081613721565b92915050565b600060208284031215613e9c57613e9b61332f565b5b6000613eaa84828501613e71565b91505092915050565b7f4552524f523a5245472d3030353a504152454e545f4e4f545f5245474953544560008201527f5245440000000000000000000000000000000000000000000000000000000000602082015250565b6000613f0f6023836135ac565b9150613f1a82613eb3565b604082019050919050565b60006020820190508181036000830152613f3e81613f02565b9050919050565b7f4552524f523a5245472d3030363a504152454e545f545950455f494e56414c4960008201527f4400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fa16021836135ac565b9150613fac82613f45565b604082019050919050565b60006020820190508181036000830152613fd081613f94565b9050919050565b600081519050613fe681613618565b92915050565b6000602082840312156140025761400161332f565b5b600061401084828501613fd7565b91505092915050565b600060408201905061402e60008301856132fb565b818103602083015261404081846135bd565b90509392505050565b7f4552524f523a5245472d3030373a4e4f545f5345525649434500000000000000600082015250565b600061407f6019836135ac565b915061408a82614049565b602082019050919050565b600060208201905081810360008301526140ae81614072565b9050919050565b60006140c86140c384613931565b6137e3565b9050828152602081018484840111156140e4576140e361377e565b5b6140ef84828561350b565b509392505050565b600082601f83011261410c5761410b613779565b5b815161411c8482602086016140b5565b91505092915050565b60006020828403121561413b5761413a61332f565b5b600082015167ffffffffffffffff81111561415957614158613334565b5b614165848285016140f7565b91505092915050565b60008151905061417d816139d2565b92915050565b6000602082840312156141995761419861332f565b5b60006141a78482850161416e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806141f757607f821691505b60208210810361420a576142096141b0565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026142727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614235565b61427c8683614235565b95508019841693508086168417925050509392505050565b60006142af6142aa6142a584613457565b613401565b613457565b9050919050565b6000819050919050565b6142c983614294565b6142dd6142d5826142b6565b848454614242565b825550505050565b600090565b6142f26142e5565b6142fd8184846142c0565b505050565b5b81811015614321576143166000826142ea565b600181019050614303565b5050565b601f8211156143665761433781614210565b61434084614225565b8101602085101561434f578190505b61436361435b85614225565b830182614302565b50505b505050565b600082821c905092915050565b60006143896000198460080261436b565b1980831691505092915050565b60006143a28383614378565b9150826002028217905092915050565b6143bb826135a1565b67ffffffffffffffff8111156143d4576143d3613783565b5b6143de82546141df565b6143e9828285614325565b600060209050601f83116001811461441c576000841561440a578287015190505b6144148582614396565b86555061447c565b601f19841661442a86614210565b60005b828110156144525784890151825560018201915060208501945060208101905061442d565b8683101561446f578489015161446b601f891682614378565b8355505b6001600288020188555050505b505050505050565b7f4552524f523a5245472d3030383a414c52454144595f52454749535445524544600082015250565b60006144ba6020836135ac565b91506144c582614484565b602082019050919050565b600060208201905081810360008301526144e9816144ad565b9050919050565b7f4552524f523a5245472d3030313a414c52454144595f494e495449414c495a4560008201527f4400000000000000000000000000000000000000000000000000000000000000602082015250565b600061454c6021836135ac565b9150614557826144f0565b604082019050919050565b6000602082019050818103600083015261457b8161453f565b9050919050565b7f4552524f523a5245472d3031303a545950455f494e56414c4944000000000000600082015250565b60006145b8601a836135ac565b91506145c382614582565b602082019050919050565b600060208201905081810360008301526145e7816145ab565b9050919050565b60008190508160005260206000209050919050565b601f82111561464457614615816145ee565b61461e84614225565b8101602085101561462d578190505b61464161463985614225565b830182614302565b50505b505050565b614652826134ef565b67ffffffffffffffff81111561466b5761466a613783565b5b61467582546141df565b614680828285614603565b600060209050601f8311600181146146b357600084156146a1578287015190505b6146ab8582614396565b865550614713565b601f1984166146c1866145ee565b60005b828110156146e9578489015182556001820191506020850194506020810190506146c4565b868310156147065784890151614702601f891682614378565b8355505b6001600288020188555050505b505050505050565b6147248161348b565b811461472f57600080fd5b50565b6000815190506147418161471b565b92915050565b60006020828403121561475d5761475c61332f565b5b600061476b84828501614732565b91505092915050565b600061478f61478a6147858461348b565b613401565b613457565b9050919050565b61479f81614774565b82525050565b60006020820190506147ba6000830184614796565b92915050565b6147c98161340b565b82525050565b60006020820190506147e460008301846147c0565b92915050565b60006147fd6147f8846137fe565b6137e3565b9050828152602081018484840111156148195761481861377e565b5b61482484828561350b565b509392505050565b600082601f83011261484157614840613779565b5b81516148518482602086016147ea565b91505092915050565b6000602082840312156148705761486f61332f565b5b600082015167ffffffffffffffff81111561488e5761488d613334565b5b61489a8482850161482c565b91505092915050565b60006040820190506148b860008301856132fb565b6148c56020830184613461565b9392505050565b6000819050919050565b60006148f16148ec6148e7846148cc565b613401565b613457565b9050919050565b614901816148d6565b82525050565b600060208201905061491c60008301846148f8565b9291505056fea2646970667358221220bd6f3563e70c851a7043ec07508deb827acc217c75a21d54c90612939eaea97964736f6c63430008140033",
212
412
  "linkReferences": {
213
413
  "contracts/types/NftId.sol": {
214
414
  "NftIdLib": [
215
415
  {
216
416
  "length": 20,
217
- "start": 1373
417
+ "start": 2004
218
418
  },
219
419
  {
220
420
  "length": 20,
221
- "start": 2077
421
+ "start": 5670
222
422
  },
223
423
  {
224
424
  "length": 20,
225
- "start": 3114
425
+ "start": 6806
226
426
  },
227
427
  {
228
428
  "length": 20,
229
- "start": 3399
429
+ "start": 7110
430
+ }
431
+ ]
432
+ },
433
+ "contracts/types/ObjectType.sol": {
434
+ "ObjectTypeLib": [
435
+ {
436
+ "length": 20,
437
+ "start": 7399
230
438
  }
231
439
  ]
232
440
  }
@@ -236,19 +444,27 @@
236
444
  "NftIdLib": [
237
445
  {
238
446
  "length": 20,
239
- "start": 1341
447
+ "start": 1972
240
448
  },
241
449
  {
242
450
  "length": 20,
243
- "start": 2045
451
+ "start": 5638
244
452
  },
245
453
  {
246
454
  "length": 20,
247
- "start": 3082
455
+ "start": 6774
248
456
  },
249
457
  {
250
458
  "length": 20,
251
- "start": 3367
459
+ "start": 7078
460
+ }
461
+ ]
462
+ },
463
+ "contracts/types/ObjectType.sol": {
464
+ "ObjectTypeLib": [
465
+ {
466
+ "length": 20,
467
+ "start": 7367
252
468
  }
253
469
  ]
254
470
  }
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../build-info/7f20a1c1335663e2e20eb70fbac6fce5.json"
4
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "ERC165",
4
+ "sourceName": "contracts/shared/ERC165.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [],
8
+ "stateMutability": "nonpayable",
9
+ "type": "constructor"
10
+ },
11
+ {
12
+ "inputs": [
13
+ {
14
+ "internalType": "bytes4",
15
+ "name": "interfaceId",
16
+ "type": "bytes4"
17
+ }
18
+ ],
19
+ "name": "supportsInterface",
20
+ "outputs": [
21
+ {
22
+ "internalType": "bool",
23
+ "name": "",
24
+ "type": "bool"
25
+ }
26
+ ],
27
+ "stateMutability": "view",
28
+ "type": "function"
29
+ }
30
+ ],
31
+ "bytecode": "0x608060405234801561001057600080fd5b506100407f01ffc9a70000000000000000000000000000000000000000000000000000000061004560201b60201c565b6100b1565b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6101bd806100c06000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806301ffc9a714610030575b600080fd5b61004a60048036038101906100459190610124565b610060565b604051610057919061016c565b60405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610101816100cc565b811461010c57600080fd5b50565b60008135905061011e816100f8565b92915050565b60006020828403121561013a576101396100c7565b5b60006101488482850161010f565b91505092915050565b60008115159050919050565b61016681610151565b82525050565b6000602082019050610181600083018461015d565b9291505056fea26469706673582212204a0423bb8d576d4979378f9c21dcc2ac22bdf8f770c6585910faf96c4b46eb7464736f6c63430008140033",
32
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c806301ffc9a714610030575b600080fd5b61004a60048036038101906100459190610124565b610060565b604051610057919061016c565b60405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610101816100cc565b811461010c57600080fd5b50565b60008135905061011e816100f8565b92915050565b60006020828403121561013a576101396100c7565b5b60006101488482850161010f565b91505092915050565b60008115159050919050565b61016681610151565b82525050565b6000602082019050610181600083018461015d565b9291505056fea26469706673582212204a0423bb8d576d4979378f9c21dcc2ac22bdf8f770c6585910faf96c4b46eb7464736f6c63430008140033",
33
+ "linkReferences": {},
34
+ "deployedLinkReferences": {}
35
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../build-info/7f20a1c1335663e2e20eb70fbac6fce5.json"
4
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "_format": "hh-sol-artifact-1",
3
3
  "contractName": "IOwnable",
4
- "sourceName": "contracts/registry/IRegistry.sol",
4
+ "sourceName": "contracts/shared/IOwnable.sol",
5
5
  "abi": [
6
6
  {
7
7
  "inputs": [],