@etherisc/gif-next 0.0.2-d911522 → 0.0.2-d96b9e1-825

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