@etherisc/gif-next 0.0.2-bb7b80e-316 → 0.0.2-bbb7ced-843

Sign up to get free protection for your applications and to get access to all the features.
Files changed (632) hide show
  1. package/README.md +10 -14
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1378 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +975 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +827 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -143
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +292 -1428
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +393 -194
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +392 -2436
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +630 -351
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +578 -321
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +389 -91
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3598 -0
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  35. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  36. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  38. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
  40. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  41. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +25 -150
  42. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  44. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  45. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  47. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  48. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  49. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  50. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  51. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
  52. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  53. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  54. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  55. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  56. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  57. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  58. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  59. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  60. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  61. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  62. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  63. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  64. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  66. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  67. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +273 -290
  68. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  69. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
  70. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  71. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  72. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  73. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  74. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  75. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  76. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  78. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  79. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  80. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  81. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  82. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  83. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  84. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  85. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  86. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  87. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +211 -235
  88. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  89. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  90. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  91. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +251 -302
  92. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  93. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +270 -220
  94. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  95. package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +438 -229
  96. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  97. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → product/IProductService.sol/IProductService.json} +134 -142
  98. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  99. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  100. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  102. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  103. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  104. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  106. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  107. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  108. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  109. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  110. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  112. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  113. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  114. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  115. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +279 -17
  116. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  117. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +366 -219
  118. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  119. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +92 -0
  120. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  121. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  122. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  123. package/artifacts/contracts/registry/Registry.sol/Registry.json +512 -36
  124. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  125. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1834 -0
  126. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  127. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +538 -281
  128. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +352 -82
  130. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  131. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +990 -233
  132. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  133. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +144 -0
  134. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  135. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +360 -96
  136. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  137. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1492 -0
  138. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  139. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  140. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  141. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
  142. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  143. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
  144. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  145. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
  146. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
  148. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  149. package/artifacts/contracts/{components/Pool.sol/Pool.json → shared/Component.sol/Component.json} +410 -367
  150. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  151. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1511 -0
  152. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
  154. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  155. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +199 -192
  156. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  157. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  158. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  159. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1126 -0
  160. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  162. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  163. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  164. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  165. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IComponent.sol/IComponent.json} +271 -133
  166. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  167. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  168. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  169. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +240 -221
  170. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  171. package/artifacts/contracts/{instance/IInstanceBase.sol/IInstanceBase.json → shared/IKeyValueStore.sol/IKeyValueStore.json} +51 -31
  172. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  173. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  174. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  175. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  176. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  177. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  178. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -35
  180. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  181. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  182. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  183. package/artifacts/contracts/shared/IService.sol/IService.json +84 -159
  184. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  185. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  186. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  187. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  188. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  189. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  190. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  191. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
  192. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  193. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  194. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  195. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  196. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
  198. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  199. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  200. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  201. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +330 -62
  202. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  203. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
  204. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  205. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  206. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  207. package/artifacts/contracts/shared/Service.sol/Service.json +189 -150
  208. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  209. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  210. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  211. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  212. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  214. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  215. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  216. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  217. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  218. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  219. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  220. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  221. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  222. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  223. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  224. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  225. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  226. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  227. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  228. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  230. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2261 -0
  232. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  233. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  234. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  235. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  236. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  237. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  238. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  239. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  240. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  241. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  242. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  243. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  244. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  245. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  246. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  247. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  248. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  250. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  251. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  252. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +186 -0
  254. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  256. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  258. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  260. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  261. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  262. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -0
  264. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  266. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  268. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  270. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  272. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  274. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  276. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  277. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  278. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  279. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  280. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  281. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  282. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  283. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  284. package/contracts/distribution/Distribution.sol +261 -0
  285. package/contracts/distribution/DistributionService.sol +297 -0
  286. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  287. package/contracts/distribution/IDistributionComponent.sol +66 -0
  288. package/contracts/distribution/IDistributionService.sol +81 -0
  289. package/contracts/instance/BundleManager.sol +22 -25
  290. package/contracts/instance/IInstance.sol +75 -48
  291. package/contracts/instance/IInstanceService.sol +77 -20
  292. package/contracts/instance/Instance.sol +186 -185
  293. package/contracts/instance/InstanceAdmin.sol +331 -0
  294. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  295. package/contracts/instance/InstanceReader.sol +160 -83
  296. package/contracts/instance/InstanceService.sol +330 -236
  297. package/contracts/instance/InstanceServiceManager.sol +12 -22
  298. package/contracts/instance/InstanceStore.sol +269 -0
  299. package/contracts/instance/base/BalanceStore.sol +123 -0
  300. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  301. package/contracts/instance/base/ObjectCounter.sol +21 -0
  302. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +16 -37
  303. package/contracts/instance/module/IAccess.sol +19 -21
  304. package/contracts/instance/module/IBundle.sol +8 -8
  305. package/contracts/instance/module/IComponents.sol +52 -0
  306. package/contracts/instance/module/IDistribution.sol +7 -4
  307. package/contracts/instance/module/IPolicy.sol +56 -17
  308. package/contracts/instance/module/IRisk.sol +1 -1
  309. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  310. package/contracts/oracle/IOracle.sol +20 -0
  311. package/contracts/oracle/IOracleComponent.sol +32 -0
  312. package/contracts/oracle/IOracleService.sol +65 -0
  313. package/contracts/oracle/Oracle.sol +145 -0
  314. package/contracts/oracle/OracleService.sol +278 -0
  315. package/contracts/oracle/OracleServiceManager.sol +42 -0
  316. package/contracts/pool/BundleService.sol +296 -0
  317. package/contracts/pool/BundleServiceManager.sol +42 -0
  318. package/contracts/pool/IBundleService.sol +106 -0
  319. package/contracts/pool/IPoolComponent.sol +112 -0
  320. package/contracts/pool/IPoolService.sol +150 -0
  321. package/contracts/pool/Pool.sol +299 -0
  322. package/contracts/pool/PoolService.sol +452 -0
  323. package/contracts/pool/PoolServiceManager.sol +42 -0
  324. package/contracts/product/ApplicationService.sol +254 -0
  325. package/contracts/product/ApplicationServiceManager.sol +38 -0
  326. package/contracts/product/ClaimService.sol +442 -0
  327. package/contracts/product/ClaimServiceManager.sol +38 -0
  328. package/contracts/product/IApplicationService.sol +62 -0
  329. package/contracts/product/IClaimService.sol +99 -0
  330. package/contracts/product/IPolicyService.sol +78 -0
  331. package/contracts/product/IPricingService.sol +39 -0
  332. package/contracts/product/IProductComponent.sol +42 -0
  333. package/contracts/product/IProductService.sol +33 -0
  334. package/contracts/product/PolicyService.sol +475 -0
  335. package/contracts/product/PolicyServiceManager.sol +42 -0
  336. package/contracts/product/PricingService.sol +300 -0
  337. package/contracts/product/PricingServiceManager.sol +42 -0
  338. package/contracts/product/Product.sol +377 -0
  339. package/contracts/product/ProductService.sol +124 -0
  340. package/contracts/product/ProductServiceManager.sol +42 -0
  341. package/contracts/registry/ChainNft.sol +16 -1
  342. package/contracts/registry/IRegistry.sol +56 -23
  343. package/contracts/registry/IRegistryService.sol +45 -34
  344. package/contracts/registry/IServiceAuthorization.sol +28 -0
  345. package/contracts/registry/ITransferInterceptor.sol +1 -0
  346. package/contracts/registry/Registry.sol +300 -120
  347. package/contracts/registry/RegistryAdmin.sol +331 -0
  348. package/contracts/registry/RegistryService.sol +117 -171
  349. package/contracts/registry/RegistryServiceManager.sol +22 -31
  350. package/contracts/registry/ReleaseManager.sol +561 -206
  351. package/contracts/registry/ServiceAuthorizationV3.sol +246 -0
  352. package/contracts/registry/TokenRegistry.sol +263 -58
  353. package/contracts/shared/AccessAdmin.sol +696 -0
  354. package/contracts/shared/AccessManagerCustom.sol +741 -0
  355. package/contracts/shared/AccessManagerExtended.sol +481 -0
  356. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  357. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  358. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  359. package/contracts/shared/Component.sol +281 -0
  360. package/contracts/shared/ComponentService.sol +617 -0
  361. package/contracts/shared/ComponentServiceManager.sol +35 -0
  362. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  363. package/contracts/shared/ERC165.sol +15 -13
  364. package/contracts/shared/IAccessAdmin.sol +146 -0
  365. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  366. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  367. package/contracts/shared/IComponent.sol +70 -0
  368. package/contracts/shared/IComponentService.sol +102 -0
  369. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  370. package/contracts/{instance/base → shared}/IKeyValueStore.sol +15 -11
  371. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
  372. package/contracts/shared/INftOwnable.sol +13 -12
  373. package/contracts/shared/IPolicyHolder.sol +45 -0
  374. package/contracts/shared/IRegisterable.sol +4 -6
  375. package/contracts/shared/IRegistryLinked.sol +11 -0
  376. package/contracts/shared/IService.sol +14 -5
  377. package/contracts/shared/IVersionable.sol +5 -48
  378. package/contracts/shared/InitializableCustom.sol +177 -0
  379. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  380. package/contracts/shared/KeyValueStore.sol +127 -0
  381. package/contracts/{instance/base → shared}/Lifecycle.sol +37 -7
  382. package/contracts/shared/NftIdSetManager.sol +65 -0
  383. package/contracts/shared/NftOwnable.sol +59 -86
  384. package/contracts/shared/PolicyHolder.sol +102 -0
  385. package/contracts/shared/ProxyManager.sol +131 -26
  386. package/contracts/shared/Registerable.sol +26 -41
  387. package/contracts/shared/RegistryLinked.sol +43 -0
  388. package/contracts/shared/Service.sol +57 -32
  389. package/contracts/shared/TokenHandler.sol +37 -6
  390. package/contracts/shared/Versionable.sol +4 -92
  391. package/contracts/staking/IStaking.sol +168 -0
  392. package/contracts/staking/IStakingService.sol +153 -0
  393. package/contracts/staking/StakeManagerLib.sol +231 -0
  394. package/contracts/staking/Staking.sol +513 -0
  395. package/contracts/staking/StakingManager.sol +54 -0
  396. package/contracts/staking/StakingReader.sol +187 -0
  397. package/contracts/staking/StakingService.sol +411 -0
  398. package/contracts/staking/StakingServiceManager.sol +44 -0
  399. package/contracts/staking/StakingStore.sol +613 -0
  400. package/contracts/staking/TargetManagerLib.sol +207 -0
  401. package/contracts/{types → type}/AddressSet.sol +1 -1
  402. package/contracts/type/Amount.sol +128 -0
  403. package/contracts/{types → type}/Blocknumber.sol +21 -3
  404. package/contracts/type/ClaimId.sol +75 -0
  405. package/contracts/{types → type}/DistributorType.sol +2 -2
  406. package/contracts/{types → type}/Fee.sol +33 -23
  407. package/contracts/{types → type}/NftId.sol +21 -15
  408. package/contracts/{types → type}/NftIdSet.sol +2 -2
  409. package/contracts/type/ObjectType.sol +241 -0
  410. package/contracts/type/PayoutId.sol +82 -0
  411. package/contracts/{types → type}/Referral.sol +5 -1
  412. package/contracts/type/RequestId.sol +75 -0
  413. package/contracts/{types → type}/RiskId.sol +1 -1
  414. package/contracts/type/RoleId.sol +201 -0
  415. package/contracts/type/Seconds.sol +81 -0
  416. package/contracts/type/Selector.sol +102 -0
  417. package/contracts/{types → type}/StateId.sol +34 -4
  418. package/contracts/type/String.sol +53 -0
  419. package/contracts/{types → type}/Timestamp.sol +23 -14
  420. package/contracts/{types → type}/UFixed.sol +1 -0
  421. package/contracts/{types → type}/Version.sol +2 -1
  422. package/package.json +5 -5
  423. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  424. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  425. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  426. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  427. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  428. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  429. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  430. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  431. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  432. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  433. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  434. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  435. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  436. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  437. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  438. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  439. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  440. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  441. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  442. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  443. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  444. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  445. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  446. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  447. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  448. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  449. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  450. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  451. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  452. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  453. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  454. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  455. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  456. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  457. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  458. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  459. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  460. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  461. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  462. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  463. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  464. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  465. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  466. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  467. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  468. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  469. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  470. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  471. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  472. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  473. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  474. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  475. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  476. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  477. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  478. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1047
  479. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  480. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  481. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  482. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -285
  483. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  484. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  485. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -100
  486. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  487. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +0 -429
  488. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  489. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  490. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  491. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  492. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  493. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  494. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  495. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  496. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1031
  497. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  498. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -436
  499. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  500. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -693
  501. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  502. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -420
  503. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  504. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  505. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  506. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  507. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  508. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  509. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  510. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1156
  511. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  512. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -492
  513. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  514. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -727
  515. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  516. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -420
  517. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  518. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
  519. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  520. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -420
  521. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  522. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  523. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  524. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  525. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  526. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  527. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  528. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  529. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  530. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  531. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  532. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  533. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  534. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  535. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  536. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  537. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  538. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  539. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  540. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  541. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  542. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  543. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  544. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  545. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  546. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  547. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  548. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  549. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  550. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  551. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  552. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  553. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  554. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  555. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  556. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  557. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  558. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  559. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  560. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  561. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  562. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  563. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  564. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  565. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  566. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  567. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  568. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  569. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  570. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  571. package/contracts/components/BaseComponent.sol +0 -168
  572. package/contracts/components/Distribution.sol +0 -154
  573. package/contracts/components/IBaseComponent.sol +0 -35
  574. package/contracts/components/IDistributionComponent.sol +0 -44
  575. package/contracts/components/IPoolComponent.sol +0 -66
  576. package/contracts/components/IProductComponent.sol +0 -35
  577. package/contracts/components/Pool.sol +0 -258
  578. package/contracts/components/Product.sol +0 -295
  579. package/contracts/experiment/cloning/Cloner.sol +0 -47
  580. package/contracts/experiment/errors/Require.sol +0 -38
  581. package/contracts/experiment/errors/Revert.sol +0 -44
  582. package/contracts/experiment/inheritance/A.sol +0 -53
  583. package/contracts/experiment/inheritance/B.sol +0 -28
  584. package/contracts/experiment/inheritance/C.sol +0 -34
  585. package/contracts/experiment/inheritance/IA.sol +0 -13
  586. package/contracts/experiment/inheritance/IB.sol +0 -10
  587. package/contracts/experiment/inheritance/IC.sol +0 -12
  588. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  589. package/contracts/experiment/statemachine/ISM.sol +0 -25
  590. package/contracts/experiment/statemachine/SM.sol +0 -57
  591. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  592. package/contracts/experiment/types/TypeA.sol +0 -47
  593. package/contracts/experiment/types/TypeB.sol +0 -29
  594. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  595. package/contracts/instance/IInstanceBase.sol +0 -25
  596. package/contracts/instance/InstanceAccessManager.sol +0 -303
  597. package/contracts/instance/InstanceBase.sol +0 -39
  598. package/contracts/instance/base/ComponentServiceBase.sol +0 -76
  599. package/contracts/instance/base/IInstanceBase.sol +0 -21
  600. package/contracts/instance/base/KeyValueStore.sol +0 -172
  601. package/contracts/instance/module/ISetup.sol +0 -46
  602. package/contracts/instance/module/ITreasury.sol +0 -23
  603. package/contracts/instance/service/BundleService.sol +0 -294
  604. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  605. package/contracts/instance/service/DistributionService.sol +0 -120
  606. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  607. package/contracts/instance/service/IBundleService.sol +0 -44
  608. package/contracts/instance/service/IDistributionService.sol +0 -12
  609. package/contracts/instance/service/IPolicyService.sol +0 -94
  610. package/contracts/instance/service/IPoolService.sol +0 -20
  611. package/contracts/instance/service/IProductService.sol +0 -40
  612. package/contracts/instance/service/PolicyService.sol +0 -539
  613. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  614. package/contracts/instance/service/PoolService.sol +0 -145
  615. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  616. package/contracts/instance/service/ProductService.sol +0 -213
  617. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  618. package/contracts/registry/RegistryAccessManager.sol +0 -210
  619. package/contracts/shared/ContractDeployerLib.sol +0 -72
  620. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  621. package/contracts/test/TestFee.sol +0 -25
  622. package/contracts/test/TestRegisterable.sol +0 -18
  623. package/contracts/test/TestRoleId.sol +0 -14
  624. package/contracts/test/TestService.sol +0 -25
  625. package/contracts/test/TestToken.sol +0 -26
  626. package/contracts/test/TestVersion.sol +0 -44
  627. package/contracts/test/TestVersionable.sol +0 -17
  628. package/contracts/types/ChainId.sol +0 -38
  629. package/contracts/types/NumberId.sol +0 -52
  630. package/contracts/types/ObjectType.sol +0 -152
  631. package/contracts/types/RoleId.sol +0 -90
  632. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,1834 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "RegistryAdmin",
4
+ "sourceName": "contracts/registry/RegistryAdmin.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [],
8
+ "stateMutability": "nonpayable",
9
+ "type": "constructor"
10
+ },
11
+ {
12
+ "inputs": [
13
+ {
14
+ "internalType": "address",
15
+ "name": "authority",
16
+ "type": "address"
17
+ }
18
+ ],
19
+ "name": "AccessManagedInvalidAuthority",
20
+ "type": "error"
21
+ },
22
+ {
23
+ "inputs": [
24
+ {
25
+ "internalType": "address",
26
+ "name": "caller",
27
+ "type": "address"
28
+ },
29
+ {
30
+ "internalType": "uint32",
31
+ "name": "delay",
32
+ "type": "uint32"
33
+ }
34
+ ],
35
+ "name": "AccessManagedRequiredDelay",
36
+ "type": "error"
37
+ },
38
+ {
39
+ "inputs": [
40
+ {
41
+ "internalType": "address",
42
+ "name": "caller",
43
+ "type": "address"
44
+ }
45
+ ],
46
+ "name": "AccessManagedUnauthorized",
47
+ "type": "error"
48
+ },
49
+ {
50
+ "inputs": [],
51
+ "name": "ErrorAdminRoleMissing",
52
+ "type": "error"
53
+ },
54
+ {
55
+ "inputs": [],
56
+ "name": "ErrorAuthorityAlreadySet",
57
+ "type": "error"
58
+ },
59
+ {
60
+ "inputs": [
61
+ {
62
+ "internalType": "address",
63
+ "name": "target",
64
+ "type": "address"
65
+ }
66
+ ],
67
+ "name": "ErrorAuthorizeForAdminRoleInvalid",
68
+ "type": "error"
69
+ },
70
+ {
71
+ "inputs": [
72
+ {
73
+ "internalType": "RoleId",
74
+ "name": "adminRoleId",
75
+ "type": "uint64"
76
+ }
77
+ ],
78
+ "name": "ErrorNotAdminOfRole",
79
+ "type": "error"
80
+ },
81
+ {
82
+ "inputs": [],
83
+ "name": "ErrorNotDeployer",
84
+ "type": "error"
85
+ },
86
+ {
87
+ "inputs": [
88
+ {
89
+ "internalType": "RoleId",
90
+ "name": "roleId",
91
+ "type": "uint64"
92
+ }
93
+ ],
94
+ "name": "ErrorNotRoleOwner",
95
+ "type": "error"
96
+ },
97
+ {
98
+ "inputs": [],
99
+ "name": "ErrorRegistryAdminIsAlreadySetUp",
100
+ "type": "error"
101
+ },
102
+ {
103
+ "inputs": [
104
+ {
105
+ "internalType": "RoleId",
106
+ "name": "adminRoleId",
107
+ "type": "uint64"
108
+ }
109
+ ],
110
+ "name": "ErrorRoleAdminNotExisting",
111
+ "type": "error"
112
+ },
113
+ {
114
+ "inputs": [
115
+ {
116
+ "internalType": "RoleId",
117
+ "name": "roleId",
118
+ "type": "uint64"
119
+ },
120
+ {
121
+ "internalType": "string",
122
+ "name": "name",
123
+ "type": "string"
124
+ }
125
+ ],
126
+ "name": "ErrorRoleAlreadyCreated",
127
+ "type": "error"
128
+ },
129
+ {
130
+ "inputs": [
131
+ {
132
+ "internalType": "RoleId",
133
+ "name": "roleId",
134
+ "type": "uint64"
135
+ }
136
+ ],
137
+ "name": "ErrorRoleIsDisabled",
138
+ "type": "error"
139
+ },
140
+ {
141
+ "inputs": [
142
+ {
143
+ "internalType": "RoleId",
144
+ "name": "roleId",
145
+ "type": "uint64"
146
+ }
147
+ ],
148
+ "name": "ErrorRoleIsLocked",
149
+ "type": "error"
150
+ },
151
+ {
152
+ "inputs": [
153
+ {
154
+ "internalType": "RoleId",
155
+ "name": "roleId",
156
+ "type": "uint64"
157
+ },
158
+ {
159
+ "internalType": "string",
160
+ "name": "name",
161
+ "type": "string"
162
+ },
163
+ {
164
+ "internalType": "RoleId",
165
+ "name": "existingRoleId",
166
+ "type": "uint64"
167
+ }
168
+ ],
169
+ "name": "ErrorRoleNameAlreadyExists",
170
+ "type": "error"
171
+ },
172
+ {
173
+ "inputs": [
174
+ {
175
+ "internalType": "RoleId",
176
+ "name": "roleId",
177
+ "type": "uint64"
178
+ }
179
+ ],
180
+ "name": "ErrorRoleNameEmpty",
181
+ "type": "error"
182
+ },
183
+ {
184
+ "inputs": [
185
+ {
186
+ "internalType": "RoleId",
187
+ "name": "roleId",
188
+ "type": "uint64"
189
+ }
190
+ ],
191
+ "name": "ErrorRoleUnknown",
192
+ "type": "error"
193
+ },
194
+ {
195
+ "inputs": [
196
+ {
197
+ "internalType": "address",
198
+ "name": "target",
199
+ "type": "address"
200
+ },
201
+ {
202
+ "internalType": "string",
203
+ "name": "name",
204
+ "type": "string"
205
+ }
206
+ ],
207
+ "name": "ErrorTargetAlreadyCreated",
208
+ "type": "error"
209
+ },
210
+ {
211
+ "inputs": [
212
+ {
213
+ "internalType": "address",
214
+ "name": "expectedAuthority",
215
+ "type": "address"
216
+ },
217
+ {
218
+ "internalType": "address",
219
+ "name": "actualAuthority",
220
+ "type": "address"
221
+ }
222
+ ],
223
+ "name": "ErrorTargetAuthorityMismatch",
224
+ "type": "error"
225
+ },
226
+ {
227
+ "inputs": [
228
+ {
229
+ "internalType": "address",
230
+ "name": "target",
231
+ "type": "address"
232
+ },
233
+ {
234
+ "internalType": "string",
235
+ "name": "name",
236
+ "type": "string"
237
+ },
238
+ {
239
+ "internalType": "address",
240
+ "name": "existingTarget",
241
+ "type": "address"
242
+ }
243
+ ],
244
+ "name": "ErrorTargetNameAlreadyExists",
245
+ "type": "error"
246
+ },
247
+ {
248
+ "inputs": [
249
+ {
250
+ "internalType": "address",
251
+ "name": "target",
252
+ "type": "address"
253
+ }
254
+ ],
255
+ "name": "ErrorTargetNameEmpty",
256
+ "type": "error"
257
+ },
258
+ {
259
+ "inputs": [
260
+ {
261
+ "internalType": "address",
262
+ "name": "target",
263
+ "type": "address"
264
+ }
265
+ ],
266
+ "name": "ErrorTargetNotAccessManaged",
267
+ "type": "error"
268
+ },
269
+ {
270
+ "inputs": [],
271
+ "name": "InvalidInitialization",
272
+ "type": "error"
273
+ },
274
+ {
275
+ "inputs": [],
276
+ "name": "NotInitializing",
277
+ "type": "error"
278
+ },
279
+ {
280
+ "anonymous": false,
281
+ "inputs": [
282
+ {
283
+ "indexed": false,
284
+ "internalType": "address",
285
+ "name": "authority",
286
+ "type": "address"
287
+ }
288
+ ],
289
+ "name": "AuthorityUpdated",
290
+ "type": "event"
291
+ },
292
+ {
293
+ "anonymous": false,
294
+ "inputs": [
295
+ {
296
+ "indexed": false,
297
+ "internalType": "uint64",
298
+ "name": "version",
299
+ "type": "uint64"
300
+ }
301
+ ],
302
+ "name": "Initialized",
303
+ "type": "event"
304
+ },
305
+ {
306
+ "anonymous": false,
307
+ "inputs": [
308
+ {
309
+ "indexed": false,
310
+ "internalType": "address",
311
+ "name": "target",
312
+ "type": "address"
313
+ },
314
+ {
315
+ "indexed": false,
316
+ "internalType": "Selector",
317
+ "name": "selector",
318
+ "type": "bytes4"
319
+ },
320
+ {
321
+ "indexed": false,
322
+ "internalType": "string",
323
+ "name": "name",
324
+ "type": "string"
325
+ }
326
+ ],
327
+ "name": "LogFunctionCreated",
328
+ "type": "event"
329
+ },
330
+ {
331
+ "anonymous": false,
332
+ "inputs": [
333
+ {
334
+ "indexed": false,
335
+ "internalType": "RoleId",
336
+ "name": "roleId",
337
+ "type": "uint64"
338
+ },
339
+ {
340
+ "indexed": false,
341
+ "internalType": "RoleId",
342
+ "name": "roleAdminId",
343
+ "type": "uint64"
344
+ },
345
+ {
346
+ "indexed": false,
347
+ "internalType": "string",
348
+ "name": "name",
349
+ "type": "string"
350
+ }
351
+ ],
352
+ "name": "LogRoleCreated",
353
+ "type": "event"
354
+ },
355
+ {
356
+ "anonymous": false,
357
+ "inputs": [
358
+ {
359
+ "indexed": false,
360
+ "internalType": "RoleId",
361
+ "name": "roleId",
362
+ "type": "uint64"
363
+ },
364
+ {
365
+ "indexed": false,
366
+ "internalType": "bool",
367
+ "name": "disabled",
368
+ "type": "bool"
369
+ },
370
+ {
371
+ "indexed": false,
372
+ "internalType": "Timestamp",
373
+ "name": "disabledAtOld",
374
+ "type": "uint40"
375
+ }
376
+ ],
377
+ "name": "LogRoleDisabled",
378
+ "type": "event"
379
+ },
380
+ {
381
+ "anonymous": false,
382
+ "inputs": [
383
+ {
384
+ "indexed": false,
385
+ "internalType": "address",
386
+ "name": "target",
387
+ "type": "address"
388
+ },
389
+ {
390
+ "indexed": false,
391
+ "internalType": "string",
392
+ "name": "name",
393
+ "type": "string"
394
+ }
395
+ ],
396
+ "name": "LogTargetCreated",
397
+ "type": "event"
398
+ },
399
+ {
400
+ "inputs": [],
401
+ "name": "ADMIN_ROLE_NAME",
402
+ "outputs": [
403
+ {
404
+ "internalType": "string",
405
+ "name": "",
406
+ "type": "string"
407
+ }
408
+ ],
409
+ "stateMutability": "view",
410
+ "type": "function"
411
+ },
412
+ {
413
+ "inputs": [],
414
+ "name": "GIF_ADMIN_ROLE_NAME",
415
+ "outputs": [
416
+ {
417
+ "internalType": "string",
418
+ "name": "",
419
+ "type": "string"
420
+ }
421
+ ],
422
+ "stateMutability": "view",
423
+ "type": "function"
424
+ },
425
+ {
426
+ "inputs": [],
427
+ "name": "GIF_MANAGER_ROLE_NAME",
428
+ "outputs": [
429
+ {
430
+ "internalType": "string",
431
+ "name": "",
432
+ "type": "string"
433
+ }
434
+ ],
435
+ "stateMutability": "view",
436
+ "type": "function"
437
+ },
438
+ {
439
+ "inputs": [],
440
+ "name": "MANAGER_ROLE",
441
+ "outputs": [
442
+ {
443
+ "internalType": "uint64",
444
+ "name": "",
445
+ "type": "uint64"
446
+ }
447
+ ],
448
+ "stateMutability": "view",
449
+ "type": "function"
450
+ },
451
+ {
452
+ "inputs": [],
453
+ "name": "MANAGER_ROLE_NAME",
454
+ "outputs": [
455
+ {
456
+ "internalType": "string",
457
+ "name": "",
458
+ "type": "string"
459
+ }
460
+ ],
461
+ "stateMutability": "view",
462
+ "type": "function"
463
+ },
464
+ {
465
+ "inputs": [],
466
+ "name": "POOL_SERVICE_ROLE_NAME",
467
+ "outputs": [
468
+ {
469
+ "internalType": "string",
470
+ "name": "",
471
+ "type": "string"
472
+ }
473
+ ],
474
+ "stateMutability": "view",
475
+ "type": "function"
476
+ },
477
+ {
478
+ "inputs": [],
479
+ "name": "PUBLIC_ROLE_NAME",
480
+ "outputs": [
481
+ {
482
+ "internalType": "string",
483
+ "name": "",
484
+ "type": "string"
485
+ }
486
+ ],
487
+ "stateMutability": "view",
488
+ "type": "function"
489
+ },
490
+ {
491
+ "inputs": [],
492
+ "name": "RELEASE_MANAGER_TARGET_NAME",
493
+ "outputs": [
494
+ {
495
+ "internalType": "string",
496
+ "name": "",
497
+ "type": "string"
498
+ }
499
+ ],
500
+ "stateMutability": "view",
501
+ "type": "function"
502
+ },
503
+ {
504
+ "inputs": [],
505
+ "name": "STAKING_SERVICE_ROLE_NAME",
506
+ "outputs": [
507
+ {
508
+ "internalType": "string",
509
+ "name": "",
510
+ "type": "string"
511
+ }
512
+ ],
513
+ "stateMutability": "view",
514
+ "type": "function"
515
+ },
516
+ {
517
+ "inputs": [],
518
+ "name": "STAKING_STORE_TARGET_NAME",
519
+ "outputs": [
520
+ {
521
+ "internalType": "string",
522
+ "name": "",
523
+ "type": "string"
524
+ }
525
+ ],
526
+ "stateMutability": "view",
527
+ "type": "function"
528
+ },
529
+ {
530
+ "inputs": [],
531
+ "name": "STAKING_TARGET_NAME",
532
+ "outputs": [
533
+ {
534
+ "internalType": "string",
535
+ "name": "",
536
+ "type": "string"
537
+ }
538
+ ],
539
+ "stateMutability": "view",
540
+ "type": "function"
541
+ },
542
+ {
543
+ "inputs": [],
544
+ "name": "TOKEN_REGISTRY_TARGET_NAME",
545
+ "outputs": [
546
+ {
547
+ "internalType": "string",
548
+ "name": "",
549
+ "type": "string"
550
+ }
551
+ ],
552
+ "stateMutability": "view",
553
+ "type": "function"
554
+ },
555
+ {
556
+ "inputs": [],
557
+ "name": "authority",
558
+ "outputs": [
559
+ {
560
+ "internalType": "address",
561
+ "name": "",
562
+ "type": "address"
563
+ }
564
+ ],
565
+ "stateMutability": "view",
566
+ "type": "function"
567
+ },
568
+ {
569
+ "inputs": [
570
+ {
571
+ "internalType": "address",
572
+ "name": "target",
573
+ "type": "address"
574
+ },
575
+ {
576
+ "internalType": "RoleId",
577
+ "name": "roleId",
578
+ "type": "uint64"
579
+ },
580
+ {
581
+ "components": [
582
+ {
583
+ "internalType": "Selector",
584
+ "name": "selector",
585
+ "type": "bytes4"
586
+ },
587
+ {
588
+ "internalType": "Str",
589
+ "name": "name",
590
+ "type": "bytes32"
591
+ }
592
+ ],
593
+ "internalType": "struct IAccessAdmin.Function[]",
594
+ "name": "functions",
595
+ "type": "tuple[]"
596
+ }
597
+ ],
598
+ "name": "authorizeFunctions",
599
+ "outputs": [],
600
+ "stateMutability": "nonpayable",
601
+ "type": "function"
602
+ },
603
+ {
604
+ "inputs": [
605
+ {
606
+ "internalType": "contract IServiceAuthorization",
607
+ "name": "serviceAuthorization",
608
+ "type": "address"
609
+ },
610
+ {
611
+ "internalType": "contract IService",
612
+ "name": "service",
613
+ "type": "address"
614
+ }
615
+ ],
616
+ "name": "authorizeService",
617
+ "outputs": [],
618
+ "stateMutability": "nonpayable",
619
+ "type": "function"
620
+ },
621
+ {
622
+ "inputs": [
623
+ {
624
+ "internalType": "address",
625
+ "name": "target",
626
+ "type": "address"
627
+ }
628
+ ],
629
+ "name": "authorizedFunctions",
630
+ "outputs": [
631
+ {
632
+ "internalType": "uint256",
633
+ "name": "numberOfFunctions",
634
+ "type": "uint256"
635
+ }
636
+ ],
637
+ "stateMutability": "view",
638
+ "type": "function"
639
+ },
640
+ {
641
+ "inputs": [
642
+ {
643
+ "internalType": "address",
644
+ "name": "caller",
645
+ "type": "address"
646
+ },
647
+ {
648
+ "internalType": "address",
649
+ "name": "target",
650
+ "type": "address"
651
+ },
652
+ {
653
+ "internalType": "Selector",
654
+ "name": "selector",
655
+ "type": "bytes4"
656
+ }
657
+ ],
658
+ "name": "canCall",
659
+ "outputs": [
660
+ {
661
+ "internalType": "bool",
662
+ "name": "can",
663
+ "type": "bool"
664
+ }
665
+ ],
666
+ "stateMutability": "view",
667
+ "type": "function"
668
+ },
669
+ {
670
+ "inputs": [
671
+ {
672
+ "internalType": "contract IRegistry",
673
+ "name": "registry",
674
+ "type": "address"
675
+ },
676
+ {
677
+ "internalType": "address",
678
+ "name": "gifAdmin",
679
+ "type": "address"
680
+ },
681
+ {
682
+ "internalType": "address",
683
+ "name": "gifManager",
684
+ "type": "address"
685
+ }
686
+ ],
687
+ "name": "completeSetup",
688
+ "outputs": [],
689
+ "stateMutability": "nonpayable",
690
+ "type": "function"
691
+ },
692
+ {
693
+ "inputs": [
694
+ {
695
+ "internalType": "RoleId",
696
+ "name": "roleId",
697
+ "type": "uint64"
698
+ },
699
+ {
700
+ "internalType": "RoleId",
701
+ "name": "adminRoleId",
702
+ "type": "uint64"
703
+ },
704
+ {
705
+ "internalType": "string",
706
+ "name": "name",
707
+ "type": "string"
708
+ }
709
+ ],
710
+ "name": "createRole",
711
+ "outputs": [],
712
+ "stateMutability": "nonpayable",
713
+ "type": "function"
714
+ },
715
+ {
716
+ "inputs": [
717
+ {
718
+ "internalType": "address",
719
+ "name": "target",
720
+ "type": "address"
721
+ },
722
+ {
723
+ "internalType": "string",
724
+ "name": "name",
725
+ "type": "string"
726
+ }
727
+ ],
728
+ "name": "createTarget",
729
+ "outputs": [],
730
+ "stateMutability": "nonpayable",
731
+ "type": "function"
732
+ },
733
+ {
734
+ "inputs": [],
735
+ "name": "deployer",
736
+ "outputs": [
737
+ {
738
+ "internalType": "address",
739
+ "name": "",
740
+ "type": "address"
741
+ }
742
+ ],
743
+ "stateMutability": "view",
744
+ "type": "function"
745
+ },
746
+ {
747
+ "inputs": [],
748
+ "name": "getAdminRole",
749
+ "outputs": [
750
+ {
751
+ "internalType": "RoleId",
752
+ "name": "roleId",
753
+ "type": "uint64"
754
+ }
755
+ ],
756
+ "stateMutability": "view",
757
+ "type": "function"
758
+ },
759
+ {
760
+ "inputs": [
761
+ {
762
+ "internalType": "address",
763
+ "name": "target",
764
+ "type": "address"
765
+ },
766
+ {
767
+ "internalType": "uint256",
768
+ "name": "idx",
769
+ "type": "uint256"
770
+ }
771
+ ],
772
+ "name": "getAuthorizedFunction",
773
+ "outputs": [
774
+ {
775
+ "components": [
776
+ {
777
+ "internalType": "Selector",
778
+ "name": "selector",
779
+ "type": "bytes4"
780
+ },
781
+ {
782
+ "internalType": "Str",
783
+ "name": "name",
784
+ "type": "bytes32"
785
+ }
786
+ ],
787
+ "internalType": "struct IAccessAdmin.Function",
788
+ "name": "func",
789
+ "type": "tuple"
790
+ },
791
+ {
792
+ "internalType": "RoleId",
793
+ "name": "roleId",
794
+ "type": "uint64"
795
+ }
796
+ ],
797
+ "stateMutability": "view",
798
+ "type": "function"
799
+ },
800
+ {
801
+ "inputs": [],
802
+ "name": "getGifAdminRole",
803
+ "outputs": [
804
+ {
805
+ "internalType": "RoleId",
806
+ "name": "",
807
+ "type": "uint64"
808
+ }
809
+ ],
810
+ "stateMutability": "view",
811
+ "type": "function"
812
+ },
813
+ {
814
+ "inputs": [],
815
+ "name": "getGifManagerRole",
816
+ "outputs": [
817
+ {
818
+ "internalType": "RoleId",
819
+ "name": "",
820
+ "type": "uint64"
821
+ }
822
+ ],
823
+ "stateMutability": "view",
824
+ "type": "function"
825
+ },
826
+ {
827
+ "inputs": [],
828
+ "name": "getManagerRole",
829
+ "outputs": [
830
+ {
831
+ "internalType": "RoleId",
832
+ "name": "roleId",
833
+ "type": "uint64"
834
+ }
835
+ ],
836
+ "stateMutability": "view",
837
+ "type": "function"
838
+ },
839
+ {
840
+ "inputs": [],
841
+ "name": "getPublicRole",
842
+ "outputs": [
843
+ {
844
+ "internalType": "RoleId",
845
+ "name": "roleId",
846
+ "type": "uint64"
847
+ }
848
+ ],
849
+ "stateMutability": "view",
850
+ "type": "function"
851
+ },
852
+ {
853
+ "inputs": [
854
+ {
855
+ "internalType": "Str",
856
+ "name": "name",
857
+ "type": "bytes32"
858
+ }
859
+ ],
860
+ "name": "getRoleForName",
861
+ "outputs": [
862
+ {
863
+ "components": [
864
+ {
865
+ "internalType": "RoleId",
866
+ "name": "roleId",
867
+ "type": "uint64"
868
+ },
869
+ {
870
+ "internalType": "bool",
871
+ "name": "exists",
872
+ "type": "bool"
873
+ }
874
+ ],
875
+ "internalType": "struct IAccessAdmin.RoleNameInfo",
876
+ "name": "",
877
+ "type": "tuple"
878
+ }
879
+ ],
880
+ "stateMutability": "view",
881
+ "type": "function"
882
+ },
883
+ {
884
+ "inputs": [
885
+ {
886
+ "internalType": "uint256",
887
+ "name": "idx",
888
+ "type": "uint256"
889
+ }
890
+ ],
891
+ "name": "getRoleId",
892
+ "outputs": [
893
+ {
894
+ "internalType": "RoleId",
895
+ "name": "roleId",
896
+ "type": "uint64"
897
+ }
898
+ ],
899
+ "stateMutability": "view",
900
+ "type": "function"
901
+ },
902
+ {
903
+ "inputs": [
904
+ {
905
+ "internalType": "RoleId",
906
+ "name": "roleId",
907
+ "type": "uint64"
908
+ }
909
+ ],
910
+ "name": "getRoleInfo",
911
+ "outputs": [
912
+ {
913
+ "components": [
914
+ {
915
+ "internalType": "RoleId",
916
+ "name": "adminRoleId",
917
+ "type": "uint64"
918
+ },
919
+ {
920
+ "internalType": "Str",
921
+ "name": "name",
922
+ "type": "bytes32"
923
+ },
924
+ {
925
+ "internalType": "Timestamp",
926
+ "name": "disabledAt",
927
+ "type": "uint40"
928
+ },
929
+ {
930
+ "internalType": "bool",
931
+ "name": "exists",
932
+ "type": "bool"
933
+ }
934
+ ],
935
+ "internalType": "struct IAccessAdmin.RoleInfo",
936
+ "name": "",
937
+ "type": "tuple"
938
+ }
939
+ ],
940
+ "stateMutability": "view",
941
+ "type": "function"
942
+ },
943
+ {
944
+ "inputs": [
945
+ {
946
+ "internalType": "RoleId",
947
+ "name": "roleId",
948
+ "type": "uint64"
949
+ },
950
+ {
951
+ "internalType": "uint256",
952
+ "name": "idx",
953
+ "type": "uint256"
954
+ }
955
+ ],
956
+ "name": "getRoleMember",
957
+ "outputs": [
958
+ {
959
+ "internalType": "address",
960
+ "name": "account",
961
+ "type": "address"
962
+ }
963
+ ],
964
+ "stateMutability": "view",
965
+ "type": "function"
966
+ },
967
+ {
968
+ "inputs": [
969
+ {
970
+ "internalType": "uint256",
971
+ "name": "idx",
972
+ "type": "uint256"
973
+ }
974
+ ],
975
+ "name": "getTargetAddress",
976
+ "outputs": [
977
+ {
978
+ "internalType": "address",
979
+ "name": "target",
980
+ "type": "address"
981
+ }
982
+ ],
983
+ "stateMutability": "view",
984
+ "type": "function"
985
+ },
986
+ {
987
+ "inputs": [
988
+ {
989
+ "internalType": "Str",
990
+ "name": "name",
991
+ "type": "bytes32"
992
+ }
993
+ ],
994
+ "name": "getTargetForName",
995
+ "outputs": [
996
+ {
997
+ "internalType": "address",
998
+ "name": "target",
999
+ "type": "address"
1000
+ }
1001
+ ],
1002
+ "stateMutability": "view",
1003
+ "type": "function"
1004
+ },
1005
+ {
1006
+ "inputs": [
1007
+ {
1008
+ "internalType": "address",
1009
+ "name": "target",
1010
+ "type": "address"
1011
+ }
1012
+ ],
1013
+ "name": "getTargetInfo",
1014
+ "outputs": [
1015
+ {
1016
+ "components": [
1017
+ {
1018
+ "internalType": "Str",
1019
+ "name": "name",
1020
+ "type": "bytes32"
1021
+ },
1022
+ {
1023
+ "internalType": "Timestamp",
1024
+ "name": "createdAt",
1025
+ "type": "uint40"
1026
+ }
1027
+ ],
1028
+ "internalType": "struct IAccessAdmin.TargetInfo",
1029
+ "name": "targetInfo",
1030
+ "type": "tuple"
1031
+ }
1032
+ ],
1033
+ "stateMutability": "view",
1034
+ "type": "function"
1035
+ },
1036
+ {
1037
+ "inputs": [
1038
+ {
1039
+ "internalType": "address",
1040
+ "name": "account",
1041
+ "type": "address"
1042
+ },
1043
+ {
1044
+ "internalType": "RoleId",
1045
+ "name": "roleId",
1046
+ "type": "uint64"
1047
+ }
1048
+ ],
1049
+ "name": "grantRole",
1050
+ "outputs": [],
1051
+ "stateMutability": "nonpayable",
1052
+ "type": "function"
1053
+ },
1054
+ {
1055
+ "inputs": [
1056
+ {
1057
+ "internalType": "contract IService",
1058
+ "name": "service",
1059
+ "type": "address"
1060
+ },
1061
+ {
1062
+ "internalType": "ObjectType",
1063
+ "name": "domain",
1064
+ "type": "uint8"
1065
+ }
1066
+ ],
1067
+ "name": "grantServiceRoleForAllVersions",
1068
+ "outputs": [],
1069
+ "stateMutability": "nonpayable",
1070
+ "type": "function"
1071
+ },
1072
+ {
1073
+ "inputs": [
1074
+ {
1075
+ "internalType": "address",
1076
+ "name": "account",
1077
+ "type": "address"
1078
+ },
1079
+ {
1080
+ "internalType": "RoleId",
1081
+ "name": "roleId",
1082
+ "type": "uint64"
1083
+ }
1084
+ ],
1085
+ "name": "hasRole",
1086
+ "outputs": [
1087
+ {
1088
+ "internalType": "bool",
1089
+ "name": "",
1090
+ "type": "bool"
1091
+ }
1092
+ ],
1093
+ "stateMutability": "view",
1094
+ "type": "function"
1095
+ },
1096
+ {
1097
+ "inputs": [
1098
+ {
1099
+ "internalType": "address",
1100
+ "name": "target",
1101
+ "type": "address"
1102
+ }
1103
+ ],
1104
+ "name": "isAccessManaged",
1105
+ "outputs": [
1106
+ {
1107
+ "internalType": "bool",
1108
+ "name": "",
1109
+ "type": "bool"
1110
+ }
1111
+ ],
1112
+ "stateMutability": "view",
1113
+ "type": "function"
1114
+ },
1115
+ {
1116
+ "inputs": [],
1117
+ "name": "isConsumingScheduledOp",
1118
+ "outputs": [
1119
+ {
1120
+ "internalType": "bytes4",
1121
+ "name": "",
1122
+ "type": "bytes4"
1123
+ }
1124
+ ],
1125
+ "stateMutability": "view",
1126
+ "type": "function"
1127
+ },
1128
+ {
1129
+ "inputs": [
1130
+ {
1131
+ "internalType": "RoleId",
1132
+ "name": "roleId",
1133
+ "type": "uint64"
1134
+ }
1135
+ ],
1136
+ "name": "isRoleDisabled",
1137
+ "outputs": [
1138
+ {
1139
+ "internalType": "bool",
1140
+ "name": "isActive",
1141
+ "type": "bool"
1142
+ }
1143
+ ],
1144
+ "stateMutability": "view",
1145
+ "type": "function"
1146
+ },
1147
+ {
1148
+ "inputs": [
1149
+ {
1150
+ "internalType": "address",
1151
+ "name": "target",
1152
+ "type": "address"
1153
+ }
1154
+ ],
1155
+ "name": "isTargetLocked",
1156
+ "outputs": [
1157
+ {
1158
+ "internalType": "bool",
1159
+ "name": "locked",
1160
+ "type": "bool"
1161
+ }
1162
+ ],
1163
+ "stateMutability": "view",
1164
+ "type": "function"
1165
+ },
1166
+ {
1167
+ "inputs": [
1168
+ {
1169
+ "internalType": "RoleId",
1170
+ "name": "roleId",
1171
+ "type": "uint64"
1172
+ }
1173
+ ],
1174
+ "name": "renounceRole",
1175
+ "outputs": [],
1176
+ "stateMutability": "nonpayable",
1177
+ "type": "function"
1178
+ },
1179
+ {
1180
+ "inputs": [
1181
+ {
1182
+ "internalType": "address",
1183
+ "name": "account",
1184
+ "type": "address"
1185
+ },
1186
+ {
1187
+ "internalType": "RoleId",
1188
+ "name": "roleId",
1189
+ "type": "uint64"
1190
+ }
1191
+ ],
1192
+ "name": "revokeRole",
1193
+ "outputs": [],
1194
+ "stateMutability": "nonpayable",
1195
+ "type": "function"
1196
+ },
1197
+ {
1198
+ "inputs": [
1199
+ {
1200
+ "internalType": "RoleId",
1201
+ "name": "roleId",
1202
+ "type": "uint64"
1203
+ }
1204
+ ],
1205
+ "name": "roleExists",
1206
+ "outputs": [
1207
+ {
1208
+ "internalType": "bool",
1209
+ "name": "exists",
1210
+ "type": "bool"
1211
+ }
1212
+ ],
1213
+ "stateMutability": "view",
1214
+ "type": "function"
1215
+ },
1216
+ {
1217
+ "inputs": [
1218
+ {
1219
+ "internalType": "RoleId",
1220
+ "name": "roleId",
1221
+ "type": "uint64"
1222
+ }
1223
+ ],
1224
+ "name": "roleMembers",
1225
+ "outputs": [
1226
+ {
1227
+ "internalType": "uint256",
1228
+ "name": "numberOfMembers",
1229
+ "type": "uint256"
1230
+ }
1231
+ ],
1232
+ "stateMutability": "view",
1233
+ "type": "function"
1234
+ },
1235
+ {
1236
+ "inputs": [],
1237
+ "name": "roles",
1238
+ "outputs": [
1239
+ {
1240
+ "internalType": "uint256",
1241
+ "name": "numberOfRoles",
1242
+ "type": "uint256"
1243
+ }
1244
+ ],
1245
+ "stateMutability": "view",
1246
+ "type": "function"
1247
+ },
1248
+ {
1249
+ "inputs": [
1250
+ {
1251
+ "internalType": "address",
1252
+ "name": "newAuthority",
1253
+ "type": "address"
1254
+ }
1255
+ ],
1256
+ "name": "setAuthority",
1257
+ "outputs": [],
1258
+ "stateMutability": "nonpayable",
1259
+ "type": "function"
1260
+ },
1261
+ {
1262
+ "inputs": [
1263
+ {
1264
+ "internalType": "RoleId",
1265
+ "name": "roleId",
1266
+ "type": "uint64"
1267
+ },
1268
+ {
1269
+ "internalType": "bool",
1270
+ "name": "disabled",
1271
+ "type": "bool"
1272
+ }
1273
+ ],
1274
+ "name": "setRoleDisabled",
1275
+ "outputs": [],
1276
+ "stateMutability": "nonpayable",
1277
+ "type": "function"
1278
+ },
1279
+ {
1280
+ "inputs": [
1281
+ {
1282
+ "internalType": "address",
1283
+ "name": "target",
1284
+ "type": "address"
1285
+ },
1286
+ {
1287
+ "internalType": "bool",
1288
+ "name": "locked",
1289
+ "type": "bool"
1290
+ }
1291
+ ],
1292
+ "name": "setTargetLocked",
1293
+ "outputs": [],
1294
+ "stateMutability": "nonpayable",
1295
+ "type": "function"
1296
+ },
1297
+ {
1298
+ "inputs": [
1299
+ {
1300
+ "internalType": "address",
1301
+ "name": "target",
1302
+ "type": "address"
1303
+ }
1304
+ ],
1305
+ "name": "targetExists",
1306
+ "outputs": [
1307
+ {
1308
+ "internalType": "bool",
1309
+ "name": "exists",
1310
+ "type": "bool"
1311
+ }
1312
+ ],
1313
+ "stateMutability": "view",
1314
+ "type": "function"
1315
+ },
1316
+ {
1317
+ "inputs": [],
1318
+ "name": "targets",
1319
+ "outputs": [
1320
+ {
1321
+ "internalType": "uint256",
1322
+ "name": "numberOfTargets",
1323
+ "type": "uint256"
1324
+ }
1325
+ ],
1326
+ "stateMutability": "view",
1327
+ "type": "function"
1328
+ },
1329
+ {
1330
+ "inputs": [
1331
+ {
1332
+ "internalType": "bytes4",
1333
+ "name": "selector",
1334
+ "type": "bytes4"
1335
+ },
1336
+ {
1337
+ "internalType": "string",
1338
+ "name": "name",
1339
+ "type": "string"
1340
+ }
1341
+ ],
1342
+ "name": "toFunction",
1343
+ "outputs": [
1344
+ {
1345
+ "components": [
1346
+ {
1347
+ "internalType": "Selector",
1348
+ "name": "selector",
1349
+ "type": "bytes4"
1350
+ },
1351
+ {
1352
+ "internalType": "Str",
1353
+ "name": "name",
1354
+ "type": "bytes32"
1355
+ }
1356
+ ],
1357
+ "internalType": "struct IAccessAdmin.Function",
1358
+ "name": "",
1359
+ "type": "tuple"
1360
+ }
1361
+ ],
1362
+ "stateMutability": "pure",
1363
+ "type": "function"
1364
+ },
1365
+ {
1366
+ "inputs": [
1367
+ {
1368
+ "internalType": "address",
1369
+ "name": "target",
1370
+ "type": "address"
1371
+ },
1372
+ {
1373
+ "components": [
1374
+ {
1375
+ "internalType": "Selector",
1376
+ "name": "selector",
1377
+ "type": "bytes4"
1378
+ },
1379
+ {
1380
+ "internalType": "Str",
1381
+ "name": "name",
1382
+ "type": "bytes32"
1383
+ }
1384
+ ],
1385
+ "internalType": "struct IAccessAdmin.Function[]",
1386
+ "name": "functions",
1387
+ "type": "tuple[]"
1388
+ }
1389
+ ],
1390
+ "name": "unauthorizeFunctions",
1391
+ "outputs": [],
1392
+ "stateMutability": "nonpayable",
1393
+ "type": "function"
1394
+ }
1395
+ ],
1396
+ "bytecode": "0x60806040523480156200001157600080fd5b50600180546001600160a01b0319163317905560405130906200003490620018bb565b6001600160a01b039091168152602001604051809103906000f08015801562000061573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b039290921691821790556200008c90620000a6565b6200009662000119565b620000a062000972565b62001c3c565b7ff3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a0080546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b600073__$1d92393fa9ccd763988368ce8a1cb90d26$__6368aebf7b60008054906101000a90046001600160a01b03166001600160a01b03166375b238fc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000187573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ad9190620018df565b6040516001600160e01b031960e084901b1681526001600160401b039091166004820152602401602060405180830381865af4158015620001f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002189190620018df565b90506060620002c6828373__$9a094f9b231ed0f5f85a69be8408d93180$__63cdc23e696040518060400160405280600981526020016841646d696e526f6c6560b81b8152506040518263ffffffff1660e01b81526004016200027c91906200195a565b602060405180830381865af41580156200029a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c091906200196f565b62000a26565b6001600160401b0382166000908152600560205260409020620002ea903062000c88565b506200044473__$1d92393fa9ccd763988368ce8a1cb90d26$__6368aebf7b60008054906101000a90046001600160a01b03166001600160a01b0316633ca7c02a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200035b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003819190620018df565b6040516001600160e01b031960e084901b1681526001600160401b039091166004820152602401602060405180830381865af4158015620003c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ec9190620018df565b604080518082018252600a8152695075626c6963526f6c6560b01b6020820152905163cdc23e6960e01b8152859173__$9a094f9b231ed0f5f85a69be8408d93180$__9163cdc23e69916200027c916004016200195a565b73__$1d92393fa9ccd763988368ce8a1cb90d26$__6368aebf7b6200046c600060016200199f565b6040516001600160e01b031960e084901b1681526001600160401b039091166004820152602401602060405180830381865af4158015620004b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d79190620018df565b60018054600160a01b600160e01b031916600160a01b6001600160401b039384168102919091179182905560408051808201909152600b81526a4d616e61676572526f6c6560a81b60208201526200053793919092041690849062000ca8565b6040805160038082526080820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816200054d5750506040805180820190915260098152686772616e74526f6c6560b81b6020820152909150620005ab90633cc3ef7f60e01b9062000f96565b81600081518110620005c157620005c1620019df565b602002602001018190525062000607632c35c3b360e01b6040518060400160405280600a8152602001697265766f6b65526f6c6560b01b81525062000f9660201b60201c565b816001815181106200061d576200061d620019df565b60200260200101819052506200066563384c9a5760e01b6040518060400160405280600c81526020016b72656e6f756e6365526f6c6560a01b81525062000f9660201b60201c565b816002815181106200067b576200067b620019df565b60209081029190910101526200069c3062000695620010c6565b8362001146565b60408051600680825260e0820190925290816020015b6040805180820190915260008082526020820152815260200190600190039081620006b257505060408051808201909152600a815269637265617465526f6c6560b01b60208201529091506200071190631e8ae37b60e11b9062000f96565b81600081518110620007275762000727620019df565b60200260200101819052506200077263fcc44a4460e01b6040518060400160405280600f81526020016e1cd95d149bdb19511a5cd8589b1959608a1b81525062000f9660201b60201c565b81600181518110620007885762000788620019df565b6020026020010181905250620007d0635fa8aad460e01b6040518060400160405280600c81526020016b18dc99585d1955185c99d95d60a21b81525062000f9660201b60201c565b81600281518110620007e657620007e6620019df565b602002602001018190525062000831638689231360e01b6040518060400160405280600f81526020016e1cd95d15185c99d95d131bd8dad959608a1b81525062000f9660201b60201c565b81600381518110620008475762000847620019df565b60200260200101819052506200089563ee6bce2160e01b60405180604001604052806012815260200171617574686f72697a6546756e6374696f6e7360701b81525062000f9660201b60201c565b81600481518110620008ab57620008ab620019df565b60200260200101819052506200090463c48a062f60e01b6040518060400160405280601481526020017f756e617574686f72697a6546756e6374696f6e7300000000000000000000000081525062000f9660201b60201c565b816005815181106200091a576200091a620019df565b602090810291909101015260015462000946903090600160a01b90046001600160401b03168362001146565b6001546200096e906001600160401b03600160a01b820416906001600160a01b0316620011b8565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620009c35760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161462000a235780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6040518060800160405280836001600160401b0316815260200182815260200173__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af415801562000a90573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ab69190620019f5565b64ffffffffff9081168252600160209283018190526001600160401b03808816600081815260028087526040808320895181549087166001600160401b0319909116178155898901518188015589820151920180546060909a01511515650100000000000265ffffffffffff19909a1692909716919091179790971790945585518087018752818152808601848152888652600396879052878620915182549151151568010000000000000000026001600160481b031990921690851617179055600480549384018155938490528383047f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054939095166008026101000a908102910219909116179091559051631623433d60e31b81527f7ca167efd1db6c7c8ad06526e52679f40c5fa09dac1d49d9a12e0a04cb39a628918591859173__$9a094f9b231ed0f5f85a69be8408d93180$__9163b11a19e89162000c229188910190815260200190565b600060405180830381865af415801562000c40573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000c6a919081019062001a1e565b60405162000c7b9392919062001ad6565b60405180910390a1505050565b600062000c9f836001600160a01b0384166200126f565b90505b92915050565b62000cd8836001600160401b03166000908152600260208190526040909120015465010000000000900460ff1690565b1562000da5576001600160401b03831660009081526002602052604090819020600101549051631623433d60e31b8152849173__$9a094f9b231ed0f5f85a69be8408d93180$__9163b11a19e89162000d379160040190815260200190565b600060405180830381865af415801562000d55573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000d7f919081019062001a1e565b60405163212f3d9960e01b815260040162000d9c92919062001b0d565b60405180910390fd5b62000dd5826001600160401b03166000908152600260208190526040909120015465010000000000900460ff1690565b62000dff5760405163ea5c764960e01b81526001600160401b038316600482015260240162000d9c565b60405163cdc23e6960e01b815260009073__$9a094f9b231ed0f5f85a69be8408d93180$__9063cdc23e699062000e3b9085906004016200195a565b602060405180830381865af415801562000e59573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e7f91906200196f565b60405163a9dbaf2560e01b81526004810182905290915073__$9a094f9b231ed0f5f85a69be8408d93180$__9063a9dbaf2590602401602060405180830381865af415801562000ed3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ef991906200196f565b60000362000f26576040516321ab17ab60e01b81526001600160401b038516600482015260240162000d9c565b60008181526003602052604090205468010000000000000000900460ff161562000f8357600081815260036020526040908190205490516345e6904160e01b815262000d9c91869185916001600160401b03169060040162001b3b565b62000f9084848362000a26565b50505050565b60408051808201825260008082526020820152815180830192839052636b15ee8b60e01b9092526001600160e01b031984166044830152908073__$0904195350e4c23ecb1d51df0a32586dcd$__636b15ee8b60648301602060405180830381865af41580156200100b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001031919062001b89565b6001600160e01b031916815260200173__$9a094f9b231ed0f5f85a69be8408d93180$__63cdc23e69856040518263ffffffff1660e01b81526004016200107991906200195a565b602060405180830381865af415801562001097573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010bd91906200196f565b90529392505050565b60008060009054906101000a90046001600160a01b03166001600160a01b0316633ca7c02a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200111b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011419190620018df565b905090565b620011668262001155620012c1565b6001600160401b0390811691161490565b1562001191576040516323d0464560e21b81526001600160a01b038416600482015260240162000d9c565b60016000620011a285848462001316565b9050620011b1858583620015d1565b5050505050565b620011c38262001640565b620011ce82620017d6565b6001600160401b0382166000908152600560205260409020620011f2908262000c88565b506000805460405163012e238d60e51b81526001600160401b03851660048201526001600160a01b03848116602483015260448201939093529116906325c471a090606401600060405180830381600087803b1580156200125257600080fd5b505af115801562001267573d6000803e3d6000fd5b505050505050565b6000818152600183016020526040812054620012b85750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000ca2565b50600062000ca2565b60008060009054906101000a90046001600160a01b03166001600160a01b03166375b238fc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200111b573d6000803e3d6000fd5b8151606090806001600160401b03811115620013365762001336620019c9565b60405190808252806020026020018201604052801562001360578160200160208202803683370190505b5060408051808201909152600080825260208201529092506000805b83811015620015c6578681815181106200139a576200139a620019df565b6020026020010151925082600001519150851562001447576001600160a01b038816600090815260096020526040908190209051631b76c9b760e31b815260048101919091526001600160e01b03198316602482015273__$8df0087758613aef8a614b5774fdb3323b$__9063dbb64db89060440160006040518083038186803b1580156200142857600080fd5b505af41580156200143d573d6000803e3d6000fd5b50505050620014d7565b6001600160a01b0388166000908152600960205260409081902090516313edd33560e31b815260048101919091526001600160e01b03198316602482015273__$8df0087758613aef8a614b5774fdb3323b$__90639f6e99a89060440160006040518083038186803b158015620014bd57600080fd5b505af4158015620014d2573d6000803e3d6000fd5b505050505b6020838101516001600160a01b038a166000908152600a835260408082206001600160e01b031987168084529452908190209190915551636ea1af2560e11b8152600481019190915273__$0904195350e4c23ecb1d51df0a32586dcd$__9063dd435e4a90602401602060405180830381865af41580156200155d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001583919062001b89565b858281518110620015985762001598620019df565b6001600160e01b03199092166020928302919091019091015280620015bd8162001ba9565b9150506200137c565b505050509392505050565b6000546040516308d6122d60e01b81526001600160a01b03909116906308d6122d90620016079086908590879060040162001bc5565b600060405180830381600087803b1580156200162257600080fd5b505af115801562001637573d6000803e3d6000fd5b50505050505050565b6001600160401b0381166000908152600260208190526040909120015465010000000000900460ff1662001693576040516309c7013760e21b81526001600160401b038216600482015260240162000d9c565b60005460408051631d6c8e3f60e21b8152905183926001600160a01b0316916375b238fc9160048083019260209291908290030181865afa158015620016dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017039190620018df565b6001600160401b0316816001600160401b03161480620017ab575060008054906101000a90046001600160a01b03166001600160a01b0316633ca7c02a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001770573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017969190620018df565b6001600160401b0316816001600160401b0316145b156200096e5760405163a72de1fb60e01b81526001600160401b038316600482015260240162000d9c565b620017e1816200180c565b1562000a2357604051630b4a0c0760e31b81526001600160401b038216600482015260240162000d9c565b6001600160401b03811660009081526002602081815260408084209092015482516356db0c1960e11b8152925162000ca29364ffffffffff9092169273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9263adb6183292600480830193928290030181865af415801562001885573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018ab9190620019f5565b64ffffffffff9081169116111590565b612e73806200758983390190565b6001600160401b038116811462000a2357600080fd5b600060208284031215620018f257600080fd5b8151620018ff81620018c9565b9392505050565b60005b838110156200192357818101518382015260200162001909565b50506000910152565b600081518084526200194681602086016020860162001906565b601f01601f19169290920160200192915050565b60208152600062000c9f60208301846200192c565b6000602082840312156200198257600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b03818116838216019080821115620019c257620019c262001989565b5092915050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121562001a0857600080fd5b815164ffffffffff81168114620018ff57600080fd5b60006020828403121562001a3157600080fd5b81516001600160401b038082111562001a4957600080fd5b818401915084601f83011262001a5e57600080fd5b81518181111562001a735762001a73620019c9565b604051601f8201601f19908116603f0116810190838211818310171562001a9e5762001a9e620019c9565b8160405282815287602084870101111562001ab857600080fd5b62001acb83602083016020880162001906565b979650505050505050565b6001600160401b0384811682528316602082015260606040820181905260009062001b04908301846200192c565b95945050505050565b6001600160401b038316815260406020820181905260009062001b33908301846200192c565b949350505050565b600060018060401b0380861683526060602084015262001b5f60608401866200192c565b9150808416604084015250949350505050565b6001600160e01b03198116811462000a2357600080fd5b60006020828403121562001b9c57600080fd5b8151620018ff8162001b72565b60006001820162001bbe5762001bbe62001989565b5060010190565b6001600160a01b038416815260606020808301829052845191830182905260009185820191906080850190845b8181101562001c1a5784516001600160e01b0319168352938301939183019160010162001bf2565b50506001600160401b0395909516604094909401939093525091949350505050565b61593d8062001c4c6000396000f3fe608060405234801561001057600080fd5b50600436106103275760003560e01c8063605aa10a116101b8578063bc62a0a511610104578063d78a83b1116100a2578063ee6bce211161007c578063ee6bce21146109bd578063f720fb3a146109d0578063fcc44a4414610a02578063ff90909214610a1557600080fd5b8063d78a83b11461099a578063ec87621c146109ad578063ee0ad9e8146109b557600080fd5b8063c48a062f116100de578063c48a062f14610938578063c6a001791461094b578063ced7289d1461095e578063d5f394881461098957600080fd5b8063bc62a0a5146108df578063bcfb11b014610907578063bf7e214f1461093057600080fd5b8063868923131161017157806392bdd9bd1161014b57806392bdd9bd1461082e578063a7328d43146108b1578063b3ecf236146108c4578063b7009613146108cc57600080fd5b806386892313146107d85780638fb36037146107eb57806391e8af981461080057600080fd5b8063605aa10a1461075757806364fc31421461076a5780636e879e321461077d578063728a61a8146107aa5780637a9e5e4b146107bd5780638308ceb1146107d057600080fd5b80632e8d14431161027757806339ff53c2116102305780633fd855611161020a5780633fd8556114610649578063420e0b351461065c5780635bfa50271461066f5780635fa8aad41461074457600080fd5b806339ff53c21461061b5780633cc3ef7f146106235780633d15c6f61461063657600080fd5b80632e8d14431461054d578063328c4c30146105805780633406b152146105ac57806335471f80146105ed578063384c9a5714610600578063392f5f641461061357600080fd5b80632457d64a116102e457806326decd40116102be57806326decd40146104e357806327721344146104f657806327e3da43146105275780632c35c3b31461053a57600080fd5b80632457d64a1461047d57806324913ce61461049257806326d60fb4146104db57600080fd5b8063030149741461032c5780630f4809ac1461035257806311a4b5831461037557806312e1ebc5146103ae57806315fb0abb1461042c5780631630d7d61461044c575b600080fd5b61033f61033a366004614ca1565b610a3f565b6040519081526020015b60405180910390f35b610365610360366004614cd3565b610a66565b6040519015158152602001610349565b6103a16040518060400160405280600d81526020016c14dd185ada5b99d5185c99d95d609a1b81525081565b6040516103499190614d40565b61040a6103bc366004614cd3565b6040805180820190915260008082526020820152506001600160a01b03166000908152600660209081526040918290208251808401909352805483526001015464ffffffffff169082015290565b604080518251815260209283015164ffffffffff169281019290925201610349565b61043f61043a366004614e54565b610b02565b6040516103499190614e99565b6103a1604051806040016040528060128152602001715374616b696e6753657276696365526f6c6560701b81525081565b61049061048b366004614eba565b610c23565b005b6104a56104a0366004614ef3565b610c47565b6040805183516001600160e01b0319168152602093840151938101939093526001600160401b0390911690820152606001610349565b60085461033f565b6103656104f1366004614cd3565b610eb9565b6103a16040518060400160405280601281526020017114dd185ada5b99d4dd1bdc9955185c99d95d60721b81525081565b610490610535366004614f1f565b610f28565b610490610548366004614f6a565b611222565b6103a16040518060400160405280601481526020017314995b19585cd953585b9859d95c95185c99d95d60621b81525081565b600154600160a01b90046001600160401b03165b6040516001600160401b039091168152602001610349565b6105d56105ba366004614f98565b6000908152600760205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610349565b61033f6105fb366004614cd3565b6112cd565b61049061060e366004614ca1565b61135a565b60045461033f565b6105946113a0565b610490610631366004614f6a565b6113af565b610490610644366004614fb1565b611455565b610594610657366004614f98565b611469565b61049061066a366004615021565b6114ae565b6106ff61067d366004614ca1565b604080516080810182526000808252602082018190529181018290526060810191909152506001600160401b03908116600090815260026020818152604092839020835160808101855281549095168552600181015491850191909152015464ffffffffff811691830191909152600160281b900460ff161515606082015290565b604051610349919081516001600160401b031681526020808301519082015260408083015164ffffffffff169082015260609182015115159181019190915260800190565b61049061075236600461504f565b611537565b610365610765366004614cd3565b61154a565b610365610778366004614f6a565b6115bd565b6103a16040518060400160405280600e81526020016d4769664d616e61676572526f6c6560901b81525081565b6105d56107b8366004614f98565b611644565b6104906107cb366004614cd3565b611674565b6105946116f7565b6104906107e636600461507b565b61176f565b6107f36117e4565b60405161034991906150a9565b6103a16040518060400160405280600f81526020016e506f6f6c53657276696365526f6c6560881b81525081565b61088b61083c366004614f98565b6040805180820190915260008082526020820152506000908152600360209081526040918290208251808401909352546001600160401b0381168352600160401b900460ff1615159082015290565b6040805182516001600160401b0316815260209283015115159281019290925201610349565b6103656108bf366004614ca1565b61181d565b6105946118c8565b6103656108da3660046150be565b61191c565b6103a16040518060400160405280600981526020016841646d696e526f6c6560b81b81525081565b6103a16040518060400160405280600a8152602001695075626c6963526f6c6560b01b81525081565b6105d56119d6565b6104906109463660046151b4565b6119f2565b610365610959366004614ca1565b611a05565b6103a16040518060400160405280600c81526020016b47696641646d696e526f6c6560a01b81525081565b6001546001600160a01b03166105d5565b6105d56109a83660046151f9565b611a2e565b610594611a57565b610594611a66565b6104906109cb366004615217565b611a70565b6103a160405180604001604052806013815260200172151bdad95b949959da5cdd1c9e55185c99d95d606a1b81525081565b610490610a1036600461526e565b611a84565b6103a16040518060400160405280600b81526020016a4d616e61676572526f6c6560a81b81525081565b6001600160401b0381166000908152600560205260408120610a6090611a97565b92915050565b6000813b610a7657506000919050565b60408051600481526024810182526020810180516001600160e01b031663bf7e214f60e01b17905290516000916001600160a01b03851691610ab8919061528c565b600060405180830381855afa9150503d8060008114610af3576040519150601f19603f3d011682016040523d82523d6000602084013e610af8565b606091505b5090949350505050565b60408051808201825260008082526020820152815180830192839052636b15ee8b60e01b909252908073__$0904195350e4c23ecb1d51df0a32586dcd$__636b15ee8b610b5287604485016150a9565b602060405180830381865af4158015610b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9391906152a8565b6001600160e01b031916815260200173__$9a094f9b231ed0f5f85a69be8408d93180$__63cdc23e69856040518263ffffffff1660e01b8152600401610bd99190614d40565b602060405180830381865af4158015610bf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1a91906152c5565b90529392505050565b610c30335b600036611aa1565b610c3981611b9f565b610c438282611fa1565b5050565b60408051808201909152600080825260208201526001600160a01b038316600090815260096020526040808220905163dfe63db960e01b8152829173__$8df0087758613aef8a614b5774fdb3323b$__9163dfe63db991610cb5918890600401918252602082015260400190565b602060405180830381865af4158015610cd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf691906152a8565b6040805180820182526001600160e01b031983168082526001600160a01b03808a166000908152600a602090815285822084835281528582205490850152549351636ea1af2560e11b815292975093945073__$1d92393fa9ccd763988368ce8a1cb90d26$__936368aebf7b931691636d5115bd918a9173__$0904195350e4c23ecb1d51df0a32586dcd$__9163dd435e4a91610d9691906004016150a9565b602060405180830381865af4158015610db3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd791906152a8565b6040516001600160e01b031960e085901b811682526001600160a01b03909316600482015291166024820152604401602060405180830381865afa158015610e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4791906152de565b6040516001600160e01b031960e084901b1681526001600160401b039091166004820152602401602060405180830381865af4158015610e8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eaf91906152de565b9150509250929050565b6000805460405163a166aa8960e01b81526001600160a01b0384811660048301529091169063a166aa8990602401602060405180830381865afa158015610f04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6091906152fb565b6001546001600160a01b0316610f4b57600180546001600160a01b031916331790555b6001546001600160a01b03163314610f7657604051635adaa55f60e11b815260040160405180910390fd5b601054600160a01b900460ff1615610fa157604051632a4ddb6360e01b815260040160405180910390fd5b6010805460ff60a01b1916600160a01b179055826001600160a01b031663fee11aaf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ff2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110169190615318565b600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550826001600160a01b031663caed98976040518163ffffffff1660e01b8152600401602060405180830381865afa15801561107a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109e9190615318565b600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550826001600160a01b0316630e9ed68b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111269190615318565b600f80546001600160a01b0319166001600160a01b03929092169182179055604080516321b1d5d560e21b815290516386c75754916004808201926020929091908290030181865afa158015611180573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a49190615318565b601080546001600160a01b0319166001600160a01b03928316179055600e54604080518082019091526013815272151bdad95b949959da5cdd1c9e55185c99d95d606a1b60208201526111fb9291909116906122d6565b6112048261274e565b61120d816128ab565b611215612c10565b61121d612e2d565b505050565b8061122c81611a05565b611259576040516309c7013760e21b81526001600160401b03821660048201526024015b60405180910390fd5b6001600160401b0380821660009081526002602052604090205461127f913391166115bd565b6112ba576001600160401b038181166000908152600260205260409081902054905163b889d72560e01b815291166004820152602401611250565b6112c333610c28565b61121d8284613ba1565b6001600160a01b038116600090815260096020526040808220905163868b3e0760e01b8152600481019190915273__$8df0087758613aef8a614b5774fdb3323b$__9063868b3e0790602401602060405180830381865af4158015611336573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6091906152c5565b8061136533826115bd565b61138d576040516323db29b960e21b81526001600160401b0382166004820152602401611250565b61139633610c28565b610c438233613ba1565b60006113aa613c0e565b905090565b806113b981611a05565b6113e1576040516309c7013760e21b81526001600160401b0382166004820152602401611250565b6001600160401b03808216600090815260026020526040902054611407913391166115bd565b611442576001600160401b038181166000908152600260205260409081902054905163b889d72560e01b815291166004820152602401611250565b61144b33610c28565b61121d8284613c62565b61145e33610c28565b61121d838383613ce0565b60006004828154811061147e5761147e615335565b90600052602060002090600491828204019190066008029054906101000a90046001600160401b03169050919050565b6114b733610c28565b604051633b6bf6a760e11b815260ff82166004820152610c439073__$1d92393fa9ccd763988368ce8a1cb90d26$__906376d7ed4e90602401602060405180830381865af415801561150d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153191906152de565b83613c62565b61154033610c28565b610c4382826122d6565b6001600160a01b038116600090815260066020526040808220600101549051638d38cd4b60e01b815264ffffffffff909116600482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__90638d38cd4b90602401602060405180830381865af4158015610f04573d6000803e3d6000fd5b600080546040516368fc2b7760e11b81526001600160401b03841660048201526001600160a01b0385811660248301528392169063d1f856ee906044015b6040805180830381865afa158015611617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163b919061534b565b50949350505050565b60006008828154811061165957611659615335565b6000918252602090912001546001600160a01b031692915050565b3361167d6119d6565b6001600160a01b0316816001600160a01b0316146116b85760405162d1953b60e31b81526001600160a01b0382166004820152602401611250565b816001600160a01b03163b6000036116ee576040516361798f2f60e11b81526001600160a01b0383166004820152602401611250565b610c4382613f54565b60008060009054906101000a90046001600160a01b03166001600160a01b0316633ca7c02a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561174b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113aa91906152de565b61177833610c28565b60005460405163167bd39560e01b81526001600160a01b03848116600483015283151560248301529091169063167bd395906044015b600060405180830381600087803b1580156117c857600080fd5b505af11580156117dc573d6000803e3d6000fd5b505050505050565b6000805160206158e8833981519152805460009190600160a01b900460ff1661180e576000611817565b638fb3603760e01b5b91505090565b6001600160401b03811660009081526002602081815260408084209092015482516356db0c1960e11b81529251610a609364ffffffffff9092169273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9263adb6183292600480830193928290030181865af4158015611894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b89190615383565b64ffffffffff9081169116111590565b60008060009054906101000a90046001600160a01b03166001600160a01b03166375b238fc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561174b573d6000803e3d6000fd5b60008054604051636ea1af2560e11b81526001600160a01b039091169063b7009613908690869073__$0904195350e4c23ecb1d51df0a32586dcd$__9063dd435e4a90611977906001600160e01b03198a16906004016150a9565b602060405180830381865af4158015611994573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b891906152a8565b6040518463ffffffff1660e01b81526004016115fb939291906153aa565b6000805160206158e8833981519152546001600160a01b031690565b6119fb33610c28565b610c438282613fb5565b6001600160401b031660009081526002602081905260409091200154600160281b900460ff1690565b6001600160401b0382166000908152600560205260408120611a509083613fd7565b9392505050565b611a63600060016153ed565b81565b60006113aa613fe3565b611a7933610c28565b61121d83838361401e565b611a8d33610c28565b610c438282614087565b6000610a60825490565b6000805160206158e8833981519152600080611adc611abe6119d6565b8730611ace600460008a8c61540d565b611ad791615437565b614260565b91509150816117dc5763ffffffff811615611b7c57825460ff60a01b1916600160a01b178355611b0a6119d6565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b8152600401611b3993929190615467565b600060405180830381600087803b158015611b5357600080fd5b505af1158015611b67573d6000803e3d6000fd5b5050845460ff60a01b19168555506117dc9050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401611250565b6000816001600160a01b031663b68d18096040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0391906154a7565b604051632b95d28f60e21b815260ff8216600482015290915060009073__$0d958e68cba84670b8f4a3f2f2686b1c6b$__9063ae574a3c90602401600060405180830381865af4158015611c5b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c8391908101906154c4565b90506000836001600160a01b0316630d8e6e2c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce9919061553a565b60405163c9e66e2960e01b815262ffffff909116600482015273__$8eede297b65ed5a56eb3f84d8232ae93f5$__9063c9e66e2990602401602060405180830381865af4158015611d3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6291906154a7565b604051632b10f60d60e21b815260ff8216600482015290915060009073__$b659da7d8a6d2d32aa6c1e17da23dc2174$__9063ac43d83490602401602060405180830381865af4158015611dba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dde91906152c5565b604080518082018252600381526205f76360ec1b6020820152905163348051d760e11b8152600481018390529192509060009073__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636900a3ae90602401600060405180830381865af4158015611e4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e7591908101906154c4565b9050600a8310611e9d57604051806040016040528060028152602001612fbb60f11b81525091505b6000858383604051602001611eb49392919061555f565b6040516020818303038152906040529050611ecf88826122d6565b6000868484604051602001611ee6939291906155b8565b60408051808303601f190181529082905263dda777d360e01b825260ff808b16600484015288166024830152915060009073__$1d92393fa9ccd763988368ce8a1cb90d26$__9063dda777d390604401602060405180830381865af4158015611f53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7791906152de565b9050611f8b81611f85614357565b84613ce0565b611f95818b613c62565b50505050505050505050565b6000816001600160a01b031663b68d18096040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fe1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200591906154a7565b90506000806000846001600160a01b0316630d8e6e2c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561204a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206e919061553a565b60405163c9e66e2960e01b815262ffffff909116600482015273__$8eede297b65ed5a56eb3f84d8232ae93f5$__9063c9e66e2990602401602060405180830381865af41580156120c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e791906154a7565b604051630e949b3560e21b815260ff861660048201529091506000906001600160a01b03881690633a526cd490602401600060405180830381865afa158015612134573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261215c9190810190615615565b905060005b81518110156122cc5781818151811061217c5761217c615335565b6020026020010151945061219d85612192606390565b60ff90811691161490565b156121b1576121aa614392565b9350612232565b60405163dda777d360e01b815260ff80871660048301528416602482015273__$1d92393fa9ccd763988368ce8a1cb90d26$__9063dda777d390604401602060405180830381865af415801561220b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222f91906152de565b93505b6040516374766d9b60e11b815260ff8088166004830152861660248201526000906001600160a01b038a169063e8ecdb3690604401600060405180830381865afa158015612284573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122ac91908101906156ae565b90506122b988868361401e565b50806122c481615761565b915050612161565b5050505050505050565b6122df8261154a565b15612399576001600160a01b03821660009081526006602052604090819020549051631623433d60e31b8152839173__$9a094f9b231ed0f5f85a69be8408d93180$__9163b11a19e8916123399160040190815260200190565b600060405180830381865af4158015612356573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261237e91908101906154c4565b60405163455f894360e01b815260040161125092919061577a565b60405163cdc23e6960e01b815260009073__$9a094f9b231ed0f5f85a69be8408d93180$__9063cdc23e69906123d3908590600401614d40565b602060405180830381865af41580156123f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241491906152c5565b60405163a9dbaf2560e01b81526004810182905290915073__$9a094f9b231ed0f5f85a69be8408d93180$__9063a9dbaf2590602401602060405180830381865af4158015612467573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248b91906152c5565b6000036124b6576040516389100c0960e01b81526001600160a01b0384166004820152602401611250565b6000818152600760205260409020546001600160a01b03161561250a5760008181526007602052604090819020549051638beac5bb60e01b815261125091859185916001600160a01b0316906004016157a6565b61251383610a66565b61253b5760405163680f41eb60e01b81526001600160a01b0384166004820152602401611250565b6000836001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259f9190615318565b90506125a96119d6565b6001600160a01b0316816001600160a01b0316146125f6576125c96119d6565b6040516358dffd0760e01b81526001600160a01b0391821660048201529082166024820152604401611250565b604051806040016040528083815260200173__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015612650573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126749190615383565b64ffffffffff9081169091526001600160a01b038616600081815260066020908152604080832086518155958201516001968701805464ffffffffff191691909616179094558682526007905282812080546001600160a01b031990811684179091556008805495860181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3909301805490931617909155517f41a3bdd8567a380ee8bf6660dae135d2ee59322968c5c8cc1884a4b1be5050b190612740908690869061577a565b60405180910390a150505050565b61278b612759613fe3565b6127616118c8565b6040518060400160405280600c81526020016b47696641646d696e526f6c6560a01b815250613ce0565b61279c612796613fe3565b82613c62565b6040805160028082526060828101909352816020015b60408051808201909152600080825260208201528152602001906001900390816127b2579050509050612815630af43fe160e01b604051806040016040528060118152602001706372656174654e65787452656c6561736560781b815250610b02565b8160008151811061282857612828615335565b602002602001018190525061286f63a284482460e01b6040518060400160405280601381526020017261637469766174654e65787452656c6561736560681b815250610b02565b8160018151811061288257612882615335565b6020908102919091010152600d54610c43906001600160a01b03166128a5613fe3565b8361401e565b6128ea6128b6613c0e565b6128be613fe3565b6040518060400160405280600e81526020016d4769664d616e61676572526f6c6560901b815250613ce0565b6128f5612796613c0e565b60408051600580825260c08201909252606091816020015b604080518082019091526000808252602082015281526020019060019003908161290d57905050905061296c6309824a8060e01b6040518060400160405280600d81526020016c3932b3b4b9ba32b92a37b5b2b760991b815250610b02565b8160008151811061297f5761297f615335565b60200260200101819052506129c6635fa4428d60e01b604051806040016040528060138152602001723932b3b4b9ba32b92932b6b7ba32aa37b5b2b760691b815250610b02565b816001815181106129d9576129d9615335565b6020026020010181905250612a166312cbf5ae60e01b6040518060400160405280600981526020016873657441637469766560b81b815250610b02565b81600281518110612a2957612a29615335565b6020026020010181905250612a70636f15f70e60e01b6040518060400160405280601381526020017239b2ba20b1ba34bb32a337b92b32b939b4b7b760691b815250610b02565b81600381518110612a8357612a83615335565b6020026020010181905250612ad463f16ddea160e01b6040518060400160405280601981526020017f7365744163746976655769746856657273696f6e436865636b00000000000000815250610b02565b81600481518110612ae757612ae7615335565b6020908102919091010152600e54612b0a906001600160a01b03166128a5613c0e565b6040805160028082526060820190925290816020015b6040805180820190915260008082526020820152815260200190600190039081612b20579050509050612b8463ec90c66b60e01b60405180604001604052806012815260200171707265706172654e65787452656c6561736560701b815250610b02565b81600081518110612b9757612b97615335565b6020026020010181905250612bda63fdd9ec7d60e01b6040518060400160405280600f81526020016e72656769737465725365727669636560881b815250610b02565b81600181518110612bed57612bed615335565b6020908102919091010152600d54610c43906001600160a01b03166128a5613c0e565b600d5460408051808201909152601481527314995b19585cd953585b9859d95c95185c99d95d60621b6020820152612c51916001600160a01b0316906122d6565b600073__$1d92393fa9ccd763988368ce8a1cb90d26$__636d3d2a7e60076040516001600160e01b031960e084901b16815260ff9091166004820152602401602060405180830381865af4158015612cad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd191906152de565b9050612d1181612cdf614357565b6040518060400160405280601481526020017314995b19585cd953585b9859d95c95185c99d95d60621b815250613ce0565b600d54612d289082906001600160a01b0316613c62565b6040805160028082526060828101909352816020015b6040805180820190915260008082526020820152815260200190600190039081612d3e579050509050612da0632457d64a60e01b6040518060400160405280601081526020016f617574686f72697a655365727669636560801b815250610b02565b81600081518110612db357612db3615335565b6020026020010181905250612e0463420e0b3560e01b6040518060400160405280601e81526020017f6772616e7453657276696365526f6c65466f72416c6c56657273696f6e730000815250610b02565b81600181518110612e1757612e17615335565b6020026020010181905250610c4330838361401e565b600f5460408051808201909152600d81526c14dd185ada5b99d5185c99d95d609a1b6020820152612e67916001600160a01b0316906122d6565b60105460408051808201909152601281527114dd185ada5b99d4dd1bdc9955185c99d95d60721b6020820152612ea6916001600160a01b0316906122d6565b600073__$1d92393fa9ccd763988368ce8a1cb90d26$__6376d7ed4e60036040516001600160e01b031960e084901b16815260ff9091166004820152602401602060405180830381865af4158015612f02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f2691906152de565b9050612f6481612f34614357565b604051806040016040528060128152602001715374616b696e6753657276696365526f6c6560701b815250613ce0565b60408051600d8082526101c08201909252606091816020015b6040805180820190915260008082526020820152815260200190600190039081612f7d579050509050612fdd63562119ee60e01b6040518060400160405280600e81526020016d1c9959da5cdd195c95185c99d95d60921b815250610b02565b81600081518110612ff057612ff0615335565b6020026020010181905250613034635ecf260f60e01b6040518060400160405280601081526020016f1cd95d131bd8dada5b99d4195c9a5bd960821b815250610b02565b8160018151811061304757613047615335565b6020026020010181905250613088632a80f67360e01b6040518060400160405280600d81526020016c7365745265776172645261746560981b815250610b02565b8160028151811061309b5761309b615335565b60200260200101819052506130e363de0eb85f60e01b60405180604001604052806014815260200173726566696c6c526577617264526573657276657360601b815250610b02565b816003815181106130f6576130f6615335565b602002602001018190525061314063e8ce883d60e01b604051806040016040528060168152602001757769746864726177526577617264526573657276657360501b815250610b02565b8160048151811061315357613153615335565b60200260200101819052506131926331ecc5cc60e01b6040518060400160405280600b81526020016a6372656174655374616b6560a81b815250610b02565b816005815181106131a5576131a5615335565b60200260200101819052506131de636c1e9dff60e01b604051806040016040528060058152602001647374616b6560d81b815250610b02565b816006815181106131f1576131f1615335565b602002602001018190525061322c63dea4ccf260e01b60405180604001604052806007815260200166756e7374616b6560c81b815250610b02565b8160078151811061323f5761323f615335565b602002602001018190525061327a635cbb7d8560e01b6040518060400160405280600781526020016672657374616b6560c81b815250610b02565b8160088151811061328d5761328d615335565b60200260200101819052506132ce6310a0638a60e01b6040518060400160405280600d81526020016c7570646174655265776172647360981b815250610b02565b816009815181106132e1576132e1615335565b602002602001018190525061332163719f761a60e01b6040518060400160405280600c81526020016b636c61696d5265776172647360a01b815250610b02565b81600a8151811061333457613334615335565b602002602001018190525061337863e3a817cd60e01b6040518060400160405280601081526020016f18dbdb1b1958dd111a5c105b5bdd5b9d60821b815250610b02565b81600b8151811061338b5761338b615335565b60200260200101819052506133d063628937d260e01b604051806040016040528060118152602001701d1c985b9cd9995c911a5c105b5bdd5b9d607a1b815250610b02565b81600c815181106133e3576133e3615335565b6020908102919091010152600f54613405906001600160a01b0316838361401e565b600073__$1d92393fa9ccd763988368ce8a1cb90d26$__6376d7ed4e600f6040516001600160e01b031960e084901b16815260ff9091166004820152602401602060405180830381865af4158015613461573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061348591906152de565b90506134c081613493614357565b6040518060400160405280600f81526020016e506f6f6c53657276696365526f6c6560881b815250613ce0565b6040805160028082526060820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816134d657905050915061354063ea48ce9b60e01b604051806040016040528060188152602001771a5b98dc99585cd9551bdd185b15985b1d59531bd8dad95960421b815250610b02565b8260008151811061355357613553615335565b602002602001018190525061359f63d44f8a4b60e01b60405180604001604052806018815260200177191958dc99585cd9551bdd185b15985b1d59531bd8dad95960421b815250610b02565b826001815181106135b2576135b2615335565b6020908102919091010152600f546135d4906001600160a01b0316828461401e565b600073__$1d92393fa9ccd763988368ce8a1cb90d26$__636d3d2a7e60036040516001600160e01b031960e084901b16815260ff9091166004820152602401602060405180830381865af4158015613630573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061365491906152de565b905061368d81613662614357565b6040518060400160405280600d81526020016c14dd185ada5b99d5185c99d95d609a1b815250613ce0565b600f546136a49082906001600160a01b0316613c62565b60408051600e8082526101e0820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816136bb57905050925061371b639a72636460e01b6040518060400160405280600e81526020016d7365745374616b696e675261746560901b815250610b02565b8360008151811061372e5761372e615335565b602002602001018190525061376e632df8be9b60e01b6040518060400160405280600c81526020016b18dc99585d1955185c99d95d60a21b815250610b02565b8360018151811061378157613781615335565b60200260200101819052506137c1631807a48860e01b6040518060400160405280600c81526020016b1d5c19185d1955185c99d95d60a21b815250610b02565b836002815181106137d4576137d4615335565b602002602001018190525061381863d7537c3760e01b6040518060400160405280601081526020016f696e637265617365526573657276657360801b815250610b02565b8360038151811061382b5761382b615335565b602002602001018190525061386f63136cfef760e01b6040518060400160405280601081526020016f6465637265617365526573657276657360801b815250610b02565b8360048151811061388257613882615335565b60200260200101819052506138ce6377f9185160e01b604051806040016040528060188152602001771a5b98dc99585cd9551bdd185b15985b1d59531bd8dad95960421b815250610b02565b836005815181106138e1576138e1615335565b602002602001018190525061392d63fb39549c60e01b60405180604001604052806018815260200177191958dc99585cd9551bdd185b15985b1d59531bd8dad95960421b815250610b02565b8360068151811061394057613940615335565b602002602001018190525061397a6362841be260e01b6040518060400160405280600681526020016563726561746560d01b815250610b02565b8360078151811061398d5761398d615335565b60200260200101819052506139c7634b51da0c60e01b6040518060400160405280600681526020016575706461746560d01b815250610b02565b836008815181106139da576139da615335565b6020026020010181905250613a1b633861317f60e01b6040518060400160405280600d81526020016c696e6372656173655374616b6560981b815250610b02565b83600981518110613a2e57613a2e615335565b6020026020010181905250613a706330f4419960e01b6040518060400160405280600e81526020016d72657374616b655265776172647360901b815250610b02565b83600a81518110613a8357613a83615335565b6020026020010181905250613ac4634a2101d160e01b6040518060400160405280600d81526020016c7570646174655265776172647360981b815250610b02565b83600b81518110613ad757613ad7615335565b6020026020010181905250613b14633fbdfe3260e01b60405180604001604052806009815260200168636c61696d5570546f60b81b815250610b02565b83600c81518110613b2757613b27615335565b6020026020010181905250613b6663eb98e8a060e01b6040518060400160405280600b81526020016a756e7374616b655570546f60a81b815250610b02565b83600d81518110613b7957613b79615335565b6020908102919091010152601054613b9b906001600160a01b0316828561401e565b50505050565b613baa826143d3565b6001600160401b0382166000908152600560205260409020613bcc908261455c565b50600054604051635be958b160e11b81526001600160401b03841660048201526001600160a01b0383811660248301529091169063b7d2b162906044016117ae565b6040516368aebf7b60e01b81526003600482015260009073__$1d92393fa9ccd763988368ce8a1cb90d26$__906368aebf7b906024015b602060405180830381865af415801561174b573d6000803e3d6000fd5b613c6b826143d3565b613c7482614571565b6001600160401b0382166000908152600560205260409020613c9690826145a6565b506000805460405163012e238d60e51b81526001600160401b03851660048201526001600160a01b03848116602483015260448201939093529116906325c471a0906064016117ae565b613ce983611a05565b15613da6576001600160401b03831660009081526002602052604090819020600101549051631623433d60e31b8152849173__$9a094f9b231ed0f5f85a69be8408d93180$__9163b11a19e891613d469160040190815260200190565b600060405180830381865af4158015613d63573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d8b91908101906154c4565b60405163212f3d9960e01b81526004016112509291906157db565b613daf82611a05565b613dd75760405163ea5c764960e01b81526001600160401b0383166004820152602401611250565b60405163cdc23e6960e01b815260009073__$9a094f9b231ed0f5f85a69be8408d93180$__9063cdc23e6990613e11908590600401614d40565b602060405180830381865af4158015613e2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e5291906152c5565b60405163a9dbaf2560e01b81526004810182905290915073__$9a094f9b231ed0f5f85a69be8408d93180$__9063a9dbaf2590602401602060405180830381865af4158015613ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ec991906152c5565b600003613ef4576040516321ab17ab60e01b81526001600160401b0385166004820152602401611250565b600081815260036020526040902054600160401b900460ff1615613f4957600081815260036020526040908190205490516345e6904160e01b815261125091869185916001600160401b0316906004016157fd565b613b9b8484836145bb565b6000805160206158e883398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b600080613fc3848484614803565b9050613b9b84613fd16118c8565b83614aae565b6000611a508383614b19565b6040516368aebf7b60e01b81526002600482015260009073__$1d92393fa9ccd763988368ce8a1cb90d26$__906368aebf7b90602401613c45565b61403b8261402a6118c8565b6001600160401b0390811691161490565b15614064576040516323d0464560e21b81526001600160a01b0384166004820152602401611250565b60016000614073858484614803565b9050614080858583614aae565b5050505050565b614090826143d3565b6001600160401b0382166000908152600260208190526040909120015464ffffffffff1681156141625773__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015614103573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141279190615383565b6001600160401b038416600090815260026020819052604090912001805464ffffffffff191664ffffffffff92909216919091179055614206565b73__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af41580156141ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141cf9190615383565b6001600160401b038416600090815260026020819052604090912001805464ffffffffff191664ffffffffff929092169190911790555b604080516001600160401b0385168152831515602082015264ffffffffff8316918101919091527f5242c6819c8f01130e553b61669951ba4641163fb696d76efd88a73232223ff5906060015b60405180910390a1505050565b600080600080876001600160a01b0316878787604051602401614285939291906153aa565b60408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516142ba919061528c565b600060405180830381855afa9150503d80600081146142f5576040519150601f19603f3d011682016040523d82523d6000602084013e6142fa565b606091505b5091509150811561434c57604081511061432c5780806020019051810190614322919061534b565b909450925061434c565b602081511061434c578080602001905181019061434991906152fb565b93505b505094509492505050565b6040516368aebf7b60e01b81526000600482018190529073__$1d92393fa9ccd763988368ce8a1cb90d26$__906368aebf7b90602401613c45565b6040516368aebf7b60e01b81526001600160401b03600482015260009073__$1d92393fa9ccd763988368ce8a1cb90d26$__906368aebf7b90602401613c45565b6001600160401b03811660009081526002602081905260409091200154600160281b900460ff16614422576040516309c7013760e21b81526001600160401b0382166004820152602401611250565b60005460408051631d6c8e3f60e21b8152905183926001600160a01b0316916375b238fc9160048083019260209291908290030181865afa15801561446b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061448f91906152de565b6001600160401b0316816001600160401b03161480614533575060008054906101000a90046001600160a01b03166001600160a01b0316633ca7c02a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156144fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061451e91906152de565b6001600160401b0316816001600160401b0316145b15610c435760405163a72de1fb60e01b81526001600160401b0383166004820152602401611250565b6000611a50836001600160a01b038416614b43565b61457a8161181d565b156145a357604051630b4a0c0760e31b81526001600160401b0382166004820152602401611250565b50565b6000611a50836001600160a01b038416614c3d565b6040518060800160405280836001600160401b0316815260200182815260200173__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af4158015614624573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146489190615383565b64ffffffffff9081168252600160209283018190526001600160401b038088166000818152600280875260408083208951815490871667ffffffffffffffff19909116178155898901518188015589820151920180546060909a01511515600160281b0265ffffffffffff19909a16929097169190911797909717909455855180870187528181528086018481528886526003968790528786209151825491511515600160401b0268ffffffffffffffffff1990921690851617179055600480549384018155938490528383047f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054939095166008026101000a908102910219909116179091559051631623433d60e31b81527f7ca167efd1db6c7c8ad06526e52679f40c5fa09dac1d49d9a12e0a04cb39a628918591859173__$9a094f9b231ed0f5f85a69be8408d93180$__9163b11a19e8916147af9188910190815260200190565b600060405180830381865af41580156147cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526147f491908101906154c4565b60405161425393929190615820565b8151606090806001600160401b0381111561482057614820614d69565b604051908082528060200260200182016040528015614849578160200160208202803683370190505b509150614866604080518082019091526000808252602082015290565b6000805b83811015614aa35786818151811061488457614884615335565b6020026020010151925082600001519150851561492d576001600160a01b038816600090815260096020526040908190209051631b76c9b760e31b815260048101919091526001600160e01b03198316602482015273__$8df0087758613aef8a614b5774fdb3323b$__9063dbb64db89060440160006040518083038186803b15801561491057600080fd5b505af4158015614924573d6000803e3d6000fd5b505050506149bb565b6001600160a01b0388166000908152600960205260409081902090516313edd33560e31b815260048101919091526001600160e01b03198316602482015273__$8df0087758613aef8a614b5774fdb3323b$__90639f6e99a89060440160006040518083038186803b1580156149a257600080fd5b505af41580156149b6573d6000803e3d6000fd5b505050505b6020808401516001600160a01b038a166000908152600a835260408082206001600160e01b031987168084529452908190209190915551636ea1af2560e11b815273__$0904195350e4c23ecb1d51df0a32586dcd$__9163dd435e4a91614a2591906004016150a9565b602060405180830381865af4158015614a42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a6691906152a8565b858281518110614a7857614a78615335565b6001600160e01b03199092166020928302919091019091015280614a9b81615761565b91505061486a565b505050509392505050565b6000546040516308d6122d60e01b81526001600160a01b03909116906308d6122d90614ae29086908590879060040161584c565b600060405180830381600087803b158015614afc57600080fd5b505af1158015614b10573d6000803e3d6000fd5b50505050505050565b6000826000018281548110614b3057614b30615335565b9060005260206000200154905092915050565b60008181526001830160205260408120548015614c2c576000614b676001836158be565b8554909150600090614b7b906001906158be565b9050808214614be0576000866000018281548110614b9b57614b9b615335565b9060005260206000200154905080876000018481548110614bbe57614bbe615335565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080614bf157614bf16158d1565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a60565b6000915050610a60565b5092915050565b6000818152600183016020526040812054614c8457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a60565b506000610a60565b6001600160401b03811681146145a357600080fd5b600060208284031215614cb357600080fd5b8135611a5081614c8c565b6001600160a01b03811681146145a357600080fd5b600060208284031215614ce557600080fd5b8135611a5081614cbe565b60005b83811015614d0b578181015183820152602001614cf3565b50506000910152565b60008151808452614d2c816020860160208601614cf0565b601f01601f19169290920160200192915050565b602081526000611a506020830184614d14565b6001600160e01b0319811681146145a357600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715614da157614da1614d69565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614dcf57614dcf614d69565b604052919050565b60006001600160401b03821115614df057614df0614d69565b50601f01601f191660200190565b600082601f830112614e0f57600080fd5b8135614e22614e1d82614dd7565b614da7565b818152846020838601011115614e3757600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614e6757600080fd5b8235614e7281614d53565b915060208301356001600160401b03811115614e8d57600080fd5b610eaf85828601614dfe565b81516001600160e01b03191681526020808301519082015260408101610a60565b60008060408385031215614ecd57600080fd5b8235614ed881614cbe565b91506020830135614ee881614cbe565b809150509250929050565b60008060408385031215614f0657600080fd5b8235614f1181614cbe565b946020939093013593505050565b600080600060608486031215614f3457600080fd5b8335614f3f81614cbe565b92506020840135614f4f81614cbe565b91506040840135614f5f81614cbe565b809150509250925092565b60008060408385031215614f7d57600080fd5b8235614f8881614cbe565b91506020830135614ee881614c8c565b600060208284031215614faa57600080fd5b5035919050565b600080600060608486031215614fc657600080fd5b8335614fd181614c8c565b92506020840135614fe181614c8c565b915060408401356001600160401b03811115614ffc57600080fd5b61500886828701614dfe565b9150509250925092565b60ff811681146145a357600080fd5b6000806040838503121561503457600080fd5b823561503f81614cbe565b91506020830135614ee881615012565b6000806040838503121561506257600080fd5b8235614e7281614cbe565b80151581146145a357600080fd5b6000806040838503121561508e57600080fd5b823561509981614cbe565b91506020830135614ee88161506d565b6001600160e01b031991909116815260200190565b6000806000606084860312156150d357600080fd5b83356150de81614cbe565b925060208401356150ee81614cbe565b91506040840135614f5f81614d53565b60006001600160401b0382111561511757615117614d69565b5060051b60200190565b600082601f83011261513257600080fd5b81356020615142614e1d836150fe565b82815260069290921b8401810191818101908684111561516157600080fd5b8286015b848110156151a9576040818903121561517e5760008081fd5b615186614d7f565b813561519181614d53565b81528185013585820152835291830191604001615165565b509695505050505050565b600080604083850312156151c757600080fd5b82356151d281614cbe565b915060208301356001600160401b038111156151ed57600080fd5b610eaf85828601615121565b6000806040838503121561520c57600080fd5b8235614f1181614c8c565b60008060006060848603121561522c57600080fd5b833561523781614cbe565b9250602084013561524781614c8c565b915060408401356001600160401b0381111561526257600080fd5b61500886828701615121565b6000806040838503121561528157600080fd5b823561509981614c8c565b6000825161529e818460208701614cf0565b9190910192915050565b6000602082840312156152ba57600080fd5b8151611a5081614d53565b6000602082840312156152d757600080fd5b5051919050565b6000602082840312156152f057600080fd5b8151611a5081614c8c565b60006020828403121561530d57600080fd5b8151611a508161506d565b60006020828403121561532a57600080fd5b8151611a5081614cbe565b634e487b7160e01b600052603260045260246000fd5b6000806040838503121561535e57600080fd5b82516153698161506d565b602084015190925063ffffffff81168114614ee857600080fd5b60006020828403121561539557600080fd5b815164ffffffffff81168114611a5057600080fd5b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6001600160401b03818116838216019080821115614c3657614c366153d7565b6000808585111561541d57600080fd5b8386111561542a57600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561545f5780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b6000602082840312156154b957600080fd5b8151611a5081615012565b6000602082840312156154d657600080fd5b81516001600160401b038111156154ec57600080fd5b8201601f810184136154fd57600080fd5b805161550b614e1d82614dd7565b81815285602083850101111561552057600080fd5b615531826020830160208601614cf0565b95945050505050565b60006020828403121561554c57600080fd5b815162ffffff81168114611a5057600080fd5b60008451615571818460208901614cf0565b665365727669636560c81b9083019081528451615595816007840160208901614cf0565b84519101906155ab816007840160208801614cf0565b0160070195945050505050565b600084516155ca818460208901614cf0565b6a53657276696365526f6c6560a81b90830190815284516155f281600b840160208901614cf0565b845191019061560881600b840160208801614cf0565b01600b0195945050505050565b6000602080838503121561562857600080fd5b82516001600160401b0381111561563e57600080fd5b8301601f8101851361564f57600080fd5b805161565d614e1d826150fe565b81815260059190911b8201830190838101908783111561567c57600080fd5b928401925b828410156156a357835161569481615012565b82529284019290840190615681565b979650505050505050565b600060208083850312156156c157600080fd5b82516001600160401b038111156156d757600080fd5b8301601f810185136156e857600080fd5b80516156f6614e1d826150fe565b81815260069190911b8201830190838101908783111561571557600080fd5b928401925b828410156156a357604084890312156157335760008081fd5b61573b614d7f565b845161574681614d53565b8152848601518682015282526040909301929084019061571a565b600060018201615773576157736153d7565b5060010190565b6001600160a01b038316815260406020820181905260009061579e90830184614d14565b949350505050565b600060018060a01b038086168352606060208401526157c86060840186614d14565b9150808416604084015250949350505050565b6001600160401b038316815260406020820152600061579e6040830184614d14565b60006001600160401b038086168352606060208401526157c86060840186614d14565b60006001600160401b038086168352808516602084015250606060408301526155316060830184614d14565b6001600160a01b038416815260606020808301829052845191830182905260009185820191906080850190845b8181101561589f5784516001600160e01b03191683529383019391830191600101615879565b50508093505050506001600160401b0383166040830152949350505050565b81810381811115610a6057610a606153d7565b634e487b7160e01b600052603160045260246000fdfef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a26469706673582212203aae015507b5badd5107ea1cdf483e9f490c6f147ff8e28832971323311c3fd264736f6c6343000814003360806040523480156200001157600080fd5b5060405162002e7338038062002e7383398101604081905262000034916200048f565b6001600160a01b0381166200006457604051630409d6d160e11b8152600060048201526024015b60405180910390fd5b6200007360008281806200007b565b505062000519565b60006002600160401b03196001600160401b03861601620000bb5760405163061c6a4360e21b81526001600160401b03861660048201526024016200005b565b6001600160401b03851660009081526001602090815260408083206001600160a01b038816845290915281205465ffffffffffff1615908115620001ba5763ffffffff85166200010a620002d2565b620001169190620004d0565b905060405180604001604052808265ffffffffffff168152602001620001488663ffffffff16620002e460201b60201c565b6001600160701b039081169091526001600160401b03891660009081526001602090815260408083206001600160a01b038c16845282529091208351815494909201519092166601000000000000026001600160a01b031990931665ffffffffffff9091161791909117905562000264565b6001600160401b03871660009081526001602090815260408083206001600160a01b038a168452909152812054620002099166010000000000009091046001600160701b0316908690620002ed565b6001600160401b03891660009081526001602090815260408083206001600160a01b038c168452909152902080546001600160701b03909316660100000000000002600160301b600160a01b03199093169290921790915590505b6040805163ffffffff8616815265ffffffffffff831660208201528315158183015290516001600160a01b038816916001600160401b038a16917ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf9181900360600190a35095945050505050565b6000620002df42620003a2565b905090565b63ffffffff1690565b60008080620003056001600160701b038716620003db565b90506000620003488563ffffffff168763ffffffff168463ffffffff1611620003305760006200033c565b6200033c8885620004f9565b63ffffffff16620003fc565b905063ffffffff81166200035b620002d2565b620003679190620004d0565b925063ffffffff8616602083901b67ffffffff0000000016604085901b6dffffffffffff000000000000000016171793505050935093915050565b600065ffffffffffff821115620003d7576040516306dfcc6560e41b815260306004820152602481018390526044016200005b565b5090565b600080620003f26001600160701b03841662000416565b5090949350505050565b60008183116200040d57816200040f565b825b9392505050565b600080806200042f8462000429620002d2565b6200043c565b9250925092509193909250565b600080806001600160501b03602086901c166001600160701b03861665ffffffffffff604088901c81169087168111156200047a578282826200047f565b816000805b9550955095505050509250925092565b600060208284031215620004a257600080fd5b81516001600160a01b03811681146200040f57600080fd5b634e487b7160e01b600052601160045260246000fd5b65ffffffffffff818116838216019080821115620004f257620004f2620004ba565b5092915050565b63ffffffff828116828216039080821115620004f257620004f2620004ba565b61294a80620005296000396000f3fe6080604052600436106101e35760003560e01c80636d5115bd11610102578063b700961311610095578063d22b598911610064578063d22b598914610681578063d6bb62c6146106a1578063f801a698146106c1578063fe0776f5146106fb57600080fd5b8063b7009613146105ef578063b7d2b1621461062b578063cc1b6c811461064b578063d1f856ee1461066157600080fd5b8063a166aa89116100d1578063a166aa8914610521578063a64d95ce14610574578063abd9bd2a14610594578063ac9650d8146105c257600080fd5b80636d5115bd146104ac57806375b238fc146104cc578063853551b8146104e157806394c7d7ee1461050157600080fd5b806330cae1871161017a5780634665096d116101495780634665096d146104195780634c1da1e21461042f578063529629521461044f578063530dd4561461046f57600080fd5b806330cae1871461036d5780633adc277a1461038d5780633ca7c02a146103c45780634136a33c146103df57600080fd5b806318ff183c116101b657806318ff183c146102c05780631cff79cd146102e057806325c471a0146102f35780633078f1141461031357600080fd5b806308d6122d146101e85780630b0a93ba1461020a57806312be87271461026b578063167bd395146102a0575b600080fd5b3480156101f457600080fd5b506102086102033660046121c5565b61071b565b005b34801561021657600080fd5b5061024e61022536600461222b565b6001600160401b0390811660009081526001602081905260409091200154600160401b90041690565b6040516001600160401b0390911681526020015b60405180910390f35b34801561027757600080fd5b5061028b61028636600461222b565b610776565b60405163ffffffff9091168152602001610262565b3480156102ac57600080fd5b506102086102bb366004612246565b6107b1565b3480156102cc57600080fd5b506102086102db366004612284565b6107c7565b61028b6102ee3660046122f3565b61082e565b3480156102ff57600080fd5b5061020861030e36600461235b565b61095e565b34801561031f57600080fd5b5061033361032e3660046123a0565b610980565b604051610262949392919065ffffffffffff948516815263ffffffff93841660208201529190921660408201529116606082015260800190565b34801561037957600080fd5b506102086103883660046123bc565b6109e5565b34801561039957600080fd5b506103ad6103a83660046123ef565b6109f7565b60405165ffffffffffff9091168152602001610262565b3480156103d057600080fd5b5061024e6001600160401b0381565b3480156103eb57600080fd5b5061028b6103fa3660046123ef565b600090815260026020526040902054600160301b900463ffffffff1690565b34801561042557600080fd5b5062093a8061028b565b34801561043b57600080fd5b5061028b61044a366004612408565b610a2a565b34801561045b57600080fd5b5061020861046a3660046123bc565b610a58565b34801561047b57600080fd5b5061024e61048a36600461222b565b6001600160401b03908116600090815260016020819052604090912001541690565b3480156104b857600080fd5b5061024e6104c736600461243b565b610a6a565b3480156104d857600080fd5b5061024e600081565b3480156104ed57600080fd5b506102086104fc366004612469565b610aa5565b34801561050d57600080fd5b5061020861051c3660046122f3565b610b3c565b34801561052d57600080fd5b5061056461053c366004612408565b6001600160a01b0316600090815260208190526040902060010154600160701b900460ff1690565b6040519015158152602001610262565b34801561058057600080fd5b5061020861058f366004612487565b610be8565b3480156105a057600080fd5b506105b46105af3660046124b1565b610bfa565b604051908152602001610262565b3480156105ce57600080fd5b506105e26105dd366004612515565b610c33565b604051610262919061257a565b3480156105fb57600080fd5b5061060f61060a3660046125f4565b610d27565b60408051921515835263ffffffff909116602083015201610262565b34801561063757600080fd5b506102086106463660046123a0565b610dca565b34801561065757600080fd5b506206978061028b565b34801561066d57600080fd5b5061060f61067c3660046123a0565b610de1565b34801561068d57600080fd5b5061020861069c36600461263f565b610e5e565b3480156106ad57600080fd5b5061028b6106bc3660046124b1565b610e70565b3480156106cd57600080fd5b506106e16106dc36600461265d565b610fca565b6040805192835263ffffffff909116602083015201610262565b34801561070757600080fd5b506102086107163660046123a0565b61110f565b610723611138565b60005b8281101561076f5761075f85858584818110610744576107446126cf565b905060200201602081019061075991906126e5565b846111b3565b61076881612718565b9050610726565b5050505050565b6001600160401b0381166000908152600160208190526040822001546107ab90600160801b90046001600160701b0316611235565b92915050565b6107b9611138565b6107c38282611254565b5050565b6107cf611138565b604051637a9e5e4b60e01b81526001600160a01b038281166004830152831690637a9e5e4b90602401600060405180830381600087803b15801561081257600080fd5b505af1158015610826573d6000803e3d6000fd5b505050505050565b600033818061083f838888886112fa565b9150915081158015610855575063ffffffff8116155b156108a8578287610866888861134d565b6040516381c6f24b60e01b81526001600160a01b0393841660048201529290911660248301526001600160e01b03191660448201526064015b60405180910390fd5b60006108b684898989610bfa565b9050600063ffffffff83161515806108dd57506108d2826109f7565b65ffffffffffff1615155b156108ee576108eb82611365565b90505b6003546109048a6108ff8b8b61134d565b611465565b60038190555061094c8a8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152503492506114a7915050565b506003559450505050505b9392505050565b610966611138565b61097a838361097486610776565b84611544565b50505050565b6001600160401b03821660009081526001602090815260408083206001600160a01b03851684529091528120805465ffffffffffff8116929182918291906109d790600160301b90046001600160701b031661178f565b969991985096509350505050565b6109ed611138565b6107c382826117b2565b60008181526002602052604081205465ffffffffffff16610a1781611856565b610a215780610957565b60009392505050565b6001600160a01b0381166000908152602081905260408120600101546107ab906001600160701b0316611235565b610a60611138565b6107c38282611885565b6001600160a01b0382166000908152602081815260408083206001600160e01b0319851684529091529020546001600160401b031692915050565b610aad611138565b6001600160401b0383161580610acb57506001600160401b03838116145b15610af45760405163061c6a4360e21b81526001600160401b038416600482015260240161089f565b826001600160401b03167f1256f5b5ecb89caec12db449738f2fbcd1ba5806cf38f35413f4e5c15bf6a4508383604051610b2f92919061275a565b60405180910390a2505050565b60408051638fb3603760e01b80825291513392918391638fb36037916004808201926020929091908290030181865afa158015610b7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba19190612776565b6001600160e01b03191614610bd457604051630641fee960e31b81526001600160a01b038216600482015260240161089f565b61076f610be385838686610bfa565b611365565b610bf0611138565b6107c38282611937565b600084848484604051602001610c139493929190612793565b604051602081830303815290604052805190602001209050949350505050565b6060816001600160401b03811115610c4d57610c4d6127c0565b604051908082528060200260200182016040528015610c8057816020015b6060815260200190600190039081610c6b5790505b50905060005b82811015610d2057610cf030858584818110610ca457610ca46126cf565b9050602002810190610cb691906127d6565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a4892505050565b828281518110610d0257610d026126cf565b60200260200101819052508080610d1890612718565b915050610c86565b5092915050565b6001600160a01b0382166000908152602081905260408120600101548190600160701b900460ff1615610d5f57506000905080610dc2565b306001600160a01b03861603610d8457610d798484611abe565b600091509150610dc2565b6000610d908585610a6a565b9050600080610d9f8389610de1565b9150915081610db057600080610dba565b63ffffffff811615815b945094505050505b935093915050565b610dd2611138565b610ddc8282611ad5565b505050565b60008067fffffffffffffffe196001600160401b03851601610e095750600190506000610e57565b600080610e168686610980565b5050915091508165ffffffffffff16600014158015610e4c5750610e38611bc2565b65ffffffffffff168265ffffffffffff1611155b93509150610e579050565b9250929050565b610e66611138565b6107c38282611bd2565b60003381610e7e858561134d565b90506000610e8e88888888610bfa565b60008181526002602052604081205491925065ffffffffffff9091169003610ecc5760405163060a299b60e41b81526004810182905260240161089f565b826001600160a01b0316886001600160a01b031614610f68576000610ef2600085610de1565b5090506000610f0d610f076102258b87610a6a565b86610de1565b50905081158015610f1c575080155b15610f6557604051630ff89d4760e21b81526001600160a01b038087166004830152808c1660248301528a1660448201526001600160e01b03198516606482015260840161089f565b50505b600081815260026020526040808220805465ffffffffffff1916908190559051600160301b90910463ffffffff1691829184917fbd9ac67a6e2f6463b80927326310338bcbb4bdb7936ce1365ea3e01067e7b9f791a398975050505050505050565b6000803381610fdb828989896112fa565b91505060008163ffffffff16610fef611bc2565b610ff9919061281c565b905063ffffffff82161580611030575060008665ffffffffffff1611801561103057508065ffffffffffff168665ffffffffffff16105b156110415782896108668a8a61134d565b61105b8665ffffffffffff168265ffffffffffff16611c8f565b9550611069838a8a8a610bfa565b945061107485611ca5565b60008581526002602052604090819020805465ffffffffffff891669ffffffffffffffffffff19821617600160301b9182900463ffffffff90811660010190811692830291909117909255915190955086907f82a2da5dee54ea8021c6545b4444620291e07ee83be6dd57edb175062715f3b4906110fb908a9088908f908f908f9061283b565b60405180910390a350505094509492505050565b6001600160a01b0381163314610dd257604051635f159e6360e01b815260040160405180910390fd5b33600080611147838236611cf2565b9150915081610ddc578063ffffffff166000036111a357600061116a8136611daa565b5060405163f07e038f60e01b81526001600160a01b03871660048201526001600160401b0382166024820152909250604401905061089f565b61097a610be38430600036610bfa565b6001600160a01b0383166000818152602081815260408083206001600160e01b0319871680855290835292819020805467ffffffffffffffff19166001600160401b038716908117909155905192835292917f9ea6790c7dadfd01c9f8b9762b3682607af2c7e79e05a9f9fdf5580dde949151910160405180910390a3505050565b60008061124a836001600160701b031661178f565b5090949350505050565b306001600160a01b0383160361128857604051630b40d17960e31b81526001600160a01b038316600482015260240161089f565b6001600160a01b038216600081815260208190526040908190206001018054841515600160701b0260ff60701b19909116179055517f90d4e7bb7e5d933792b3562e1741306f8be94837e1348dacef9b6f1df56eb138906112ee90841515815260200190565b60405180910390a25050565b600080306001600160a01b0386160361132157611318868585611cf2565b91509150611344565b6004831061133d57611338868661060a878761134d565b611318565b5060009050805b94509492505050565b600061135c6004828486612881565b610957916128ab565b60008181526002602052604081205465ffffffffffff811690600160301b900463ffffffff168183036113ae5760405163060a299b60e41b81526004810185905260240161089f565b6113b6611bc2565b65ffffffffffff168265ffffffffffff1611156113e957604051630c65b5bd60e11b81526004810185905260240161089f565b6113f282611856565b1561141357604051631e2975b960e21b81526004810185905260240161089f565b600084815260026020526040808220805465ffffffffffff191690555163ffffffff83169186917f76a2a46953689d4861a5d3f6ed883ad7e6af674a21f8e162707159fc9dde614d9190a39392505050565b604080516001600160a01b03939093166020808501919091526001600160e01b0319929092168382015280518084038201815260609093019052815191012090565b6060814710156114cc5760405163cd78605960e01b815230600482015260240161089f565b600080856001600160a01b031684866040516114e891906128db565b60006040518083038185875af1925050503d8060008114611525576040519150601f19603f3d011682016040523d82523d6000602084013e61152a565b606091505b509150915061153a868383611f93565b9695505050505050565b600067fffffffffffffffe196001600160401b038616016115835760405163061c6a4360e21b81526001600160401b038616600482015260240161089f565b6001600160401b03851660009081526001602090815260408083206001600160a01b038816845290915281205465ffffffffffff1615908115611675578463ffffffff166115cf611bc2565b6115d9919061281c565b905060405180604001604052808265ffffffffffff1681526020016116078663ffffffff1663ffffffff1690565b6001600160701b039081169091526001600160401b03891660009081526001602090815260408083206001600160a01b038c1684528252909120835181549490920151909216600160301b026001600160a01b031990931665ffffffffffff90911617919091179055611721565b6001600160401b03871660009081526001602090815260408083206001600160a01b038a1684529091528120546116bf91600160301b9091046001600160701b0316908690611fef565b6001600160401b03891660009081526001602090815260408083206001600160a01b038c168452909152902080546001600160701b03909316600160301b0273ffffffffffffffffffffffffffff000000000000199093169290921790915590505b6040805163ffffffff8616815265ffffffffffff831660208201528315158183015290516001600160a01b038816916001600160401b038a16917ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf9181900360600190a35095945050505050565b60008060006117a5846117a0611bc2565b612099565b9250925092509193909250565b6001600160401b03821615806117d057506001600160401b03828116145b156117f95760405163061c6a4360e21b81526001600160401b038316600482015260240161089f565b6001600160401b038281166000818152600160208190526040808320909101805467ffffffffffffffff19169486169485179055517f1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e63409190a35050565b6000611860611bc2565b65ffffffffffff1661187562093a808461281c565b65ffffffffffff16111592915050565b6001600160401b03821615806118a357506001600160401b03828116145b156118cc5760405163061c6a4360e21b81526001600160401b038316600482015260240161089f565b6001600160401b03828116600081815260016020819052604080832090910180546fffffffffffffffff00000000000000001916600160401b958716958602179055517f7a8059630b897b5de4c08ade69f8b90c3ead1f8596d62d10b6c4d14a0afb4ae29190a35050565b67fffffffffffffffe196001600160401b038316016119745760405163061c6a4360e21b81526001600160401b038316600482015260240161089f565b6001600160401b0382166000908152600160208190526040822001546119ae90600160801b90046001600160701b03168362069780611fef565b6001600160401b0385166000818152600160208190526040918290200180546001600160701b03909516600160801b026dffffffffffffffffffffffffffff60801b199095169490941790935591519092507ffeb69018ee8b8fd50ea86348f1267d07673379f72cffdeccec63853ee8ce8b4890610b2f908590859063ffffffff92909216825265ffffffffffff16602082015260400190565b6060600080846001600160a01b031684604051611a6591906128db565b600060405180830381855af49150503d8060008114611aa0576040519150601f19603f3d011682016040523d82523d6000602084013e611aa5565b606091505b5091509150611ab5858383611f93565b95945050505050565b6000611aca8383611465565b600354149392505050565b600067fffffffffffffffe196001600160401b03841601611b145760405163061c6a4360e21b81526001600160401b038416600482015260240161089f565b6001600160401b03831660009081526001602090815260408083206001600160a01b038616845290915281205465ffffffffffff169003611b57575060006107ab565b6001600160401b03831660008181526001602090815260408083206001600160a01b038716808552925280832080546001600160a01b0319169055519092917ff229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c16691a350600192915050565b6000611bcd426120ed565b905090565b6001600160a01b038216600090815260208190526040812060010154611c05906001600160701b03168362069780611fef565b6001600160a01b0385166000818152602081815260409182902060010180546dffffffffffffffffffffffffffff19166001600160701b039690961695909517909455805163ffffffff8716815265ffffffffffff841694810194909452919350917fa56b76017453f399ec2327ba00375dbfb1fd070ff854341ad6191e6a2e2de19c9101610b2f565b6000818311611c9e5781610957565b5090919050565b60008181526002602052604090205465ffffffffffff168015801590611cd15750611ccf81611856565b155b156107c35760405163813e945960e01b81526004810183905260240161089f565b6000806004831015611d0957506000905080610dc2565b306001600160a01b03861603611d2c57610d7930611d27868661134d565b611abe565b6000806000611d3b8787611daa565b92509250925082611d555760008094509450505050610dc2565b600080611d62848b610de1565b9150915081611d7c57600080965096505050505050610dc2565b611d928363ffffffff168263ffffffff16611c8f565b63ffffffff8116159b909a5098505050505050505050565b600080806004841015611dc557506000915081905080611f8c565b6000611dd1868661134d565b90506001600160e01b031981166310a6aa3760e31b1480611e0257506001600160e01b031981166330cae18760e01b145b80611e1d57506001600160e01b0319811663294b14a960e11b145b80611e3857506001600160e01b03198116635326cae760e11b145b80611e5357506001600160e01b0319811663d22b598960e01b145b15611e6957600160008093509350935050611f8c565b6001600160e01b0319811663063fc60f60e21b1480611e9857506001600160e01b0319811663167bd39560e01b145b80611eb357506001600160e01b031981166308d6122d60e01b145b15611ef5576000611ec860246004888a612881565b810190611ed59190612408565b90506000611ee282610a2a565b60019650600095509350611f8c92505050565b6001600160e01b0319811663012e238d60e51b1480611f2457506001600160e01b03198116635be958b160e11b145b15611f7f576000611f3960246004888a612881565b810190611f46919061222b565b90506001611f70826001600160401b03908116600090815260016020819052604090912001541690565b60009450945094505050611f8c565b6000806000935093509350505b9250925092565b606082611fa857611fa382612124565b610957565b8151158015611fbf57506001600160a01b0384163b155b15611fe857604051639996b31560e01b81526001600160a01b038516600482015260240161089f565b5080610957565b6000806000612006866001600160701b0316611235565b905060006120438563ffffffff168763ffffffff168463ffffffff161161202e576000612038565b61203888856128f7565b63ffffffff16611c8f565b90508063ffffffff16612054611bc2565b61205e919061281c565b925063ffffffff8616602083901b67ffffffff0000000016604085901b6dffffffffffff000000000000000016171793505050935093915050565b6000808069ffffffffffffffffffff602086901c166001600160701b03861665ffffffffffff604088901c81169087168111156120d8578282826120dd565b816000805b9550955095505050509250925092565b600065ffffffffffff821115612120576040516306dfcc6560e41b8152603060048201526024810183905260440161089f565b5090565b8051156121345780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6001600160a01b038116811461214d57600080fd5b60008083601f84011261217757600080fd5b5081356001600160401b0381111561218e57600080fd5b6020830191508360208260051b8501011115610e5757600080fd5b80356001600160401b03811681146121c057600080fd5b919050565b600080600080606085870312156121db57600080fd5b84356121e681612150565b935060208501356001600160401b0381111561220157600080fd5b61220d87828801612165565b90945092506122209050604086016121a9565b905092959194509250565b60006020828403121561223d57600080fd5b610957826121a9565b6000806040838503121561225957600080fd5b823561226481612150565b91506020830135801515811461227957600080fd5b809150509250929050565b6000806040838503121561229757600080fd5b82356122a281612150565b9150602083013561227981612150565b60008083601f8401126122c457600080fd5b5081356001600160401b038111156122db57600080fd5b602083019150836020828501011115610e5757600080fd5b60008060006040848603121561230857600080fd5b833561231381612150565b925060208401356001600160401b0381111561232e57600080fd5b61233a868287016122b2565b9497909650939450505050565b803563ffffffff811681146121c057600080fd5b60008060006060848603121561237057600080fd5b612379846121a9565b9250602084013561238981612150565b915061239760408501612347565b90509250925092565b600080604083850312156123b357600080fd5b6122a2836121a9565b600080604083850312156123cf57600080fd5b6123d8836121a9565b91506123e6602084016121a9565b90509250929050565b60006020828403121561240157600080fd5b5035919050565b60006020828403121561241a57600080fd5b813561095781612150565b6001600160e01b03198116811461214d57600080fd5b6000806040838503121561244e57600080fd5b823561245981612150565b9150602083013561227981612425565b60008060006040848603121561247e57600080fd5b612313846121a9565b6000806040838503121561249a57600080fd5b6124a3836121a9565b91506123e660208401612347565b600080600080606085870312156124c757600080fd5b84356124d281612150565b935060208501356124e281612150565b925060408501356001600160401b038111156124fd57600080fd5b612509878288016122b2565b95989497509550505050565b6000806020838503121561252857600080fd5b82356001600160401b0381111561253e57600080fd5b61254a85828601612165565b90969095509350505050565b60005b83811015612571578181015183820152602001612559565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156125e757878503603f19018452815180518087526125c8818989018a8501612556565b601f01601f1916959095018601945092850192908501906001016125a1565b5092979650505050505050565b60008060006060848603121561260957600080fd5b833561261481612150565b9250602084013561262481612150565b9150604084013561263481612425565b809150509250925092565b6000806040838503121561265257600080fd5b82356124a381612150565b6000806000806060858703121561267357600080fd5b843561267e81612150565b935060208501356001600160401b0381111561269957600080fd5b6126a5878288016122b2565b909450925050604085013565ffffffffffff811681146126c457600080fd5b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156126f757600080fd5b813561095781612425565b634e487b7160e01b600052601160045260246000fd5b60006001820161272a5761272a612702565b5060010190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600061276e602083018486612731565b949350505050565b60006020828403121561278857600080fd5b815161095781612425565b6001600160a01b0385811682528416602082015260606040820181905260009061153a9083018486612731565b634e487b7160e01b600052604160045260246000fd5b6000808335601e198436030181126127ed57600080fd5b8301803591506001600160401b0382111561280757600080fd5b602001915036819003821315610e5757600080fd5b65ffffffffffff818116838216019080821115610d2057610d20612702565b65ffffffffffff861681526001600160a01b038581166020830152841660408201526080606082018190526000906128769083018486612731565b979650505050505050565b6000808585111561289157600080fd5b8386111561289e57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156128d35780818660040360031b1b83161692505b505092915050565b600082516128ed818460208701612556565b9190910192915050565b63ffffffff828116828216039080821115610d2057610d2061270256fea2646970667358221220852e1b06c04d0d52371fd43f8845e54b847a0e8aa854c61f246ae78531fd2ee364736f6c63430008140033",
1397
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103275760003560e01c8063605aa10a116101b8578063bc62a0a511610104578063d78a83b1116100a2578063ee6bce211161007c578063ee6bce21146109bd578063f720fb3a146109d0578063fcc44a4414610a02578063ff90909214610a1557600080fd5b8063d78a83b11461099a578063ec87621c146109ad578063ee0ad9e8146109b557600080fd5b8063c48a062f116100de578063c48a062f14610938578063c6a001791461094b578063ced7289d1461095e578063d5f394881461098957600080fd5b8063bc62a0a5146108df578063bcfb11b014610907578063bf7e214f1461093057600080fd5b8063868923131161017157806392bdd9bd1161014b57806392bdd9bd1461082e578063a7328d43146108b1578063b3ecf236146108c4578063b7009613146108cc57600080fd5b806386892313146107d85780638fb36037146107eb57806391e8af981461080057600080fd5b8063605aa10a1461075757806364fc31421461076a5780636e879e321461077d578063728a61a8146107aa5780637a9e5e4b146107bd5780638308ceb1146107d057600080fd5b80632e8d14431161027757806339ff53c2116102305780633fd855611161020a5780633fd8556114610649578063420e0b351461065c5780635bfa50271461066f5780635fa8aad41461074457600080fd5b806339ff53c21461061b5780633cc3ef7f146106235780633d15c6f61461063657600080fd5b80632e8d14431461054d578063328c4c30146105805780633406b152146105ac57806335471f80146105ed578063384c9a5714610600578063392f5f641461061357600080fd5b80632457d64a116102e457806326decd40116102be57806326decd40146104e357806327721344146104f657806327e3da43146105275780632c35c3b31461053a57600080fd5b80632457d64a1461047d57806324913ce61461049257806326d60fb4146104db57600080fd5b8063030149741461032c5780630f4809ac1461035257806311a4b5831461037557806312e1ebc5146103ae57806315fb0abb1461042c5780631630d7d61461044c575b600080fd5b61033f61033a366004614ca1565b610a3f565b6040519081526020015b60405180910390f35b610365610360366004614cd3565b610a66565b6040519015158152602001610349565b6103a16040518060400160405280600d81526020016c14dd185ada5b99d5185c99d95d609a1b81525081565b6040516103499190614d40565b61040a6103bc366004614cd3565b6040805180820190915260008082526020820152506001600160a01b03166000908152600660209081526040918290208251808401909352805483526001015464ffffffffff169082015290565b604080518251815260209283015164ffffffffff169281019290925201610349565b61043f61043a366004614e54565b610b02565b6040516103499190614e99565b6103a1604051806040016040528060128152602001715374616b696e6753657276696365526f6c6560701b81525081565b61049061048b366004614eba565b610c23565b005b6104a56104a0366004614ef3565b610c47565b6040805183516001600160e01b0319168152602093840151938101939093526001600160401b0390911690820152606001610349565b60085461033f565b6103656104f1366004614cd3565b610eb9565b6103a16040518060400160405280601281526020017114dd185ada5b99d4dd1bdc9955185c99d95d60721b81525081565b610490610535366004614f1f565b610f28565b610490610548366004614f6a565b611222565b6103a16040518060400160405280601481526020017314995b19585cd953585b9859d95c95185c99d95d60621b81525081565b600154600160a01b90046001600160401b03165b6040516001600160401b039091168152602001610349565b6105d56105ba366004614f98565b6000908152600760205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610349565b61033f6105fb366004614cd3565b6112cd565b61049061060e366004614ca1565b61135a565b60045461033f565b6105946113a0565b610490610631366004614f6a565b6113af565b610490610644366004614fb1565b611455565b610594610657366004614f98565b611469565b61049061066a366004615021565b6114ae565b6106ff61067d366004614ca1565b604080516080810182526000808252602082018190529181018290526060810191909152506001600160401b03908116600090815260026020818152604092839020835160808101855281549095168552600181015491850191909152015464ffffffffff811691830191909152600160281b900460ff161515606082015290565b604051610349919081516001600160401b031681526020808301519082015260408083015164ffffffffff169082015260609182015115159181019190915260800190565b61049061075236600461504f565b611537565b610365610765366004614cd3565b61154a565b610365610778366004614f6a565b6115bd565b6103a16040518060400160405280600e81526020016d4769664d616e61676572526f6c6560901b81525081565b6105d56107b8366004614f98565b611644565b6104906107cb366004614cd3565b611674565b6105946116f7565b6104906107e636600461507b565b61176f565b6107f36117e4565b60405161034991906150a9565b6103a16040518060400160405280600f81526020016e506f6f6c53657276696365526f6c6560881b81525081565b61088b61083c366004614f98565b6040805180820190915260008082526020820152506000908152600360209081526040918290208251808401909352546001600160401b0381168352600160401b900460ff1615159082015290565b6040805182516001600160401b0316815260209283015115159281019290925201610349565b6103656108bf366004614ca1565b61181d565b6105946118c8565b6103656108da3660046150be565b61191c565b6103a16040518060400160405280600981526020016841646d696e526f6c6560b81b81525081565b6103a16040518060400160405280600a8152602001695075626c6963526f6c6560b01b81525081565b6105d56119d6565b6104906109463660046151b4565b6119f2565b610365610959366004614ca1565b611a05565b6103a16040518060400160405280600c81526020016b47696641646d696e526f6c6560a01b81525081565b6001546001600160a01b03166105d5565b6105d56109a83660046151f9565b611a2e565b610594611a57565b610594611a66565b6104906109cb366004615217565b611a70565b6103a160405180604001604052806013815260200172151bdad95b949959da5cdd1c9e55185c99d95d606a1b81525081565b610490610a1036600461526e565b611a84565b6103a16040518060400160405280600b81526020016a4d616e61676572526f6c6560a81b81525081565b6001600160401b0381166000908152600560205260408120610a6090611a97565b92915050565b6000813b610a7657506000919050565b60408051600481526024810182526020810180516001600160e01b031663bf7e214f60e01b17905290516000916001600160a01b03851691610ab8919061528c565b600060405180830381855afa9150503d8060008114610af3576040519150601f19603f3d011682016040523d82523d6000602084013e610af8565b606091505b5090949350505050565b60408051808201825260008082526020820152815180830192839052636b15ee8b60e01b909252908073__$0904195350e4c23ecb1d51df0a32586dcd$__636b15ee8b610b5287604485016150a9565b602060405180830381865af4158015610b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9391906152a8565b6001600160e01b031916815260200173__$9a094f9b231ed0f5f85a69be8408d93180$__63cdc23e69856040518263ffffffff1660e01b8152600401610bd99190614d40565b602060405180830381865af4158015610bf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1a91906152c5565b90529392505050565b610c30335b600036611aa1565b610c3981611b9f565b610c438282611fa1565b5050565b60408051808201909152600080825260208201526001600160a01b038316600090815260096020526040808220905163dfe63db960e01b8152829173__$8df0087758613aef8a614b5774fdb3323b$__9163dfe63db991610cb5918890600401918252602082015260400190565b602060405180830381865af4158015610cd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf691906152a8565b6040805180820182526001600160e01b031983168082526001600160a01b03808a166000908152600a602090815285822084835281528582205490850152549351636ea1af2560e11b815292975093945073__$1d92393fa9ccd763988368ce8a1cb90d26$__936368aebf7b931691636d5115bd918a9173__$0904195350e4c23ecb1d51df0a32586dcd$__9163dd435e4a91610d9691906004016150a9565b602060405180830381865af4158015610db3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd791906152a8565b6040516001600160e01b031960e085901b811682526001600160a01b03909316600482015291166024820152604401602060405180830381865afa158015610e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4791906152de565b6040516001600160e01b031960e084901b1681526001600160401b039091166004820152602401602060405180830381865af4158015610e8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eaf91906152de565b9150509250929050565b6000805460405163a166aa8960e01b81526001600160a01b0384811660048301529091169063a166aa8990602401602060405180830381865afa158015610f04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6091906152fb565b6001546001600160a01b0316610f4b57600180546001600160a01b031916331790555b6001546001600160a01b03163314610f7657604051635adaa55f60e11b815260040160405180910390fd5b601054600160a01b900460ff1615610fa157604051632a4ddb6360e01b815260040160405180910390fd5b6010805460ff60a01b1916600160a01b179055826001600160a01b031663fee11aaf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ff2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110169190615318565b600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550826001600160a01b031663caed98976040518163ffffffff1660e01b8152600401602060405180830381865afa15801561107a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109e9190615318565b600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550826001600160a01b0316630e9ed68b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111269190615318565b600f80546001600160a01b0319166001600160a01b03929092169182179055604080516321b1d5d560e21b815290516386c75754916004808201926020929091908290030181865afa158015611180573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a49190615318565b601080546001600160a01b0319166001600160a01b03928316179055600e54604080518082019091526013815272151bdad95b949959da5cdd1c9e55185c99d95d606a1b60208201526111fb9291909116906122d6565b6112048261274e565b61120d816128ab565b611215612c10565b61121d612e2d565b505050565b8061122c81611a05565b611259576040516309c7013760e21b81526001600160401b03821660048201526024015b60405180910390fd5b6001600160401b0380821660009081526002602052604090205461127f913391166115bd565b6112ba576001600160401b038181166000908152600260205260409081902054905163b889d72560e01b815291166004820152602401611250565b6112c333610c28565b61121d8284613ba1565b6001600160a01b038116600090815260096020526040808220905163868b3e0760e01b8152600481019190915273__$8df0087758613aef8a614b5774fdb3323b$__9063868b3e0790602401602060405180830381865af4158015611336573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6091906152c5565b8061136533826115bd565b61138d576040516323db29b960e21b81526001600160401b0382166004820152602401611250565b61139633610c28565b610c438233613ba1565b60006113aa613c0e565b905090565b806113b981611a05565b6113e1576040516309c7013760e21b81526001600160401b0382166004820152602401611250565b6001600160401b03808216600090815260026020526040902054611407913391166115bd565b611442576001600160401b038181166000908152600260205260409081902054905163b889d72560e01b815291166004820152602401611250565b61144b33610c28565b61121d8284613c62565b61145e33610c28565b61121d838383613ce0565b60006004828154811061147e5761147e615335565b90600052602060002090600491828204019190066008029054906101000a90046001600160401b03169050919050565b6114b733610c28565b604051633b6bf6a760e11b815260ff82166004820152610c439073__$1d92393fa9ccd763988368ce8a1cb90d26$__906376d7ed4e90602401602060405180830381865af415801561150d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153191906152de565b83613c62565b61154033610c28565b610c4382826122d6565b6001600160a01b038116600090815260066020526040808220600101549051638d38cd4b60e01b815264ffffffffff909116600482015273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__90638d38cd4b90602401602060405180830381865af4158015610f04573d6000803e3d6000fd5b600080546040516368fc2b7760e11b81526001600160401b03841660048201526001600160a01b0385811660248301528392169063d1f856ee906044015b6040805180830381865afa158015611617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163b919061534b565b50949350505050565b60006008828154811061165957611659615335565b6000918252602090912001546001600160a01b031692915050565b3361167d6119d6565b6001600160a01b0316816001600160a01b0316146116b85760405162d1953b60e31b81526001600160a01b0382166004820152602401611250565b816001600160a01b03163b6000036116ee576040516361798f2f60e11b81526001600160a01b0383166004820152602401611250565b610c4382613f54565b60008060009054906101000a90046001600160a01b03166001600160a01b0316633ca7c02a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561174b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113aa91906152de565b61177833610c28565b60005460405163167bd39560e01b81526001600160a01b03848116600483015283151560248301529091169063167bd395906044015b600060405180830381600087803b1580156117c857600080fd5b505af11580156117dc573d6000803e3d6000fd5b505050505050565b6000805160206158e8833981519152805460009190600160a01b900460ff1661180e576000611817565b638fb3603760e01b5b91505090565b6001600160401b03811660009081526002602081815260408084209092015482516356db0c1960e11b81529251610a609364ffffffffff9092169273__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9263adb6183292600480830193928290030181865af4158015611894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b89190615383565b64ffffffffff9081169116111590565b60008060009054906101000a90046001600160a01b03166001600160a01b03166375b238fc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561174b573d6000803e3d6000fd5b60008054604051636ea1af2560e11b81526001600160a01b039091169063b7009613908690869073__$0904195350e4c23ecb1d51df0a32586dcd$__9063dd435e4a90611977906001600160e01b03198a16906004016150a9565b602060405180830381865af4158015611994573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b891906152a8565b6040518463ffffffff1660e01b81526004016115fb939291906153aa565b6000805160206158e8833981519152546001600160a01b031690565b6119fb33610c28565b610c438282613fb5565b6001600160401b031660009081526002602081905260409091200154600160281b900460ff1690565b6001600160401b0382166000908152600560205260408120611a509083613fd7565b9392505050565b611a63600060016153ed565b81565b60006113aa613fe3565b611a7933610c28565b61121d83838361401e565b611a8d33610c28565b610c438282614087565b6000610a60825490565b6000805160206158e8833981519152600080611adc611abe6119d6565b8730611ace600460008a8c61540d565b611ad791615437565b614260565b91509150816117dc5763ffffffff811615611b7c57825460ff60a01b1916600160a01b178355611b0a6119d6565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b8152600401611b3993929190615467565b600060405180830381600087803b158015611b5357600080fd5b505af1158015611b67573d6000803e3d6000fd5b5050845460ff60a01b19168555506117dc9050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401611250565b6000816001600160a01b031663b68d18096040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0391906154a7565b604051632b95d28f60e21b815260ff8216600482015290915060009073__$0d958e68cba84670b8f4a3f2f2686b1c6b$__9063ae574a3c90602401600060405180830381865af4158015611c5b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c8391908101906154c4565b90506000836001600160a01b0316630d8e6e2c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce9919061553a565b60405163c9e66e2960e01b815262ffffff909116600482015273__$8eede297b65ed5a56eb3f84d8232ae93f5$__9063c9e66e2990602401602060405180830381865af4158015611d3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6291906154a7565b604051632b10f60d60e21b815260ff8216600482015290915060009073__$b659da7d8a6d2d32aa6c1e17da23dc2174$__9063ac43d83490602401602060405180830381865af4158015611dba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dde91906152c5565b604080518082018252600381526205f76360ec1b6020820152905163348051d760e11b8152600481018390529192509060009073__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636900a3ae90602401600060405180830381865af4158015611e4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e7591908101906154c4565b9050600a8310611e9d57604051806040016040528060028152602001612fbb60f11b81525091505b6000858383604051602001611eb49392919061555f565b6040516020818303038152906040529050611ecf88826122d6565b6000868484604051602001611ee6939291906155b8565b60408051808303601f190181529082905263dda777d360e01b825260ff808b16600484015288166024830152915060009073__$1d92393fa9ccd763988368ce8a1cb90d26$__9063dda777d390604401602060405180830381865af4158015611f53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7791906152de565b9050611f8b81611f85614357565b84613ce0565b611f95818b613c62565b50505050505050505050565b6000816001600160a01b031663b68d18096040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fe1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200591906154a7565b90506000806000846001600160a01b0316630d8e6e2c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561204a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206e919061553a565b60405163c9e66e2960e01b815262ffffff909116600482015273__$8eede297b65ed5a56eb3f84d8232ae93f5$__9063c9e66e2990602401602060405180830381865af41580156120c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e791906154a7565b604051630e949b3560e21b815260ff861660048201529091506000906001600160a01b03881690633a526cd490602401600060405180830381865afa158015612134573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261215c9190810190615615565b905060005b81518110156122cc5781818151811061217c5761217c615335565b6020026020010151945061219d85612192606390565b60ff90811691161490565b156121b1576121aa614392565b9350612232565b60405163dda777d360e01b815260ff80871660048301528416602482015273__$1d92393fa9ccd763988368ce8a1cb90d26$__9063dda777d390604401602060405180830381865af415801561220b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222f91906152de565b93505b6040516374766d9b60e11b815260ff8088166004830152861660248201526000906001600160a01b038a169063e8ecdb3690604401600060405180830381865afa158015612284573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122ac91908101906156ae565b90506122b988868361401e565b50806122c481615761565b915050612161565b5050505050505050565b6122df8261154a565b15612399576001600160a01b03821660009081526006602052604090819020549051631623433d60e31b8152839173__$9a094f9b231ed0f5f85a69be8408d93180$__9163b11a19e8916123399160040190815260200190565b600060405180830381865af4158015612356573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261237e91908101906154c4565b60405163455f894360e01b815260040161125092919061577a565b60405163cdc23e6960e01b815260009073__$9a094f9b231ed0f5f85a69be8408d93180$__9063cdc23e69906123d3908590600401614d40565b602060405180830381865af41580156123f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241491906152c5565b60405163a9dbaf2560e01b81526004810182905290915073__$9a094f9b231ed0f5f85a69be8408d93180$__9063a9dbaf2590602401602060405180830381865af4158015612467573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248b91906152c5565b6000036124b6576040516389100c0960e01b81526001600160a01b0384166004820152602401611250565b6000818152600760205260409020546001600160a01b03161561250a5760008181526007602052604090819020549051638beac5bb60e01b815261125091859185916001600160a01b0316906004016157a6565b61251383610a66565b61253b5760405163680f41eb60e01b81526001600160a01b0384166004820152602401611250565b6000836001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259f9190615318565b90506125a96119d6565b6001600160a01b0316816001600160a01b0316146125f6576125c96119d6565b6040516358dffd0760e01b81526001600160a01b0391821660048201529082166024820152604401611250565b604051806040016040528083815260200173__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015612650573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126749190615383565b64ffffffffff9081169091526001600160a01b038616600081815260066020908152604080832086518155958201516001968701805464ffffffffff191691909616179094558682526007905282812080546001600160a01b031990811684179091556008805495860181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3909301805490931617909155517f41a3bdd8567a380ee8bf6660dae135d2ee59322968c5c8cc1884a4b1be5050b190612740908690869061577a565b60405180910390a150505050565b61278b612759613fe3565b6127616118c8565b6040518060400160405280600c81526020016b47696641646d696e526f6c6560a01b815250613ce0565b61279c612796613fe3565b82613c62565b6040805160028082526060828101909352816020015b60408051808201909152600080825260208201528152602001906001900390816127b2579050509050612815630af43fe160e01b604051806040016040528060118152602001706372656174654e65787452656c6561736560781b815250610b02565b8160008151811061282857612828615335565b602002602001018190525061286f63a284482460e01b6040518060400160405280601381526020017261637469766174654e65787452656c6561736560681b815250610b02565b8160018151811061288257612882615335565b6020908102919091010152600d54610c43906001600160a01b03166128a5613fe3565b8361401e565b6128ea6128b6613c0e565b6128be613fe3565b6040518060400160405280600e81526020016d4769664d616e61676572526f6c6560901b815250613ce0565b6128f5612796613c0e565b60408051600580825260c08201909252606091816020015b604080518082019091526000808252602082015281526020019060019003908161290d57905050905061296c6309824a8060e01b6040518060400160405280600d81526020016c3932b3b4b9ba32b92a37b5b2b760991b815250610b02565b8160008151811061297f5761297f615335565b60200260200101819052506129c6635fa4428d60e01b604051806040016040528060138152602001723932b3b4b9ba32b92932b6b7ba32aa37b5b2b760691b815250610b02565b816001815181106129d9576129d9615335565b6020026020010181905250612a166312cbf5ae60e01b6040518060400160405280600981526020016873657441637469766560b81b815250610b02565b81600281518110612a2957612a29615335565b6020026020010181905250612a70636f15f70e60e01b6040518060400160405280601381526020017239b2ba20b1ba34bb32a337b92b32b939b4b7b760691b815250610b02565b81600381518110612a8357612a83615335565b6020026020010181905250612ad463f16ddea160e01b6040518060400160405280601981526020017f7365744163746976655769746856657273696f6e436865636b00000000000000815250610b02565b81600481518110612ae757612ae7615335565b6020908102919091010152600e54612b0a906001600160a01b03166128a5613c0e565b6040805160028082526060820190925290816020015b6040805180820190915260008082526020820152815260200190600190039081612b20579050509050612b8463ec90c66b60e01b60405180604001604052806012815260200171707265706172654e65787452656c6561736560701b815250610b02565b81600081518110612b9757612b97615335565b6020026020010181905250612bda63fdd9ec7d60e01b6040518060400160405280600f81526020016e72656769737465725365727669636560881b815250610b02565b81600181518110612bed57612bed615335565b6020908102919091010152600d54610c43906001600160a01b03166128a5613c0e565b600d5460408051808201909152601481527314995b19585cd953585b9859d95c95185c99d95d60621b6020820152612c51916001600160a01b0316906122d6565b600073__$1d92393fa9ccd763988368ce8a1cb90d26$__636d3d2a7e60076040516001600160e01b031960e084901b16815260ff9091166004820152602401602060405180830381865af4158015612cad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd191906152de565b9050612d1181612cdf614357565b6040518060400160405280601481526020017314995b19585cd953585b9859d95c95185c99d95d60621b815250613ce0565b600d54612d289082906001600160a01b0316613c62565b6040805160028082526060828101909352816020015b6040805180820190915260008082526020820152815260200190600190039081612d3e579050509050612da0632457d64a60e01b6040518060400160405280601081526020016f617574686f72697a655365727669636560801b815250610b02565b81600081518110612db357612db3615335565b6020026020010181905250612e0463420e0b3560e01b6040518060400160405280601e81526020017f6772616e7453657276696365526f6c65466f72416c6c56657273696f6e730000815250610b02565b81600181518110612e1757612e17615335565b6020026020010181905250610c4330838361401e565b600f5460408051808201909152600d81526c14dd185ada5b99d5185c99d95d609a1b6020820152612e67916001600160a01b0316906122d6565b60105460408051808201909152601281527114dd185ada5b99d4dd1bdc9955185c99d95d60721b6020820152612ea6916001600160a01b0316906122d6565b600073__$1d92393fa9ccd763988368ce8a1cb90d26$__6376d7ed4e60036040516001600160e01b031960e084901b16815260ff9091166004820152602401602060405180830381865af4158015612f02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f2691906152de565b9050612f6481612f34614357565b604051806040016040528060128152602001715374616b696e6753657276696365526f6c6560701b815250613ce0565b60408051600d8082526101c08201909252606091816020015b6040805180820190915260008082526020820152815260200190600190039081612f7d579050509050612fdd63562119ee60e01b6040518060400160405280600e81526020016d1c9959da5cdd195c95185c99d95d60921b815250610b02565b81600081518110612ff057612ff0615335565b6020026020010181905250613034635ecf260f60e01b6040518060400160405280601081526020016f1cd95d131bd8dada5b99d4195c9a5bd960821b815250610b02565b8160018151811061304757613047615335565b6020026020010181905250613088632a80f67360e01b6040518060400160405280600d81526020016c7365745265776172645261746560981b815250610b02565b8160028151811061309b5761309b615335565b60200260200101819052506130e363de0eb85f60e01b60405180604001604052806014815260200173726566696c6c526577617264526573657276657360601b815250610b02565b816003815181106130f6576130f6615335565b602002602001018190525061314063e8ce883d60e01b604051806040016040528060168152602001757769746864726177526577617264526573657276657360501b815250610b02565b8160048151811061315357613153615335565b60200260200101819052506131926331ecc5cc60e01b6040518060400160405280600b81526020016a6372656174655374616b6560a81b815250610b02565b816005815181106131a5576131a5615335565b60200260200101819052506131de636c1e9dff60e01b604051806040016040528060058152602001647374616b6560d81b815250610b02565b816006815181106131f1576131f1615335565b602002602001018190525061322c63dea4ccf260e01b60405180604001604052806007815260200166756e7374616b6560c81b815250610b02565b8160078151811061323f5761323f615335565b602002602001018190525061327a635cbb7d8560e01b6040518060400160405280600781526020016672657374616b6560c81b815250610b02565b8160088151811061328d5761328d615335565b60200260200101819052506132ce6310a0638a60e01b6040518060400160405280600d81526020016c7570646174655265776172647360981b815250610b02565b816009815181106132e1576132e1615335565b602002602001018190525061332163719f761a60e01b6040518060400160405280600c81526020016b636c61696d5265776172647360a01b815250610b02565b81600a8151811061333457613334615335565b602002602001018190525061337863e3a817cd60e01b6040518060400160405280601081526020016f18dbdb1b1958dd111a5c105b5bdd5b9d60821b815250610b02565b81600b8151811061338b5761338b615335565b60200260200101819052506133d063628937d260e01b604051806040016040528060118152602001701d1c985b9cd9995c911a5c105b5bdd5b9d607a1b815250610b02565b81600c815181106133e3576133e3615335565b6020908102919091010152600f54613405906001600160a01b0316838361401e565b600073__$1d92393fa9ccd763988368ce8a1cb90d26$__6376d7ed4e600f6040516001600160e01b031960e084901b16815260ff9091166004820152602401602060405180830381865af4158015613461573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061348591906152de565b90506134c081613493614357565b6040518060400160405280600f81526020016e506f6f6c53657276696365526f6c6560881b815250613ce0565b6040805160028082526060820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816134d657905050915061354063ea48ce9b60e01b604051806040016040528060188152602001771a5b98dc99585cd9551bdd185b15985b1d59531bd8dad95960421b815250610b02565b8260008151811061355357613553615335565b602002602001018190525061359f63d44f8a4b60e01b60405180604001604052806018815260200177191958dc99585cd9551bdd185b15985b1d59531bd8dad95960421b815250610b02565b826001815181106135b2576135b2615335565b6020908102919091010152600f546135d4906001600160a01b0316828461401e565b600073__$1d92393fa9ccd763988368ce8a1cb90d26$__636d3d2a7e60036040516001600160e01b031960e084901b16815260ff9091166004820152602401602060405180830381865af4158015613630573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061365491906152de565b905061368d81613662614357565b6040518060400160405280600d81526020016c14dd185ada5b99d5185c99d95d609a1b815250613ce0565b600f546136a49082906001600160a01b0316613c62565b60408051600e8082526101e0820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816136bb57905050925061371b639a72636460e01b6040518060400160405280600e81526020016d7365745374616b696e675261746560901b815250610b02565b8360008151811061372e5761372e615335565b602002602001018190525061376e632df8be9b60e01b6040518060400160405280600c81526020016b18dc99585d1955185c99d95d60a21b815250610b02565b8360018151811061378157613781615335565b60200260200101819052506137c1631807a48860e01b6040518060400160405280600c81526020016b1d5c19185d1955185c99d95d60a21b815250610b02565b836002815181106137d4576137d4615335565b602002602001018190525061381863d7537c3760e01b6040518060400160405280601081526020016f696e637265617365526573657276657360801b815250610b02565b8360038151811061382b5761382b615335565b602002602001018190525061386f63136cfef760e01b6040518060400160405280601081526020016f6465637265617365526573657276657360801b815250610b02565b8360048151811061388257613882615335565b60200260200101819052506138ce6377f9185160e01b604051806040016040528060188152602001771a5b98dc99585cd9551bdd185b15985b1d59531bd8dad95960421b815250610b02565b836005815181106138e1576138e1615335565b602002602001018190525061392d63fb39549c60e01b60405180604001604052806018815260200177191958dc99585cd9551bdd185b15985b1d59531bd8dad95960421b815250610b02565b8360068151811061394057613940615335565b602002602001018190525061397a6362841be260e01b6040518060400160405280600681526020016563726561746560d01b815250610b02565b8360078151811061398d5761398d615335565b60200260200101819052506139c7634b51da0c60e01b6040518060400160405280600681526020016575706461746560d01b815250610b02565b836008815181106139da576139da615335565b6020026020010181905250613a1b633861317f60e01b6040518060400160405280600d81526020016c696e6372656173655374616b6560981b815250610b02565b83600981518110613a2e57613a2e615335565b6020026020010181905250613a706330f4419960e01b6040518060400160405280600e81526020016d72657374616b655265776172647360901b815250610b02565b83600a81518110613a8357613a83615335565b6020026020010181905250613ac4634a2101d160e01b6040518060400160405280600d81526020016c7570646174655265776172647360981b815250610b02565b83600b81518110613ad757613ad7615335565b6020026020010181905250613b14633fbdfe3260e01b60405180604001604052806009815260200168636c61696d5570546f60b81b815250610b02565b83600c81518110613b2757613b27615335565b6020026020010181905250613b6663eb98e8a060e01b6040518060400160405280600b81526020016a756e7374616b655570546f60a81b815250610b02565b83600d81518110613b7957613b79615335565b6020908102919091010152601054613b9b906001600160a01b0316828561401e565b50505050565b613baa826143d3565b6001600160401b0382166000908152600560205260409020613bcc908261455c565b50600054604051635be958b160e11b81526001600160401b03841660048201526001600160a01b0383811660248301529091169063b7d2b162906044016117ae565b6040516368aebf7b60e01b81526003600482015260009073__$1d92393fa9ccd763988368ce8a1cb90d26$__906368aebf7b906024015b602060405180830381865af415801561174b573d6000803e3d6000fd5b613c6b826143d3565b613c7482614571565b6001600160401b0382166000908152600560205260409020613c9690826145a6565b506000805460405163012e238d60e51b81526001600160401b03851660048201526001600160a01b03848116602483015260448201939093529116906325c471a0906064016117ae565b613ce983611a05565b15613da6576001600160401b03831660009081526002602052604090819020600101549051631623433d60e31b8152849173__$9a094f9b231ed0f5f85a69be8408d93180$__9163b11a19e891613d469160040190815260200190565b600060405180830381865af4158015613d63573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d8b91908101906154c4565b60405163212f3d9960e01b81526004016112509291906157db565b613daf82611a05565b613dd75760405163ea5c764960e01b81526001600160401b0383166004820152602401611250565b60405163cdc23e6960e01b815260009073__$9a094f9b231ed0f5f85a69be8408d93180$__9063cdc23e6990613e11908590600401614d40565b602060405180830381865af4158015613e2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e5291906152c5565b60405163a9dbaf2560e01b81526004810182905290915073__$9a094f9b231ed0f5f85a69be8408d93180$__9063a9dbaf2590602401602060405180830381865af4158015613ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ec991906152c5565b600003613ef4576040516321ab17ab60e01b81526001600160401b0385166004820152602401611250565b600081815260036020526040902054600160401b900460ff1615613f4957600081815260036020526040908190205490516345e6904160e01b815261125091869185916001600160401b0316906004016157fd565b613b9b8484836145bb565b6000805160206158e883398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b600080613fc3848484614803565b9050613b9b84613fd16118c8565b83614aae565b6000611a508383614b19565b6040516368aebf7b60e01b81526002600482015260009073__$1d92393fa9ccd763988368ce8a1cb90d26$__906368aebf7b90602401613c45565b61403b8261402a6118c8565b6001600160401b0390811691161490565b15614064576040516323d0464560e21b81526001600160a01b0384166004820152602401611250565b60016000614073858484614803565b9050614080858583614aae565b5050505050565b614090826143d3565b6001600160401b0382166000908152600260208190526040909120015464ffffffffff1681156141625773__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015614103573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141279190615383565b6001600160401b038416600090815260026020819052604090912001805464ffffffffff191664ffffffffff92909216919091179055614206565b73__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af41580156141ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141cf9190615383565b6001600160401b038416600090815260026020819052604090912001805464ffffffffff191664ffffffffff929092169190911790555b604080516001600160401b0385168152831515602082015264ffffffffff8316918101919091527f5242c6819c8f01130e553b61669951ba4641163fb696d76efd88a73232223ff5906060015b60405180910390a1505050565b600080600080876001600160a01b0316878787604051602401614285939291906153aa565b60408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516142ba919061528c565b600060405180830381855afa9150503d80600081146142f5576040519150601f19603f3d011682016040523d82523d6000602084013e6142fa565b606091505b5091509150811561434c57604081511061432c5780806020019051810190614322919061534b565b909450925061434c565b602081511061434c578080602001905181019061434991906152fb565b93505b505094509492505050565b6040516368aebf7b60e01b81526000600482018190529073__$1d92393fa9ccd763988368ce8a1cb90d26$__906368aebf7b90602401613c45565b6040516368aebf7b60e01b81526001600160401b03600482015260009073__$1d92393fa9ccd763988368ce8a1cb90d26$__906368aebf7b90602401613c45565b6001600160401b03811660009081526002602081905260409091200154600160281b900460ff16614422576040516309c7013760e21b81526001600160401b0382166004820152602401611250565b60005460408051631d6c8e3f60e21b8152905183926001600160a01b0316916375b238fc9160048083019260209291908290030181865afa15801561446b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061448f91906152de565b6001600160401b0316816001600160401b03161480614533575060008054906101000a90046001600160a01b03166001600160a01b0316633ca7c02a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156144fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061451e91906152de565b6001600160401b0316816001600160401b0316145b15610c435760405163a72de1fb60e01b81526001600160401b0383166004820152602401611250565b6000611a50836001600160a01b038416614b43565b61457a8161181d565b156145a357604051630b4a0c0760e31b81526001600160401b0382166004820152602401611250565b50565b6000611a50836001600160a01b038416614c3d565b6040518060800160405280836001600160401b0316815260200182815260200173__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af4158015614624573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146489190615383565b64ffffffffff9081168252600160209283018190526001600160401b038088166000818152600280875260408083208951815490871667ffffffffffffffff19909116178155898901518188015589820151920180546060909a01511515600160281b0265ffffffffffff19909a16929097169190911797909717909455855180870187528181528086018481528886526003968790528786209151825491511515600160401b0268ffffffffffffffffff1990921690851617179055600480549384018155938490528383047f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018054939095166008026101000a908102910219909116179091559051631623433d60e31b81527f7ca167efd1db6c7c8ad06526e52679f40c5fa09dac1d49d9a12e0a04cb39a628918591859173__$9a094f9b231ed0f5f85a69be8408d93180$__9163b11a19e8916147af9188910190815260200190565b600060405180830381865af41580156147cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526147f491908101906154c4565b60405161425393929190615820565b8151606090806001600160401b0381111561482057614820614d69565b604051908082528060200260200182016040528015614849578160200160208202803683370190505b509150614866604080518082019091526000808252602082015290565b6000805b83811015614aa35786818151811061488457614884615335565b6020026020010151925082600001519150851561492d576001600160a01b038816600090815260096020526040908190209051631b76c9b760e31b815260048101919091526001600160e01b03198316602482015273__$8df0087758613aef8a614b5774fdb3323b$__9063dbb64db89060440160006040518083038186803b15801561491057600080fd5b505af4158015614924573d6000803e3d6000fd5b505050506149bb565b6001600160a01b0388166000908152600960205260409081902090516313edd33560e31b815260048101919091526001600160e01b03198316602482015273__$8df0087758613aef8a614b5774fdb3323b$__90639f6e99a89060440160006040518083038186803b1580156149a257600080fd5b505af41580156149b6573d6000803e3d6000fd5b505050505b6020808401516001600160a01b038a166000908152600a835260408082206001600160e01b031987168084529452908190209190915551636ea1af2560e11b815273__$0904195350e4c23ecb1d51df0a32586dcd$__9163dd435e4a91614a2591906004016150a9565b602060405180830381865af4158015614a42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a6691906152a8565b858281518110614a7857614a78615335565b6001600160e01b03199092166020928302919091019091015280614a9b81615761565b91505061486a565b505050509392505050565b6000546040516308d6122d60e01b81526001600160a01b03909116906308d6122d90614ae29086908590879060040161584c565b600060405180830381600087803b158015614afc57600080fd5b505af1158015614b10573d6000803e3d6000fd5b50505050505050565b6000826000018281548110614b3057614b30615335565b9060005260206000200154905092915050565b60008181526001830160205260408120548015614c2c576000614b676001836158be565b8554909150600090614b7b906001906158be565b9050808214614be0576000866000018281548110614b9b57614b9b615335565b9060005260206000200154905080876000018481548110614bbe57614bbe615335565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080614bf157614bf16158d1565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a60565b6000915050610a60565b5092915050565b6000818152600183016020526040812054614c8457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a60565b506000610a60565b6001600160401b03811681146145a357600080fd5b600060208284031215614cb357600080fd5b8135611a5081614c8c565b6001600160a01b03811681146145a357600080fd5b600060208284031215614ce557600080fd5b8135611a5081614cbe565b60005b83811015614d0b578181015183820152602001614cf3565b50506000910152565b60008151808452614d2c816020860160208601614cf0565b601f01601f19169290920160200192915050565b602081526000611a506020830184614d14565b6001600160e01b0319811681146145a357600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715614da157614da1614d69565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614dcf57614dcf614d69565b604052919050565b60006001600160401b03821115614df057614df0614d69565b50601f01601f191660200190565b600082601f830112614e0f57600080fd5b8135614e22614e1d82614dd7565b614da7565b818152846020838601011115614e3757600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614e6757600080fd5b8235614e7281614d53565b915060208301356001600160401b03811115614e8d57600080fd5b610eaf85828601614dfe565b81516001600160e01b03191681526020808301519082015260408101610a60565b60008060408385031215614ecd57600080fd5b8235614ed881614cbe565b91506020830135614ee881614cbe565b809150509250929050565b60008060408385031215614f0657600080fd5b8235614f1181614cbe565b946020939093013593505050565b600080600060608486031215614f3457600080fd5b8335614f3f81614cbe565b92506020840135614f4f81614cbe565b91506040840135614f5f81614cbe565b809150509250925092565b60008060408385031215614f7d57600080fd5b8235614f8881614cbe565b91506020830135614ee881614c8c565b600060208284031215614faa57600080fd5b5035919050565b600080600060608486031215614fc657600080fd5b8335614fd181614c8c565b92506020840135614fe181614c8c565b915060408401356001600160401b03811115614ffc57600080fd5b61500886828701614dfe565b9150509250925092565b60ff811681146145a357600080fd5b6000806040838503121561503457600080fd5b823561503f81614cbe565b91506020830135614ee881615012565b6000806040838503121561506257600080fd5b8235614e7281614cbe565b80151581146145a357600080fd5b6000806040838503121561508e57600080fd5b823561509981614cbe565b91506020830135614ee88161506d565b6001600160e01b031991909116815260200190565b6000806000606084860312156150d357600080fd5b83356150de81614cbe565b925060208401356150ee81614cbe565b91506040840135614f5f81614d53565b60006001600160401b0382111561511757615117614d69565b5060051b60200190565b600082601f83011261513257600080fd5b81356020615142614e1d836150fe565b82815260069290921b8401810191818101908684111561516157600080fd5b8286015b848110156151a9576040818903121561517e5760008081fd5b615186614d7f565b813561519181614d53565b81528185013585820152835291830191604001615165565b509695505050505050565b600080604083850312156151c757600080fd5b82356151d281614cbe565b915060208301356001600160401b038111156151ed57600080fd5b610eaf85828601615121565b6000806040838503121561520c57600080fd5b8235614f1181614c8c565b60008060006060848603121561522c57600080fd5b833561523781614cbe565b9250602084013561524781614c8c565b915060408401356001600160401b0381111561526257600080fd5b61500886828701615121565b6000806040838503121561528157600080fd5b823561509981614c8c565b6000825161529e818460208701614cf0565b9190910192915050565b6000602082840312156152ba57600080fd5b8151611a5081614d53565b6000602082840312156152d757600080fd5b5051919050565b6000602082840312156152f057600080fd5b8151611a5081614c8c565b60006020828403121561530d57600080fd5b8151611a508161506d565b60006020828403121561532a57600080fd5b8151611a5081614cbe565b634e487b7160e01b600052603260045260246000fd5b6000806040838503121561535e57600080fd5b82516153698161506d565b602084015190925063ffffffff81168114614ee857600080fd5b60006020828403121561539557600080fd5b815164ffffffffff81168114611a5057600080fd5b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6001600160401b03818116838216019080821115614c3657614c366153d7565b6000808585111561541d57600080fd5b8386111561542a57600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561545f5780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b6000602082840312156154b957600080fd5b8151611a5081615012565b6000602082840312156154d657600080fd5b81516001600160401b038111156154ec57600080fd5b8201601f810184136154fd57600080fd5b805161550b614e1d82614dd7565b81815285602083850101111561552057600080fd5b615531826020830160208601614cf0565b95945050505050565b60006020828403121561554c57600080fd5b815162ffffff81168114611a5057600080fd5b60008451615571818460208901614cf0565b665365727669636560c81b9083019081528451615595816007840160208901614cf0565b84519101906155ab816007840160208801614cf0565b0160070195945050505050565b600084516155ca818460208901614cf0565b6a53657276696365526f6c6560a81b90830190815284516155f281600b840160208901614cf0565b845191019061560881600b840160208801614cf0565b01600b0195945050505050565b6000602080838503121561562857600080fd5b82516001600160401b0381111561563e57600080fd5b8301601f8101851361564f57600080fd5b805161565d614e1d826150fe565b81815260059190911b8201830190838101908783111561567c57600080fd5b928401925b828410156156a357835161569481615012565b82529284019290840190615681565b979650505050505050565b600060208083850312156156c157600080fd5b82516001600160401b038111156156d757600080fd5b8301601f810185136156e857600080fd5b80516156f6614e1d826150fe565b81815260069190911b8201830190838101908783111561571557600080fd5b928401925b828410156156a357604084890312156157335760008081fd5b61573b614d7f565b845161574681614d53565b8152848601518682015282526040909301929084019061571a565b600060018201615773576157736153d7565b5060010190565b6001600160a01b038316815260406020820181905260009061579e90830184614d14565b949350505050565b600060018060a01b038086168352606060208401526157c86060840186614d14565b9150808416604084015250949350505050565b6001600160401b038316815260406020820152600061579e6040830184614d14565b60006001600160401b038086168352606060208401526157c86060840186614d14565b60006001600160401b038086168352808516602084015250606060408301526155316060830184614d14565b6001600160a01b038416815260606020808301829052845191830182905260009185820191906080850190845b8181101561589f5784516001600160e01b03191683529383019391830191600101615879565b50508093505050506001600160401b0383166040830152949350505050565b81810381811115610a6057610a606153d7565b634e487b7160e01b600052603160045260246000fdfef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a26469706673582212203aae015507b5badd5107ea1cdf483e9f490c6f147ff8e28832971323311c3fd264736f6c63430008140033",
1398
+ "linkReferences": {
1399
+ "contracts/type/ObjectType.sol": {
1400
+ "ObjectTypeLib": [
1401
+ {
1402
+ "length": 20,
1403
+ "start": 14445
1404
+ },
1405
+ {
1406
+ "length": 20,
1407
+ "start": 14943
1408
+ }
1409
+ ]
1410
+ },
1411
+ "contracts/type/RoleId.sol": {
1412
+ "RoleIdLib": [
1413
+ {
1414
+ "length": 20,
1415
+ "start": 285
1416
+ },
1417
+ {
1418
+ "length": 20,
1419
+ "start": 753
1420
+ },
1421
+ {
1422
+ "length": 20,
1423
+ "start": 1094
1424
+ },
1425
+ {
1426
+ "length": 20,
1427
+ "start": 10645
1428
+ },
1429
+ {
1430
+ "length": 20,
1431
+ "start": 12575
1432
+ },
1433
+ {
1434
+ "length": 20,
1435
+ "start": 15205
1436
+ },
1437
+ {
1438
+ "length": 20,
1439
+ "start": 15901
1440
+ },
1441
+ {
1442
+ "length": 20,
1443
+ "start": 18593
1444
+ },
1445
+ {
1446
+ "length": 20,
1447
+ "start": 19190
1448
+ },
1449
+ {
1450
+ "length": 20,
1451
+ "start": 20565
1452
+ },
1453
+ {
1454
+ "length": 20,
1455
+ "start": 21028
1456
+ },
1457
+ {
1458
+ "length": 20,
1459
+ "start": 22643
1460
+ },
1461
+ {
1462
+ "length": 20,
1463
+ "start": 23624
1464
+ },
1465
+ {
1466
+ "length": 20,
1467
+ "start": 24508
1468
+ },
1469
+ {
1470
+ "length": 20,
1471
+ "start": 24573
1472
+ }
1473
+ ]
1474
+ },
1475
+ "contracts/type/Selector.sol": {
1476
+ "SelectorLib": [
1477
+ {
1478
+ "length": 20,
1479
+ "start": 4049
1480
+ },
1481
+ {
1482
+ "length": 20,
1483
+ "start": 5410
1484
+ },
1485
+ {
1486
+ "length": 20,
1487
+ "start": 10105
1488
+ },
1489
+ {
1490
+ "length": 20,
1491
+ "start": 10683
1492
+ },
1493
+ {
1494
+ "length": 20,
1495
+ "start": 13713
1496
+ },
1497
+ {
1498
+ "length": 20,
1499
+ "start": 26186
1500
+ }
1501
+ ],
1502
+ "SelectorSetLib": [
1503
+ {
1504
+ "length": 20,
1505
+ "start": 5106
1506
+ },
1507
+ {
1508
+ "length": 20,
1509
+ "start": 5255
1510
+ },
1511
+ {
1512
+ "length": 20,
1513
+ "start": 10448
1514
+ },
1515
+ {
1516
+ "length": 20,
1517
+ "start": 12104
1518
+ },
1519
+ {
1520
+ "length": 20,
1521
+ "start": 25895
1522
+ },
1523
+ {
1524
+ "length": 20,
1525
+ "start": 26041
1526
+ }
1527
+ ]
1528
+ },
1529
+ "contracts/type/String.sol": {
1530
+ "StrLib": [
1531
+ {
1532
+ "length": 20,
1533
+ "start": 548
1534
+ },
1535
+ {
1536
+ "length": 20,
1537
+ "start": 1052
1538
+ },
1539
+ {
1540
+ "length": 20,
1541
+ "start": 3063
1542
+ },
1543
+ {
1544
+ "length": 20,
1545
+ "start": 3340
1546
+ },
1547
+ {
1548
+ "length": 20,
1549
+ "start": 3601
1550
+ },
1551
+ {
1552
+ "length": 20,
1553
+ "start": 3736
1554
+ },
1555
+ {
1556
+ "length": 20,
1557
+ "start": 4162
1558
+ },
1559
+ {
1560
+ "length": 20,
1561
+ "start": 10224
1562
+ },
1563
+ {
1564
+ "length": 20,
1565
+ "start": 16219
1566
+ },
1567
+ {
1568
+ "length": 20,
1569
+ "start": 16375
1570
+ },
1571
+ {
1572
+ "length": 20,
1573
+ "start": 16505
1574
+ },
1575
+ {
1576
+ "length": 20,
1577
+ "start": 22888
1578
+ },
1579
+ {
1580
+ "length": 20,
1581
+ "start": 23093
1582
+ },
1583
+ {
1584
+ "length": 20,
1585
+ "start": 23223
1586
+ },
1587
+ {
1588
+ "length": 20,
1589
+ "start": 25553
1590
+ }
1591
+ ]
1592
+ },
1593
+ "contracts/type/Timestamp.sol": {
1594
+ "TimestampLib": [
1595
+ {
1596
+ "length": 20,
1597
+ "start": 2632
1598
+ },
1599
+ {
1600
+ "length": 20,
1601
+ "start": 6218
1602
+ },
1603
+ {
1604
+ "length": 20,
1605
+ "start": 12751
1606
+ },
1607
+ {
1608
+ "length": 20,
1609
+ "start": 13478
1610
+ },
1611
+ {
1612
+ "length": 20,
1613
+ "start": 16981
1614
+ },
1615
+ {
1616
+ "length": 20,
1617
+ "start": 23816
1618
+ },
1619
+ {
1620
+ "length": 20,
1621
+ "start": 23984
1622
+ },
1623
+ {
1624
+ "length": 20,
1625
+ "start": 25129
1626
+ }
1627
+ ]
1628
+ },
1629
+ "contracts/type/Version.sol": {
1630
+ "VersionLib": [
1631
+ {
1632
+ "length": 20,
1633
+ "start": 14672
1634
+ },
1635
+ {
1636
+ "length": 20,
1637
+ "start": 15573
1638
+ }
1639
+ ],
1640
+ "VersionPartLib": [
1641
+ {
1642
+ "length": 20,
1643
+ "start": 14796
1644
+ }
1645
+ ]
1646
+ }
1647
+ },
1648
+ "deployedLinkReferences": {
1649
+ "contracts/type/ObjectType.sol": {
1650
+ "ObjectTypeLib": [
1651
+ {
1652
+ "length": 20,
1653
+ "start": 7201
1654
+ },
1655
+ {
1656
+ "length": 20,
1657
+ "start": 7699
1658
+ }
1659
+ ]
1660
+ },
1661
+ "contracts/type/RoleId.sol": {
1662
+ "RoleIdLib": [
1663
+ {
1664
+ "length": 20,
1665
+ "start": 3401
1666
+ },
1667
+ {
1668
+ "length": 20,
1669
+ "start": 5331
1670
+ },
1671
+ {
1672
+ "length": 20,
1673
+ "start": 7961
1674
+ },
1675
+ {
1676
+ "length": 20,
1677
+ "start": 8657
1678
+ },
1679
+ {
1680
+ "length": 20,
1681
+ "start": 11349
1682
+ },
1683
+ {
1684
+ "length": 20,
1685
+ "start": 11946
1686
+ },
1687
+ {
1688
+ "length": 20,
1689
+ "start": 13321
1690
+ },
1691
+ {
1692
+ "length": 20,
1693
+ "start": 13784
1694
+ },
1695
+ {
1696
+ "length": 20,
1697
+ "start": 15399
1698
+ },
1699
+ {
1700
+ "length": 20,
1701
+ "start": 16380
1702
+ },
1703
+ {
1704
+ "length": 20,
1705
+ "start": 17264
1706
+ },
1707
+ {
1708
+ "length": 20,
1709
+ "start": 17329
1710
+ }
1711
+ ]
1712
+ },
1713
+ "contracts/type/Selector.sol": {
1714
+ "SelectorLib": [
1715
+ {
1716
+ "length": 20,
1717
+ "start": 2861
1718
+ },
1719
+ {
1720
+ "length": 20,
1721
+ "start": 3439
1722
+ },
1723
+ {
1724
+ "length": 20,
1725
+ "start": 6469
1726
+ },
1727
+ {
1728
+ "length": 20,
1729
+ "start": 18942
1730
+ }
1731
+ ],
1732
+ "SelectorSetLib": [
1733
+ {
1734
+ "length": 20,
1735
+ "start": 3204
1736
+ },
1737
+ {
1738
+ "length": 20,
1739
+ "start": 4860
1740
+ },
1741
+ {
1742
+ "length": 20,
1743
+ "start": 18651
1744
+ },
1745
+ {
1746
+ "length": 20,
1747
+ "start": 18797
1748
+ }
1749
+ ]
1750
+ },
1751
+ "contracts/type/String.sol": {
1752
+ "StrLib": [
1753
+ {
1754
+ "length": 20,
1755
+ "start": 2980
1756
+ },
1757
+ {
1758
+ "length": 20,
1759
+ "start": 8975
1760
+ },
1761
+ {
1762
+ "length": 20,
1763
+ "start": 9131
1764
+ },
1765
+ {
1766
+ "length": 20,
1767
+ "start": 9261
1768
+ },
1769
+ {
1770
+ "length": 20,
1771
+ "start": 15644
1772
+ },
1773
+ {
1774
+ "length": 20,
1775
+ "start": 15849
1776
+ },
1777
+ {
1778
+ "length": 20,
1779
+ "start": 15979
1780
+ },
1781
+ {
1782
+ "length": 20,
1783
+ "start": 18309
1784
+ }
1785
+ ]
1786
+ },
1787
+ "contracts/type/Timestamp.sol": {
1788
+ "TimestampLib": [
1789
+ {
1790
+ "length": 20,
1791
+ "start": 5507
1792
+ },
1793
+ {
1794
+ "length": 20,
1795
+ "start": 6234
1796
+ },
1797
+ {
1798
+ "length": 20,
1799
+ "start": 9737
1800
+ },
1801
+ {
1802
+ "length": 20,
1803
+ "start": 16572
1804
+ },
1805
+ {
1806
+ "length": 20,
1807
+ "start": 16740
1808
+ },
1809
+ {
1810
+ "length": 20,
1811
+ "start": 17885
1812
+ }
1813
+ ]
1814
+ },
1815
+ "contracts/type/Version.sol": {
1816
+ "VersionLib": [
1817
+ {
1818
+ "length": 20,
1819
+ "start": 7428
1820
+ },
1821
+ {
1822
+ "length": 20,
1823
+ "start": 8329
1824
+ }
1825
+ ],
1826
+ "VersionPartLib": [
1827
+ {
1828
+ "length": 20,
1829
+ "start": 7552
1830
+ }
1831
+ ]
1832
+ }
1833
+ }
1834
+ }