@etherisc/gif-next 0.0.2-fd4931b-974 → 0.0.2-fd5f17a-625

Sign up to get free protection for your applications and to get access to all the features.
Files changed (499) hide show
  1. package/README.md +51 -5
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1342 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +65 -463
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +291 -234
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +88 -100
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +102 -165
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +171 -47
  36. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  37. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  38. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  39. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  40. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  41. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
  42. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
  44. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  45. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  46. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  47. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +77 -78
  48. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  49. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +149 -52
  50. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/Instance.sol/Instance.json +75 -205
  52. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  53. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  54. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  56. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  57. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +410 -130
  58. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +191 -206
  60. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +60 -92
  62. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +387 -268
  64. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  66. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  67. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  68. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  69. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  70. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  71. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  72. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  73. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  74. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  75. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  76. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  77. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  79. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  80. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  81. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  82. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  83. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  84. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +979 -0
  85. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  86. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  87. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  88. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  89. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  90. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +765 -0
  91. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  92. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  93. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  94. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +871 -0
  95. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  96. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +922 -0
  97. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +679 -0
  99. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  100. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1248 -0
  101. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  102. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  103. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  104. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +440 -169
  105. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  106. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +132 -84
  107. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  108. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +225 -2
  109. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  110. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +56 -295
  111. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  112. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +255 -101
  113. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  114. package/artifacts/contracts/pool/Pool.sol/Pool.json +102 -627
  115. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  116. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +309 -251
  117. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +57 -81
  119. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  120. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +72 -160
  121. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +55 -87
  123. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  124. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1096 -0
  125. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  126. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  127. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  128. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +229 -168
  129. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +82 -94
  131. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  132. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +25 -1
  133. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  134. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +134 -1
  135. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  136. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +204 -120
  137. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  138. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +63 -44
  139. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  140. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +43 -84
  141. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  142. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +22 -3
  143. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  144. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +273 -301
  145. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  146. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +77 -93
  147. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  148. package/artifacts/contracts/product/PricingService.sol/PricingService.json +134 -243
  149. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +70 -110
  151. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  152. package/artifacts/contracts/product/Product.sol/Product.json +53 -390
  153. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  154. package/artifacts/contracts/product/RiskService.sol/RiskService.json +583 -0
  155. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  156. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +651 -0
  157. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  158. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  159. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  160. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +302 -61
  161. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  162. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -184
  163. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  164. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  165. package/artifacts/contracts/registry/Registry.sol/Registry.json +645 -123
  166. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  167. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1861 -0
  168. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  169. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +66 -124
  170. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +46 -81
  172. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  173. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  174. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  175. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1169 -0
  176. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  177. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  178. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  179. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +46 -177
  180. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  181. package/artifacts/contracts/shared/Component.sol/Component.json +18 -223
  182. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  183. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +271 -164
  184. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  185. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +83 -95
  186. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  187. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +14 -107
  188. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  189. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +11 -31
  190. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  191. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +180 -1
  192. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  193. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +43 -42
  194. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -15
  196. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  197. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  198. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  199. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -1
  200. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +0 -42
  202. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -1
  204. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  205. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  206. package/artifacts/contracts/shared/IService.sol/IService.json +20 -1
  207. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  208. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  209. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  210. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  211. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  212. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +50 -287
  213. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  214. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -99
  215. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  216. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  217. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  218. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  219. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  220. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +10 -55
  221. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  222. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +4 -136
  223. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  224. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +11 -94
  225. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  226. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  227. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  228. package/artifacts/contracts/shared/Service.sol/Service.json +14 -107
  229. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  230. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  231. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  232. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  233. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  234. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +273 -605
  235. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  236. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +471 -62
  237. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  238. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  239. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  240. package/artifacts/contracts/staking/Staking.sol/Staking.json +332 -1004
  241. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  242. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  243. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +73 -203
  245. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  246. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +368 -39
  247. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  248. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +484 -213
  249. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  250. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +57 -84
  251. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  252. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  253. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  254. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +318 -19
  255. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  256. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  257. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/Amount.sol/AmountLib.json +97 -4
  259. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +40 -2
  261. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  263. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  265. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  267. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  268. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  269. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +28 -4
  271. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  272. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  273. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +149 -2
  275. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  277. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  279. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  280. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  281. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  283. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
  285. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +100 -2
  287. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  288. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  289. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  290. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  291. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  293. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  294. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  295. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
  297. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  299. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
  301. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  303. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  305. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  306. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  307. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  308. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +566 -0
  309. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  310. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  311. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  312. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  313. package/contracts/authorization/AccessAdmin.sol +589 -0
  314. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  315. package/contracts/authorization/Authorization.sol +217 -0
  316. package/contracts/authorization/IAccess.sol +48 -0
  317. package/contracts/authorization/IAccessAdmin.sol +136 -0
  318. package/contracts/authorization/IAuthorization.sol +54 -0
  319. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  320. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  321. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  322. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  323. package/contracts/distribution/BasicDistribution.sol +138 -0
  324. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  325. package/contracts/distribution/Distribution.sol +146 -114
  326. package/contracts/distribution/DistributionService.sol +84 -46
  327. package/contracts/distribution/DistributionServiceManager.sol +2 -17
  328. package/contracts/distribution/IDistributionComponent.sol +26 -40
  329. package/contracts/distribution/IDistributionService.sol +24 -4
  330. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  331. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  332. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  333. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  334. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  335. package/contracts/instance/IInstance.sol +29 -43
  336. package/contracts/instance/IInstanceService.sol +36 -27
  337. package/contracts/instance/Instance.sol +117 -116
  338. package/contracts/instance/InstanceAdmin.sol +285 -0
  339. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  340. package/contracts/instance/InstanceReader.sol +82 -18
  341. package/contracts/instance/InstanceService.sol +206 -106
  342. package/contracts/instance/InstanceServiceManager.sol +2 -6
  343. package/contracts/instance/InstanceStore.sol +49 -22
  344. package/contracts/instance/base/BalanceStore.sol +11 -6
  345. package/contracts/instance/base/Cloneable.sol +2 -25
  346. package/contracts/instance/base/ObjectCounter.sol +21 -0
  347. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  348. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
  349. package/contracts/instance/module/IAccess.sol +2 -10
  350. package/contracts/instance/module/IBundle.sol +1 -1
  351. package/contracts/instance/module/IComponents.sol +1 -7
  352. package/contracts/instance/module/IDistribution.sol +0 -1
  353. package/contracts/instance/module/IPolicy.sol +22 -22
  354. package/contracts/mock/Dip.sol +1 -1
  355. package/contracts/oracle/BasicOracle.sol +48 -0
  356. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  357. package/contracts/oracle/IOracle.sol +36 -0
  358. package/contracts/oracle/IOracleComponent.sol +33 -0
  359. package/contracts/oracle/IOracleService.sol +65 -0
  360. package/contracts/oracle/Oracle.sol +167 -0
  361. package/contracts/oracle/OracleService.sol +279 -0
  362. package/contracts/oracle/OracleServiceManager.sol +39 -0
  363. package/contracts/pool/BasicPool.sol +166 -0
  364. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  365. package/contracts/pool/BundleService.sol +211 -69
  366. package/contracts/pool/BundleServiceManager.sol +2 -5
  367. package/contracts/pool/IBundleService.sol +34 -6
  368. package/contracts/pool/IPoolComponent.sol +6 -60
  369. package/contracts/pool/IPoolService.sol +40 -27
  370. package/contracts/pool/Pool.sol +165 -138
  371. package/contracts/pool/PoolService.sol +199 -114
  372. package/contracts/pool/PoolServiceManager.sol +2 -5
  373. package/contracts/product/ApplicationService.sol +59 -65
  374. package/contracts/product/ApplicationServiceManager.sol +2 -2
  375. package/contracts/product/BasicProduct.sol +53 -0
  376. package/contracts/product/BasicProductAuthorization.sol +43 -0
  377. package/contracts/product/ClaimService.sol +132 -82
  378. package/contracts/product/ClaimServiceManager.sol +2 -2
  379. package/contracts/product/IApplicationService.sol +2 -1
  380. package/contracts/product/IClaimService.sol +32 -3
  381. package/contracts/product/IPolicyService.sol +28 -33
  382. package/contracts/product/IPricingService.sol +8 -8
  383. package/contracts/product/IProductComponent.sol +7 -10
  384. package/contracts/product/{IProductService.sol → IRiskService.sol} +2 -2
  385. package/contracts/product/PolicyService.sol +289 -189
  386. package/contracts/product/PolicyServiceManager.sol +2 -5
  387. package/contracts/product/PricingService.sol +52 -52
  388. package/contracts/product/PricingServiceManager.sol +2 -5
  389. package/contracts/product/Product.sol +163 -115
  390. package/contracts/product/{ProductService.sol → RiskService.sol} +18 -45
  391. package/contracts/product/RiskServiceManager.sol +39 -0
  392. package/contracts/registry/ChainNft.sol +65 -31
  393. package/contracts/registry/IRegistry.sol +79 -29
  394. package/contracts/registry/IRegistryService.sol +7 -6
  395. package/contracts/registry/Registry.sol +354 -215
  396. package/contracts/registry/RegistryAdmin.sol +464 -0
  397. package/contracts/registry/RegistryService.sol +14 -90
  398. package/contracts/registry/RegistryServiceManager.sol +3 -22
  399. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  400. package/contracts/registry/ReleaseRegistry.sol +491 -0
  401. package/contracts/registry/ServiceAuthorizationV3.sol +199 -0
  402. package/contracts/registry/TokenRegistry.sol +58 -62
  403. package/contracts/shared/Component.sol +35 -53
  404. package/contracts/shared/ComponentService.sol +127 -81
  405. package/contracts/shared/ComponentServiceManager.sol +2 -2
  406. package/contracts/shared/ComponentVerifyingService.sol +14 -8
  407. package/contracts/shared/IComponent.sol +7 -11
  408. package/contracts/shared/IComponentService.sol +26 -9
  409. package/contracts/shared/IInstanceLinkedComponent.sol +10 -7
  410. package/contracts/shared/IKeyValueStore.sol +2 -1
  411. package/contracts/shared/ILifecycle.sol +1 -2
  412. package/contracts/shared/INftOwnable.sol +1 -1
  413. package/contracts/shared/IPolicyHolder.sol +0 -9
  414. package/contracts/shared/IService.sol +9 -2
  415. package/contracts/shared/InitializableCustom.sol +177 -0
  416. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -4
  417. package/contracts/shared/InstanceLinkedComponent.sol +51 -24
  418. package/contracts/shared/KeyValueStore.sol +7 -6
  419. package/contracts/shared/Lifecycle.sol +16 -60
  420. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +3 -7
  421. package/contracts/shared/NftOwnable.sol +9 -20
  422. package/contracts/shared/PolicyHolder.sol +8 -53
  423. package/contracts/shared/Registerable.sol +4 -4
  424. package/contracts/shared/RegistryLinked.sol +3 -2
  425. package/contracts/shared/Service.sol +33 -28
  426. package/contracts/shared/TokenHandler.sol +100 -19
  427. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  428. package/contracts/staking/IStaking.sol +96 -41
  429. package/contracts/staking/IStakingService.sol +78 -40
  430. package/contracts/staking/StakeManagerLib.sol +224 -0
  431. package/contracts/staking/Staking.sol +305 -155
  432. package/contracts/staking/StakingLifecycle.sol +23 -0
  433. package/contracts/staking/StakingManager.sol +21 -23
  434. package/contracts/staking/StakingReader.sol +119 -28
  435. package/contracts/staking/StakingService.sol +190 -77
  436. package/contracts/staking/StakingServiceManager.sol +4 -4
  437. package/contracts/staking/StakingStore.sol +605 -0
  438. package/contracts/staking/TargetManagerLib.sol +83 -13
  439. package/contracts/type/AddressSet.sol +1 -1
  440. package/contracts/type/Amount.sol +24 -3
  441. package/contracts/type/Blocknumber.sol +20 -2
  442. package/contracts/type/Fee.sol +1 -1
  443. package/contracts/type/NftId.sol +9 -9
  444. package/contracts/type/NftIdSet.sol +1 -1
  445. package/contracts/type/ObjectType.sol +174 -68
  446. package/contracts/type/Referral.sol +2 -1
  447. package/contracts/type/RequestId.sol +75 -0
  448. package/contracts/type/RiskId.sol +1 -1
  449. package/contracts/type/RoleId.sol +104 -73
  450. package/contracts/type/Seconds.sol +39 -1
  451. package/contracts/type/Selector.sol +102 -0
  452. package/contracts/type/StateId.sol +13 -0
  453. package/contracts/type/String.sol +53 -0
  454. package/contracts/type/Timestamp.sol +17 -3
  455. package/contracts/type/UFixed.sol +34 -9
  456. package/contracts/type/Version.sol +4 -2
  457. package/contracts/{shared → upgradeability}/ProxyManager.sol +9 -6
  458. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  459. package/package.json +8 -5
  460. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  461. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  462. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  463. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  464. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  465. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -132
  466. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  467. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  468. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  469. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  470. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -673
  471. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  472. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -675
  473. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  474. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -298
  475. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  476. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1112
  477. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  478. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  479. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  480. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  481. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  482. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  483. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  484. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  485. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -314
  486. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  487. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -598
  488. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  489. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  490. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  491. package/contracts/instance/InstanceAccessManager.sol +0 -543
  492. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -336
  493. package/contracts/product/ProductServiceManager.sol +0 -42
  494. package/contracts/registry/RegistryAccessManager.sol +0 -167
  495. package/contracts/registry/ReleaseManager.sol +0 -530
  496. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  497. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
  498. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  499. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -133,6 +133,22 @@
133
133
  "name": "ErrorPoolServiceBundleOwnerRoleAlreadySet",
134
134
  "type": "error"
135
135
  },
136
+ {
137
+ "inputs": [
138
+ {
139
+ "internalType": "NftId",
140
+ "name": "bundleNftId",
141
+ "type": "uint96"
142
+ },
143
+ {
144
+ "internalType": "NftId",
145
+ "name": "poolNftId",
146
+ "type": "uint96"
147
+ }
148
+ ],
149
+ "name": "ErrorPoolServiceBundlePoolMismatch",
150
+ "type": "error"
151
+ },
136
152
  {
137
153
  "inputs": [
138
154
  {
@@ -149,6 +165,32 @@
149
165
  "name": "ErrorPoolServiceInvalidTransferAmount",
150
166
  "type": "error"
151
167
  },
168
+ {
169
+ "inputs": [
170
+ {
171
+ "internalType": "NftId",
172
+ "name": "poolNftId",
173
+ "type": "uint96"
174
+ },
175
+ {
176
+ "internalType": "Amount",
177
+ "name": "maxBalanceAmount",
178
+ "type": "uint96"
179
+ },
180
+ {
181
+ "internalType": "Amount",
182
+ "name": "currentBalanceAmount",
183
+ "type": "uint96"
184
+ },
185
+ {
186
+ "internalType": "Amount",
187
+ "name": "transferAmount",
188
+ "type": "uint96"
189
+ }
190
+ ],
191
+ "name": "ErrorPoolServiceMaxBalanceAmountExceeded",
192
+ "type": "error"
193
+ },
152
194
  {
153
195
  "inputs": [],
154
196
  "name": "ErrorServiceNotImplemented",
@@ -259,6 +301,74 @@
259
301
  "name": "LogPoolServiceBundleOwnerRoleSet",
260
302
  "type": "event"
261
303
  },
304
+ {
305
+ "anonymous": false,
306
+ "inputs": [
307
+ {
308
+ "indexed": false,
309
+ "internalType": "NftId",
310
+ "name": "instanceNftId",
311
+ "type": "uint96"
312
+ },
313
+ {
314
+ "indexed": false,
315
+ "internalType": "NftId",
316
+ "name": "poolNftId",
317
+ "type": "uint96"
318
+ },
319
+ {
320
+ "indexed": false,
321
+ "internalType": "NftId",
322
+ "name": "bundleNftId",
323
+ "type": "uint96"
324
+ },
325
+ {
326
+ "indexed": false,
327
+ "internalType": "Amount",
328
+ "name": "amount",
329
+ "type": "uint96"
330
+ },
331
+ {
332
+ "indexed": false,
333
+ "internalType": "Amount",
334
+ "name": "netAmount",
335
+ "type": "uint96"
336
+ }
337
+ ],
338
+ "name": "LogPoolServiceBundleStaked",
339
+ "type": "event"
340
+ },
341
+ {
342
+ "anonymous": false,
343
+ "inputs": [
344
+ {
345
+ "indexed": false,
346
+ "internalType": "NftId",
347
+ "name": "instanceNftId",
348
+ "type": "uint96"
349
+ },
350
+ {
351
+ "indexed": false,
352
+ "internalType": "NftId",
353
+ "name": "poolNftId",
354
+ "type": "uint96"
355
+ },
356
+ {
357
+ "indexed": false,
358
+ "internalType": "NftId",
359
+ "name": "bundleNftId",
360
+ "type": "uint96"
361
+ },
362
+ {
363
+ "indexed": false,
364
+ "internalType": "Amount",
365
+ "name": "amount",
366
+ "type": "uint96"
367
+ }
368
+ ],
369
+ "name": "LogPoolServiceBundleUnstaked",
370
+ "type": "event"
371
+ },
262
372
  {
263
373
  "anonymous": false,
264
374
  "inputs": [
@@ -281,7 +391,7 @@
281
391
  "type": "uint96"
282
392
  }
283
393
  ],
284
- "name": "LogPoolServiceMaxCapitalAmountUpdated",
394
+ "name": "LogPoolServiceMaxBalanceAmountUpdated",
285
395
  "type": "event"
286
396
  },
287
397
  {
@@ -428,11 +538,6 @@
428
538
  "name": "fee",
429
539
  "type": "tuple"
430
540
  },
431
- {
432
- "internalType": "Amount",
433
- "name": "stakingAmount",
434
- "type": "uint96"
435
- },
436
541
  {
437
542
  "internalType": "Seconds",
438
543
  "name": "lifetime",
@@ -455,13 +560,49 @@
455
560
  "stateMutability": "nonpayable",
456
561
  "type": "function"
457
562
  },
563
+ {
564
+ "inputs": [
565
+ {
566
+ "internalType": "NftId",
567
+ "name": "poolNftId",
568
+ "type": "uint96"
569
+ },
570
+ {
571
+ "internalType": "Amount",
572
+ "name": "amount",
573
+ "type": "uint96"
574
+ }
575
+ ],
576
+ "name": "defundPoolWallet",
577
+ "outputs": [],
578
+ "stateMutability": "nonpayable",
579
+ "type": "function"
580
+ },
581
+ {
582
+ "inputs": [
583
+ {
584
+ "internalType": "NftId",
585
+ "name": "poolNftId",
586
+ "type": "uint96"
587
+ },
588
+ {
589
+ "internalType": "Amount",
590
+ "name": "amount",
591
+ "type": "uint96"
592
+ }
593
+ ],
594
+ "name": "fundPoolWallet",
595
+ "outputs": [],
596
+ "stateMutability": "nonpayable",
597
+ "type": "function"
598
+ },
458
599
  {
459
600
  "inputs": [],
460
601
  "name": "getDomain",
461
602
  "outputs": [
462
603
  {
463
604
  "internalType": "ObjectType",
464
- "name": "",
605
+ "name": "serviceDomain",
465
606
  "type": "uint8"
466
607
  }
467
608
  ],
@@ -559,12 +700,12 @@
559
700
  },
560
701
  {
561
702
  "inputs": [],
562
- "name": "getVersion",
703
+ "name": "getRoleId",
563
704
  "outputs": [
564
705
  {
565
- "internalType": "Version",
566
- "name": "",
567
- "type": "uint24"
706
+ "internalType": "RoleId",
707
+ "name": "serviceRoleId",
708
+ "type": "uint64"
568
709
  }
569
710
  ],
570
711
  "stateMutability": "pure",
@@ -572,101 +713,15 @@
572
713
  },
573
714
  {
574
715
  "inputs": [],
575
- "name": "initializeERC165",
576
- "outputs": [],
577
- "stateMutability": "nonpayable",
578
- "type": "function"
579
- },
580
- {
581
- "inputs": [
582
- {
583
- "internalType": "address",
584
- "name": "initialOwner",
585
- "type": "address"
586
- },
587
- {
588
- "internalType": "address",
589
- "name": "registryAddress",
590
- "type": "address"
591
- }
592
- ],
593
- "name": "initializeNftOwnable",
594
- "outputs": [],
595
- "stateMutability": "nonpayable",
596
- "type": "function"
597
- },
598
- {
599
- "inputs": [
600
- {
601
- "internalType": "address",
602
- "name": "registryAddress",
603
- "type": "address"
604
- },
605
- {
606
- "internalType": "NftId",
607
- "name": "parentNftId",
608
- "type": "uint96"
609
- },
610
- {
611
- "internalType": "ObjectType",
612
- "name": "objectType",
613
- "type": "uint8"
614
- },
615
- {
616
- "internalType": "bool",
617
- "name": "isInterceptor",
618
- "type": "bool"
619
- },
620
- {
621
- "internalType": "address",
622
- "name": "initialOwner",
623
- "type": "address"
624
- },
625
- {
626
- "internalType": "bytes",
627
- "name": "registryData",
628
- "type": "bytes"
629
- }
630
- ],
631
- "name": "initializeRegisterable",
632
- "outputs": [],
633
- "stateMutability": "nonpayable",
634
- "type": "function"
635
- },
636
- {
637
- "inputs": [
638
- {
639
- "internalType": "address",
640
- "name": "registryAddress",
641
- "type": "address"
642
- }
643
- ],
644
- "name": "initializeRegistryLinked",
645
- "outputs": [],
646
- "stateMutability": "nonpayable",
647
- "type": "function"
648
- },
649
- {
650
- "inputs": [
651
- {
652
- "internalType": "address",
653
- "name": "registry",
654
- "type": "address"
655
- },
656
- {
657
- "internalType": "address",
658
- "name": "authority",
659
- "type": "address"
660
- },
716
+ "name": "getVersion",
717
+ "outputs": [
661
718
  {
662
- "internalType": "address",
663
- "name": "initialOwner",
664
- "type": "address"
719
+ "internalType": "Version",
720
+ "name": "",
721
+ "type": "uint24"
665
722
  }
666
723
  ],
667
- "name": "initializeService",
668
- "outputs": [],
669
- "stateMutability": "nonpayable",
724
+ "stateMutability": "pure",
670
725
  "type": "function"
671
726
  },
672
727
  {
@@ -703,7 +758,13 @@
703
758
  {
704
759
  "inputs": [],
705
760
  "name": "linkToRegisteredNftId",
706
- "outputs": [],
761
+ "outputs": [
762
+ {
763
+ "internalType": "NftId",
764
+ "name": "nftId",
765
+ "type": "uint96"
766
+ }
767
+ ],
707
768
  "stateMutability": "nonpayable",
708
769
  "type": "function"
709
770
  },
@@ -714,6 +775,11 @@
714
775
  "name": "instance",
715
776
  "type": "address"
716
777
  },
778
+ {
779
+ "internalType": "address",
780
+ "name": "token",
781
+ "type": "address"
782
+ },
717
783
  {
718
784
  "internalType": "NftId",
719
785
  "name": "productNftId",
@@ -776,82 +842,82 @@
776
842
  "type": "uint96"
777
843
  },
778
844
  {
779
- "internalType": "uint256",
845
+ "internalType": "Amount",
780
846
  "name": "netPremiumAmount",
781
- "type": "uint256"
847
+ "type": "uint96"
782
848
  },
783
849
  {
784
- "internalType": "uint256",
850
+ "internalType": "Amount",
785
851
  "name": "fullPremiumAmount",
786
- "type": "uint256"
852
+ "type": "uint96"
787
853
  },
788
854
  {
789
- "internalType": "uint256",
855
+ "internalType": "Amount",
790
856
  "name": "premiumAmount",
791
- "type": "uint256"
857
+ "type": "uint96"
792
858
  },
793
859
  {
794
- "internalType": "uint256",
860
+ "internalType": "Amount",
795
861
  "name": "productFeeFixAmount",
796
- "type": "uint256"
862
+ "type": "uint96"
797
863
  },
798
864
  {
799
- "internalType": "uint256",
865
+ "internalType": "Amount",
800
866
  "name": "poolFeeFixAmount",
801
- "type": "uint256"
867
+ "type": "uint96"
802
868
  },
803
869
  {
804
- "internalType": "uint256",
870
+ "internalType": "Amount",
805
871
  "name": "bundleFeeFixAmount",
806
- "type": "uint256"
872
+ "type": "uint96"
807
873
  },
808
874
  {
809
- "internalType": "uint256",
875
+ "internalType": "Amount",
810
876
  "name": "distributionFeeFixAmount",
811
- "type": "uint256"
877
+ "type": "uint96"
812
878
  },
813
879
  {
814
- "internalType": "uint256",
880
+ "internalType": "Amount",
815
881
  "name": "productFeeVarAmount",
816
- "type": "uint256"
882
+ "type": "uint96"
817
883
  },
818
884
  {
819
- "internalType": "uint256",
885
+ "internalType": "Amount",
820
886
  "name": "poolFeeVarAmount",
821
- "type": "uint256"
887
+ "type": "uint96"
822
888
  },
823
889
  {
824
- "internalType": "uint256",
890
+ "internalType": "Amount",
825
891
  "name": "bundleFeeVarAmount",
826
- "type": "uint256"
892
+ "type": "uint96"
827
893
  },
828
894
  {
829
- "internalType": "uint256",
895
+ "internalType": "Amount",
830
896
  "name": "distributionFeeVarAmount",
831
- "type": "uint256"
897
+ "type": "uint96"
832
898
  },
833
899
  {
834
- "internalType": "uint256",
900
+ "internalType": "Amount",
835
901
  "name": "distributionOwnerFeeFixAmount",
836
- "type": "uint256"
902
+ "type": "uint96"
837
903
  },
838
904
  {
839
- "internalType": "uint256",
905
+ "internalType": "Amount",
840
906
  "name": "distributionOwnerFeeVarAmount",
841
- "type": "uint256"
907
+ "type": "uint96"
842
908
  },
843
909
  {
844
- "internalType": "uint256",
910
+ "internalType": "Amount",
845
911
  "name": "commissionAmount",
846
- "type": "uint256"
912
+ "type": "uint96"
847
913
  },
848
914
  {
849
- "internalType": "uint256",
915
+ "internalType": "Amount",
850
916
  "name": "discountAmount",
851
- "type": "uint256"
917
+ "type": "uint96"
852
918
  }
853
919
  ],
854
- "internalType": "struct IPolicy.Premium",
920
+ "internalType": "struct IPolicy.PremiumInfo",
855
921
  "name": "premium",
856
922
  "type": "tuple"
857
923
  }
@@ -868,6 +934,11 @@
868
934
  "name": "instance",
869
935
  "type": "address"
870
936
  },
937
+ {
938
+ "internalType": "address",
939
+ "name": "token",
940
+ "type": "address"
941
+ },
871
942
  {
872
943
  "internalType": "NftId",
873
944
  "name": "policyNftId",
@@ -905,11 +976,6 @@
905
976
  "name": "premiumAmount",
906
977
  "type": "uint96"
907
978
  },
908
- {
909
- "internalType": "Amount",
910
- "name": "premiumPaidAmount",
911
- "type": "uint96"
912
- },
913
979
  {
914
980
  "internalType": "Seconds",
915
981
  "name": "lifetime",
@@ -976,19 +1042,6 @@
976
1042
  "stateMutability": "nonpayable",
977
1043
  "type": "function"
978
1044
  },
979
- {
980
- "inputs": [
981
- {
982
- "internalType": "bytes4",
983
- "name": "interfaceId",
984
- "type": "bytes4"
985
- }
986
- ],
987
- "name": "registerInterface",
988
- "outputs": [],
989
- "stateMutability": "nonpayable",
990
- "type": "function"
991
- },
992
1045
  {
993
1046
  "inputs": [
994
1047
  {
@@ -996,6 +1049,11 @@
996
1049
  "name": "instance",
997
1050
  "type": "address"
998
1051
  },
1052
+ {
1053
+ "internalType": "address",
1054
+ "name": "token",
1055
+ "type": "address"
1056
+ },
999
1057
  {
1000
1058
  "internalType": "NftId",
1001
1059
  "name": "policyNftId",
@@ -1033,11 +1091,6 @@
1033
1091
  "name": "premiumAmount",
1034
1092
  "type": "uint96"
1035
1093
  },
1036
- {
1037
- "internalType": "Amount",
1038
- "name": "premiumPaidAmount",
1039
- "type": "uint96"
1040
- },
1041
1094
  {
1042
1095
  "internalType": "Seconds",
1043
1096
  "name": "lifetime",
@@ -1128,72 +1181,37 @@
1128
1181
  {
1129
1182
  "inputs": [
1130
1183
  {
1131
- "components": [
1132
- {
1133
- "internalType": "UFixed",
1134
- "name": "fractionalFee",
1135
- "type": "uint256"
1136
- },
1137
- {
1138
- "internalType": "uint256",
1139
- "name": "fixedFee",
1140
- "type": "uint256"
1141
- }
1142
- ],
1143
- "internalType": "struct Fee",
1144
- "name": "poolFee",
1145
- "type": "tuple"
1146
- },
1147
- {
1148
- "components": [
1149
- {
1150
- "internalType": "UFixed",
1151
- "name": "fractionalFee",
1152
- "type": "uint256"
1153
- },
1154
- {
1155
- "internalType": "uint256",
1156
- "name": "fixedFee",
1157
- "type": "uint256"
1158
- }
1159
- ],
1160
- "internalType": "struct Fee",
1161
- "name": "stakingFee",
1162
- "type": "tuple"
1163
- },
1164
- {
1165
- "components": [
1166
- {
1167
- "internalType": "UFixed",
1168
- "name": "fractionalFee",
1169
- "type": "uint256"
1170
- },
1171
- {
1172
- "internalType": "uint256",
1173
- "name": "fixedFee",
1174
- "type": "uint256"
1175
- }
1176
- ],
1177
- "internalType": "struct Fee",
1178
- "name": "performanceFee",
1179
- "type": "tuple"
1184
+ "internalType": "Amount",
1185
+ "name": "maxBalanceAmount",
1186
+ "type": "uint96"
1180
1187
  }
1181
1188
  ],
1182
- "name": "setFees",
1189
+ "name": "setMaxBalanceAmount",
1183
1190
  "outputs": [],
1184
1191
  "stateMutability": "nonpayable",
1185
1192
  "type": "function"
1186
1193
  },
1187
1194
  {
1188
1195
  "inputs": [
1196
+ {
1197
+ "internalType": "NftId",
1198
+ "name": "bundleNftId",
1199
+ "type": "uint96"
1200
+ },
1189
1201
  {
1190
1202
  "internalType": "Amount",
1191
- "name": "maxCapitalAmount",
1203
+ "name": "amount",
1204
+ "type": "uint96"
1205
+ }
1206
+ ],
1207
+ "name": "stake",
1208
+ "outputs": [
1209
+ {
1210
+ "internalType": "Amount",
1211
+ "name": "netAmount",
1192
1212
  "type": "uint96"
1193
1213
  }
1194
1214
  ],
1195
- "name": "setMaxCapitalAmount",
1196
- "outputs": [],
1197
1215
  "stateMutability": "nonpayable",
1198
1216
  "type": "function"
1199
1217
  },
@@ -1216,6 +1234,30 @@
1216
1234
  "stateMutability": "view",
1217
1235
  "type": "function"
1218
1236
  },
1237
+ {
1238
+ "inputs": [
1239
+ {
1240
+ "internalType": "NftId",
1241
+ "name": "bundleNftId",
1242
+ "type": "uint96"
1243
+ },
1244
+ {
1245
+ "internalType": "Amount",
1246
+ "name": "amount",
1247
+ "type": "uint96"
1248
+ }
1249
+ ],
1250
+ "name": "unstake",
1251
+ "outputs": [
1252
+ {
1253
+ "internalType": "Amount",
1254
+ "name": "netAmount",
1255
+ "type": "uint96"
1256
+ }
1257
+ ],
1258
+ "stateMutability": "nonpayable",
1259
+ "type": "function"
1260
+ },
1219
1261
  {
1220
1262
  "inputs": [
1221
1263
  {
@@ -1230,38 +1272,38 @@
1230
1272
  "type": "function"
1231
1273
  }
1232
1274
  ],
1233
- "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6145c480620000e66000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637738eb861161010f578063a3c26052116100a2578063bf7e214f11610071578063bf7e214f146104a4578063d0d63b09146104ac578063f7c34ee0146104bf578063fce06ca8146104d257600080fd5b8063a3c260521461045a578063a8de51171461046d578063ada9652e14610480578063b68d18091461049557600080fd5b806384a710fa116100de57806384a710fa1461040b578063893d20e81461041e5780638e32e979146104265780638fb360371461043957600080fd5b80637738eb86146103bf5780637a9e5e4b146103d25780637d42d397146103e557806382678766146103f857600080fd5b806336fc697e11610187578063644c45e011610156578063644c45e014610353578063673ad94f14610385578063675393bf146103965780637225ed01146103a957600080fd5b806336fc697e146102e0578063377a6db7146102e857806349bb9e4b1461031b5780635ab1bd531461032e57600080fd5b80631eff4b22116101c35780631eff4b2214610272578063214cdb80146102a757806327bb7a33146102ba578063329d6e74146102cd57600080fd5b806301ffc9a7146101f55780630d8e6e2c146102375780630fec111c14610253578063138461e014610268575b600080fd5b61022261020336600461314e565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b61023f6104e5565b60405162ffffff909116815260200161022e565b61025b61056f565b60405161022e91906131cf565b610270610700565b005b6102997f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b60405190815260200161022e565b6102706102b536600461314e565b610907565b6102706102c836600461346c565b610934565b6102706102db366004613504565b6109d9565b610270610b27565b6102fb6102f6366004613538565b610b6d565b604080516001600160601b0393841681529290911660208301520161022e565b6102706103293660046135a9565b610c6a565b6001546001600160a01b03165b6040516001600160a01b03909116815260200161022e565b60008051602061452f833981519152546001600160601b03165b6040516001600160601b03909116815260200161022e565b6102706103933660046135ee565b50565b6102706103a436600461360b565b610d69565b6102fb6103b7366004613628565b928392509050565b61036d6103cd3660046136af565b610e76565b6102706103e036600461360b565b6111c9565b6102706103f3366004613769565b61124c565b610270610406366004613892565b6116e8565b6102fb6104193660046138d8565b6118be565b61033b6119c1565b610270610434366004613918565b611af8565b610441611d31565b6040516001600160e01b0319909116815260200161022e565b61027061046836600461396d565b611d69565b61027061047b366004613b2e565b611ff0565b61029960008051602061452f83398151915281565b604051608c815260200161022e565b61033b6120e7565b6102706104ba3660046135ee565b612103565b6102706104cd366004613b8f565b612231565b6102706104e0366004613bc8565b6122a8565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af4158015610546573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056a9190613c3c565b905090565b610577613110565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156105f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106149190613c6c565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a00161065c6119c1565b6001600160a01b0316815260200182600101805461067990613c89565b80601f01602080910402602001604051908101604052809291908181526020018280546106a590613c89565b80156106f25780601f106106c7576101008083540402835291602001916106f2565b820191906000526020600020905b8154815290600101906020018083116106d557829003601f168201915b505050505081525091505090565b600060008051602061452f83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801561076f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107939190613cce565b156107c45780546040516301ab8b6760e21b81526001600160601b0390911660048201526024015b60405180910390fd5b306107d76001546001600160a01b031690565b60405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa15801561081f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108439190613cce565b61086b5760405163b9304b0d60e01b81526001600160a01b03821660048201526024016107bb565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038381166004830152919091169063d272ac1e90602401602060405180830381865afa1580156108bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e39190613c6c565b82546bffffffffffffffffffffffff19166001600160601b03919091161790915550565b61090f612318565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b61093c612318565b6109468287612231565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3016109cf8382613d31565b5050505050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c6109fb6104e5565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5f9190613dfb565b60008051602061456f8339815191528054600160401b900460ff1680610a92575080546001600160401b03808416911610155b15610ab05760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610ada83612351565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a1505050565b610b2f612318565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b600080610b7d335b600036612359565b610be9876001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be29190613e18565b87856118be565b600254604051634adcf90960e01b81529294509092506001600160a01b031690634adcf90990610c23908a90899089908890600401613e35565b600060405180830381600087803b158015610c3d57600080fd5b505af1158015610c51573d6000803e3d6000fd5b50505050610c5f818361245f565b509550959350505050565b60008051602061456f8339815191528054600160401b810460ff1615906001600160401b0316600081158015610c9d5750825b90506000826001600160401b03166001148015610cb95750303b155b905081158015610cc7575080155b15610ce55760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610d0f57845460ff60401b1916600160401b1785555b610d1987876124ef565b8315610d6057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b610d71612318565b806001600160a01b03163b600003610da75760405163fdeac91f60e01b81526001600160a01b03821660048201526024016107bb565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152633135064760e11b60048201526301ffc9a790602401602060405180830381865afa925050508015610e21575060408051601f3d908101601f19168201909252610e1e91810190613cce565b60015b610e495760405163fdeac91f60e01b81526001600160a01b03821660048201526024016107bb565b80610e725760405163fdeac91f60e01b81526001600160a01b03831660048201526024016107bb565b5050565b60008080610e84608c6126be565b92505091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ec9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eed9190613e18565b905060008073__$58e11c6004c5796aaa8c56e718245e69a2$__639ed246ea610f16858861285a565b6040516001600160e01b031960e084901b1681528151600482015260209091015160248201526001600160601b038d1660448201526064016040805180830381865af4158015610f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8e9190613e67565b91509150600260009054906101000a90046001600160a01b03166001600160a01b031663e283b4a985878f8f868f8f8f6040518963ffffffff1660e01b8152600401610fe1989796959493929190613ebf565b6020604051808303816000875af1158015611000573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110249190613c6c565b9550600360009054906101000a90046001600160a01b03166001600160a01b031663d56cd3d5856001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ac9190613e18565b878d866040518563ffffffff1660e01b81526004016110ce9493929190613e35565b600060405180830381600087803b1580156110e857600080fd5b505af11580156110fc573d6000803e3d6000fd5b5050505061110c83868e8d612966565b7f0dcadf661b8b2888423f78a848a77785b4dc0138395b12584835f6a65dfcea79846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561116b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118f9190613c6c565b604080516001600160601b03928316815282891660208201529189169082015260600160405180910390a150505050509695505050505050565b336111d26120e7565b6001600160a01b0316816001600160a01b03161461120d5760405162d1953b60e31b81526001600160a01b03821660048201526024016107bb565b816001600160a01b03163b600003611243576040516361798f2f60e11b81526001600160a01b03831660048201526024016107bb565b610e7282612ae9565b61125533610b75565b60006112696001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03851660048201529091506000906001600160a01b0383169063a48f42e090602401600060405180830381865afa1580156112bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112e49190810190613f95565b60208101516040516305247a1760e51b81526001600160601b0390911660048201529091506000906001600160a01b0384169063a48f42e090602401600060405180830381865afa15801561133d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113659190810190613f95565b60208101516040516305247a1760e51b81526001600160601b0390911660048201529091506000906001600160a01b0385169063a48f42e090602401600060405180830381865afa1580156113be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113e69190810190613f95565b9050600081608001519050600073__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd968861016001518960e001516114229190614067565b6040518263ffffffff1660e01b815260040161144091815260200190565b602060405180830381865af415801561145d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114819190613c6c565b9050600073__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd968961018001518a61010001516114b59190614067565b6040518263ffffffff1660e01b81526004016114d391815260200190565b602060405180830381865af41580156114f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115149190613c6c565b9050600073__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd968a606001516040518263ffffffff1660e01b815260040161155591815260200190565b602060405180830381865af4158015611572573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115969190613c6c565b90506000846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fc9190613e18565b60035488519192506001600160a01b03169063d56cd3d59083906116208688612b4a565b886040518563ffffffff1660e01b81526004016116409493929190613e35565b600060405180830381600087803b15801561165a57600080fd5b505af115801561166e573d6000803e3d6000fd5b50506003548a516040516325e451d360e01b81526001600160a01b0390921693506325e451d392506116a99185919087908990600401613e35565b600060405180830381600087803b1580156116c357600080fd5b505af11580156116d7573d6000803e3d6000fd5b505050505050505050505050505050565b6000806116f5608c6126be565b92505091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561173a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175e9190613e18565b6040516357f80bbf60e01b81526001600160601b03851660048201526001600160a01b0391909116906357f80bbf906024016101c060405180830381865afa1580156117ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d291906140b8565b9050858161010001819052508481610120018190525083816101400181905250816001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611830573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118549190613e18565b6001600160a01b031663763bb754848360ff6040518463ffffffff1660e01b815260040161188493929190614188565b600060405180830381600087803b15801561189e57600080fd5b505af11580156118b2573d6000803e3d6000fd5b50505050505050505050565b6040516302d764c760e21b81526001600160601b0383166004820152600090819081906001600160a01b03871690630b5d931c9060240161020060405180830381865afa158015611913573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611937919061426a565b602001516040516357f80bbf60e01b81526001600160601b03821660048201529091506000906001600160a01b038816906357f80bbf906024016101c060405180830381865afa15801561198f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b391906140b8565b509396879650945050505050565b60008060008051602061452f83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015611a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a559190613cce565b15611ae2576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adc9190613e18565b91505090565b54600160601b90046001600160a01b0316919050565b611b00612318565b611b8083846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b669190613c6c565b603c60008560405180602001604052806000815250610934565b6001600160a01b03821615611b9d57611b9882612bd2565b611d0c565b6000611bb16001546001600160a01b031690565b6001600160a01b031663d39e60436028604051632392b61b60e21b81526003600482015273__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af4158015611c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c35919061431f565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015611c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9e9190613e18565b9050611d0a816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ce1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d059190613e18565b612bd2565b505b611d1c634a531f3360e01b610907565b611d2c63b68d180960e01b610907565b505050565b60008051602061454f833981519152805460009190600160a01b900460ff16611d5b576000611adc565b638fb3603760e01b91505090565b600080611d76608c6126be565b92505091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddf9190613e18565b60405163f0ea17c360e01b81526001600160601b03851660048201529091506000906001600160a01b0383169063f0ea17c390602401600060405180830381865afa158015611e32573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e5a919081019061433c565b905060008160a00151806020019051810190611e7691906140b8565b9050611e9a8160200151611e88612be3565b6001600160401b039081169116141590565b15611ec35760405163eff765ff60e01b81526001600160601b03861660048201526024016107bb565b6001600160401b03861660208083019190915260408051631a99b41b60e31b815290516001600160a01b0387169263d4cda0d892600480820193918290030181865afa158015611f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3b9190613e18565b6001600160a01b031663763bb754868360ff6040518463ffffffff1660e01b8152600401611f6b93929190614188565b600060405180830381600087803b158015611f8557600080fd5b505af1158015611f99573d6000803e3d6000fd5b5050604080516001600160601b03891681526001600160401b038a1660208201527fe7e6a7a42cbdb2d274dfaaac06073a09d6095ca3745ce71fe5a137f8247ea23e935001905060405180910390a1505050505050565b611ff933610b75565b600254602082015160808301516101808401516001600160a01b039093169263ad328d9f928792879261202c9190612c60565b6040518563ffffffff1660e01b815260040161204b9493929190613e35565b600060405180830381600087803b15801561206557600080fd5b505af1158015612079573d6000803e3d6000fd5b50506002546040516301d90a6f60e61b81526001600160a01b0387811660048301526001600160601b038716602483015290911692506376429bc09150604401600060405180830381600087803b1580156120d357600080fd5b505af1158015610d60573d6000803e3d6000fd5b60008051602061454f833981519152546001600160a01b031690565b600080612110608c6126be565b600254604051632aa6b2cb60e21b81526001600160a01b0380841660048301526001600160601b0389166024830152949650919450929092169163aa9acb2c9150604401600060405180830381600087803b15801561216e57600080fd5b505af1158015612182573d6000803e3d6000fd5b505050507f64c75a4392ba38fee1b5a44b61e3dd0cae424d2d43eb2b0c99772efe31e1c042816001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122099190613c6c565b604080516001600160601b039283168152828616602082015291861690820152606001610b1a565b612239612318565b61224281610d69565b61224a610b27565b6001600160a01b0382166122715760405163f17ef42d60e01b815260040160405180910390fd5b5060008051602061452f83398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b6122b133610b75565b600254602083015160405163ad328d9f60e01b81526001600160a01b039092169163ad328d9f916122ea91889188918790600401613e35565b600060405180830381600087803b15801561230457600080fd5b505af11580156109cf573d6000803e3d6000fd5b60008051602061456f83398151915254600160401b900460ff1661234f57604051631afcd79f60e31b815260040160405180910390fd5b565b6101f0612318565b60008051602061454f8339815191526000806123946123766120e7565b8730612386600460008a8c614410565b61238f9161443a565b612cab565b91509150816124575763ffffffff81161561243457825460ff60a01b1916600160a01b1783556123c26120e7565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016123f19392919061446a565b600060405180830381600087803b15801561240b57600080fd5b505af115801561241f573d6000803e3d6000fd5b5050845460ff60a01b19168555506124579050565b60405162d1953b60e31b81526001600160a01b03871660048201526024016107bb565b505050505050565b604051632601631360e21b81526001600160601b0380841660048301528216602482015260009073__$3bac17678db7ae928afa209f2f44deec9c$__906398058c4c90604401602060405180830381865af41580156124c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e69190613cce565b90505b92915050565b60008051602061456f8339815191528054600160401b810460ff1615906001600160401b03166000811580156125225750825b90506000826001600160401b0316600114801561253e5750303b155b90508115801561254c575080155b1561256a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561259457845460ff60401b1916600160401b1785555b600080878060200190518101906125ab9190614498565b92505091506125bb82828b611af8565b6125ca6028612db7565b612db7565b600580546001600160a01b0319166001600160a01b03929092169190911790556125f56125c560dc90565b600280546001600160a01b0319166001600160a01b03929092169190911790556126206125c5604690565b600480546001600160a01b0319166001600160a01b039290921691909117905561264b6125c5606490565b600380546001600160a01b0319166001600160a01b039290921691909117905561267a629f590960e41b610907565b50508315610d6057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610d57565b60006126c8613110565b60006126dc6001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa158015612722573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127469190613c6c565b92506127528385612ec4565b8092508193505050806001600160a01b031663e5f6cd276040518163ffffffff1660e01b8152600401602060405180830381865afa158015612798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127bc9190613e18565b6080830151604051629b7b3560e61b81526001600160a01b0391821660048201529116906326decd4090602401602060405180830381865afa158015612806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282a9190613cce565b1561285357604051637d71120960e11b81526001600160601b03841660048201526024016107bb565b9193909250565b60408051808201909152600080825260208201526040516357f80bbf60e01b81526001600160601b03831660048201526000906001600160a01b038516906357f80bbf906024016101c060405180830381865afa1580156128bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e391906140b8565b516040516357f80bbf60e01b81526001600160601b03821660048201529091506001600160a01b038516906357f80bbf906024016101c060405180830381865afa158015612935573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295991906140b8565b6101200151949350505050565b60405163f0ea17c360e01b81526001600160601b03841660048201526000906001600160a01b0386169063f0ea17c390602401600060405180830381865afa1580156129b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526129de919081019061433c565b606081015160808201516040516330b8415f60e01b81526001600160601b0386166004820152929350909173__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af4158015612a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a699190613cce565b15610d605760405163c661667d60e01b81526001600160a01b03868116600483015282811660248301526001600160601b038616604483015283169063c661667d90606401600060405180830381600087803b158015612ac857600080fd5b505af1158015612adc573d6000803e3d6000fd5b5050505050505050505050565b60008051602061454f83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b60405163274acb3560e01b81526001600160601b0380841660048301528216602482015260009073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb35906044015b602060405180830381865af4158015612bae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e69190613c6c565b612bda612318565b6103938161306a565b6040516368aebf7b60e01b81526001600160401b03600482015260009073__$1d92393fa9ccd763988368ce8a1cb90d26$__906368aebf7b90602401602060405180830381865af4158015612c3c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056a9190613dfb565b6040516363cf551160e11b81526001600160601b0380841660048301528216602482015260009073__$3bac17678db7ae928afa209f2f44deec9c$__9063c79eaa2290604401612b91565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b17905251612d1a91906144da565b600060405180830381855afa9150503d8060008114612d55576040519150601f19603f3d011682016040523d82523d6000602084013e612d5a565b606091505b50915091508115612dac576040815110612d8c5780806020019051810190612d8291906144f6565b9094509250612dac565b6020815110612dac5780806020019051810190612da99190613cce565b93505b505094509492505050565b6000612dcb6001546001600160a01b031690565b6001600160a01b031663d39e604383612de26104e5565b60405163c9e66e2960e01b815262ffffff909116600482015273__$8eede297b65ed5a56eb3f84d8232ae93f5$__9063c9e66e2990602401602060405180830381865af4158015612e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5b919061431f565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015612ea0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e99190613e18565b612ecc613110565b600080612ee16001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03871660048201529091506001600160a01b0382169063a48f42e090602401600060405180830381865afa158015612f31573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f599190810190613f95565b925060ff8416606414612fb757604083015160ff858116911614612fb257604080840151905163b83d92cb60e01b81526001600160601b038716600482015260ff808716602483015290911660448201526064016107bb565b613053565b612fd28360400151612fc7606e90565b60ff90811691161490565b80612fe85750612fe88360400151612fc7608c90565b80612ffe5750612ffe8360400151612fc7607890565b8061301457506130148360400151612fc7608290565b61305357604080840151905163b83d92cb60e01b81526001600160601b038716600482015260ff808716602483015290911660448201526064016107bb565b613060836020015161307b565b9150509250929050565b613072612318565b61039381612ae9565b600061308f6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa1580156130de573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131069190810190613f95565b6080015192915050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b60006020828403121561316057600080fd5b81356001600160e01b03198116811461317857600080fd5b9392505050565b60005b8381101561319a578181015183820152602001613182565b50506000910152565b600081518084526131bb81602086016020860161317f565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a083015161323860c08401826001600160a01b03169052565b5060c083015160e0808401526132526101008401826131a3565b949350505050565b6001600160a01b038116811461039357600080fd5b6001600160601b038116811461039357600080fd5b803561328f8161326f565b919050565b60ff8116811461039357600080fd5b801515811461039357600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156132e9576132e96132b1565b60405290565b60405161024081016001600160401b03811182821017156132e9576132e96132b1565b60405161022081016001600160401b03811182821017156132e9576132e96132b1565b60405160e081016001600160401b03811182821017156132e9576132e96132b1565b60405161016081016001600160401b03811182821017156132e9576132e96132b1565b60405161012081016001600160401b03811182821017156132e9576132e96132b1565b60405160c081016001600160401b03811182821017156132e9576132e96132b1565b604051601f8201601f191681016001600160401b03811182821017156133e7576133e76132b1565b604052919050565b60006001600160401b03821115613408576134086132b1565b50601f01601f191660200190565b600082601f83011261342757600080fd5b813561343a613435826133ef565b6133bf565b81815284602083860101111561344f57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c0878903121561348557600080fd5b86356134908161325a565b955060208701356134a08161326f565b945060408701356134b081613294565b935060608701356134c0816132a3565b925060808701356134d08161325a565b915060a08701356001600160401b038111156134eb57600080fd5b6134f789828a01613416565b9150509295509295509295565b60006020828403121561351657600080fd5b81356001600160401b0381111561352c57600080fd5b61325284828501613416565b600080600080600060a0868803121561355057600080fd5b853561355b8161325a565b9450602086013561356b8161326f565b9350604086013561357b8161326f565b9250606086013561358b8161326f565b9150608086013561359b8161326f565b809150509295509295909350565b600080604083850312156135bc57600080fd5b82356135c78161325a565b915060208301356001600160401b038111156135e257600080fd5b61306085828601613416565b60006020828403121561360057600080fd5b81356131788161326f565b60006020828403121561361d57600080fd5b81356131788161325a565b60008060006060848603121561363d57600080fd5b833592506020840135915060408401356136568161326f565b809150509250925092565b60006040828403121561367357600080fd5b61367b6132c7565b9050813581526020820135602082015292915050565b64ffffffffff8116811461039357600080fd5b803561328f81613691565b60008060008060008060c087890312156136c857600080fd5b86356136d38161325a565b95506136e28860208901613661565b945060608701356136f28161326f565b9350608087013561370281613691565b925060a08701356001600160401b038082111561371e57600080fd5b818901915089601f83011261373257600080fd5b81358181111561374157600080fd5b8a602082850101111561375357600080fd5b6020830194508093505050509295509295509295565b60008082840361026081121561377e57600080fd5b83356137898161326f565b9250610240601f19820181131561379f57600080fd5b6137a76132ef565b91506137b560208601613284565b82526137c360408601613284565b60208301526137d460608601613284565b60408301526080850135606083015260a0850135608083015260c085013560a083015260e085013560c08301526101008086013560e084015261012080870135828501526101409150818701358185015250610160808701358285015261018091508187013581850152506101a080870135828501526101c091508187013581850152506101e08087013582850152610200915081870135818501525061022080870135828501528287013581850152505050809150509250929050565b600080600060c084860312156138a757600080fd5b6138b18585613661565b92506138c08560408601613661565b91506138cf8560808601613661565b90509250925092565b6000806000606084860312156138ed57600080fd5b83356138f88161325a565b925060208401356139088161326f565b915060408401356136568161326f565b60008060006060848603121561392d57600080fd5b83356139388161325a565b925060208401356139488161325a565b915060408401356136568161325a565b6001600160401b038116811461039357600080fd5b60006020828403121561397f57600080fd5b813561317881613958565b80356001600160c01b03198116811461328f57600080fd5b803561ffff8116811461328f57600080fd5b600061022082840312156139c757600080fd5b6139cf613312565b90506139da82613284565b81526139e860208301613284565b60208201526139f96040830161398a565b6040820152613a0a6060830161398a565b6060820152613a1b60808301613284565b6080820152613a2c60a08301613284565b60a0820152613a3d60c08301613284565b60c0820152613a4e60e083016136a4565b60e0820152610100808301356001600160401b0380821115613a6f57600080fd5b613a7b86838701613416565b83850152610120925082850135915080821115613a9757600080fd5b50613aa485828601613416565b828401525050610140613ab88184016139a2565b90820152610160613aca8382016139a2565b90820152610180613adc838201613284565b908201526101a0613aee838201613284565b908201526101c0613b008382016136a4565b908201526101e0613b128382016136a4565b90820152610200613b248382016136a4565b9082015292915050565b600080600060608486031215613b4357600080fd5b8335613b4e8161325a565b92506020840135613b5e8161326f565b915060408401356001600160401b03811115613b7957600080fd5b613b85868287016139b4565b9150509250925092565b60008060408385031215613ba257600080fd5b8235613bad8161325a565b91506020830135613bbd8161325a565b809150509250929050565b60008060008060808587031215613bde57600080fd5b8435613be98161325a565b93506020850135613bf98161326f565b925060408501356001600160401b03811115613c1457600080fd5b613c20878288016139b4565b9250506060850135613c318161326f565b939692955090935050565b600060208284031215613c4e57600080fd5b815162ffffff8116811461317857600080fd5b805161328f8161326f565b600060208284031215613c7e57600080fd5b81516131788161326f565b600181811c90821680613c9d57607f821691505b602082108103613cbd57634e487b7160e01b600052602260045260246000fd5b50919050565b805161328f816132a3565b600060208284031215613ce057600080fd5b8151613178816132a3565b601f821115611d2c57600081815260208120601f850160051c81016020861015613d125750805b601f850160051c820191505b8181101561245757828155600101613d1e565b81516001600160401b03811115613d4a57613d4a6132b1565b613d5e81613d588454613c89565b84613ceb565b602080601f831160018114613d935760008415613d7b5750858301515b600019600386901b1c1916600185901b178555612457565b600085815260208120601f198616915b82811015613dc257888601518255948401946001909101908401613da3565b5085821015613de05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b805161328f81613958565b600060208284031215613e0d57600080fd5b815161317881613958565b600060208284031215613e2a57600080fd5b81516131788161325a565b6001600160a01b039490941684526001600160601b039283166020850152908216604084015216606082015260800190565b60008060408385031215613e7a57600080fd5b8251613e858161326f565b6020840151909250613bbd8161326f565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0389811682526001600160601b038981166020840152888216604084015260009161010091613f02606086018b80518252602090810151910152565b881660a08501525064ffffffffff861660c084015260e08301819052613f2b8184018587613e96565b9b9a5050505050505050505050565b805161328f81613294565b805161328f8161325a565b600082601f830112613f6157600080fd5b8151613f6f613435826133ef565b818152846020838601011115613f8457600080fd5b61325282602083016020870161317f565b600060208284031215613fa757600080fd5b81516001600160401b0380821115613fbe57600080fd5b9083019060e08286031215613fd257600080fd5b613fda613335565b613fe383613c61565b8152613ff160208401613c61565b602082015261400260408401613f3a565b604082015261401360608401613cc3565b606082015261402460808401613f45565b608082015261403560a08401613f45565b60a082015260c08301518281111561404c57600080fd5b61405887828601613f50565b60c08301525095945050505050565b808201808211156124e957634e487b7160e01b600052601160045260246000fd5b60006040828403121561409a57600080fd5b6140a26132c7565b9050815181526020820151602082015292915050565b60006101c082840312156140cb57600080fd5b6140d3613357565b6140dc83613c61565b81526140ea60208401613df0565b60208201526140fb60408401613c61565b604082015261410c60608401613cc3565b606082015261411d60808401613cc3565b608082015261412e60a08401613cc3565b60a082015260c083015160c082015260e083015160e082015261010061415685828601614088565b9082015261014061416985858301614088565b61012083015261417d856101808601614088565b908201529392505050565b6001600160601b0384811682528351166020820152610200810160208401516001600160401b03811660408401525060408401516001600160601b0381166060840152506060840151801515608084015250608084015180151560a08401525060a084015180151560c08401525060c084015160e083015260e084015161010081818501528086015191505061012061422d8185018380518252602090810151910152565b850151805161016085015260209081015161018085015261014086015180516101a086015201516101c08401525060ff83166101e0830152613252565b6000610200828403121561427d57600080fd5b61428561337a565b61428e83613c61565b815261429c60208401613c61565b60208201526142ae8460408501614088565b60408201526142c08460808501614088565b60608201526142d28460c08501614088565b60808201526101006142e685828601614088565b60a08301526142f9856101408601614088565b60c083015261430c856101808601614088565b60e083015261417d856101c08601614088565b60006020828403121561433157600080fd5b815161317881613294565b60006020828403121561434e57600080fd5b81516001600160401b038082111561436557600080fd5b9083019060c0828603121561437957600080fd5b61438161339d565b82518281111561439057600080fd5b61439c87828601613f50565b8252506143ab60208401613c61565b60208201526143bc60408401613f45565b60408201526143cd60608401613f45565b60608201526143de60808401613f45565b608082015260a0830151828111156143f557600080fd5b61440187828601613f50565b60a08301525095945050505050565b6000808585111561442057600080fd5b8386111561442d57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156144625780818660040360031b1b83161692505b505092915050565b6001600160a01b038416815260406020820181905260009061448f9083018486613e96565b95945050505050565b6000806000606084860312156144ad57600080fd5b83516144b88161325a565b60208501519093506144c98161325a565b60408501519092506136568161325a565b600082516144ec81846020870161317f565b9190910192915050565b6000806040838503121561450957600080fd5b8251614514816132a3565b602084015190925063ffffffff81168114613bbd57600080fdfe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220bb10949c107ff716cae1511a7cab796a18ab3ce243cf6613f7d3bf976aa988f364736f6c63430008140033",
1234
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80637738eb861161010f578063a3c26052116100a2578063bf7e214f11610071578063bf7e214f146104a4578063d0d63b09146104ac578063f7c34ee0146104bf578063fce06ca8146104d257600080fd5b8063a3c260521461045a578063a8de51171461046d578063ada9652e14610480578063b68d18091461049557600080fd5b806384a710fa116100de57806384a710fa1461040b578063893d20e81461041e5780638e32e979146104265780638fb360371461043957600080fd5b80637738eb86146103bf5780637a9e5e4b146103d25780637d42d397146103e557806382678766146103f857600080fd5b806336fc697e11610187578063644c45e011610156578063644c45e014610353578063673ad94f14610385578063675393bf146103965780637225ed01146103a957600080fd5b806336fc697e146102e0578063377a6db7146102e857806349bb9e4b1461031b5780635ab1bd531461032e57600080fd5b80631eff4b22116101c35780631eff4b2214610272578063214cdb80146102a757806327bb7a33146102ba578063329d6e74146102cd57600080fd5b806301ffc9a7146101f55780630d8e6e2c146102375780630fec111c14610253578063138461e014610268575b600080fd5b61022261020336600461314e565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b61023f6104e5565b60405162ffffff909116815260200161022e565b61025b61056f565b60405161022e91906131cf565b610270610700565b005b6102997f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b60405190815260200161022e565b6102706102b536600461314e565b610907565b6102706102c836600461346c565b610934565b6102706102db366004613504565b6109d9565b610270610b27565b6102fb6102f6366004613538565b610b6d565b604080516001600160601b0393841681529290911660208301520161022e565b6102706103293660046135a9565b610c6a565b6001546001600160a01b03165b6040516001600160a01b03909116815260200161022e565b60008051602061452f833981519152546001600160601b03165b6040516001600160601b03909116815260200161022e565b6102706103933660046135ee565b50565b6102706103a436600461360b565b610d69565b6102fb6103b7366004613628565b928392509050565b61036d6103cd3660046136af565b610e76565b6102706103e036600461360b565b6111c9565b6102706103f3366004613769565b61124c565b610270610406366004613892565b6116e8565b6102fb6104193660046138d8565b6118be565b61033b6119c1565b610270610434366004613918565b611af8565b610441611d31565b6040516001600160e01b0319909116815260200161022e565b61027061046836600461396d565b611d69565b61027061047b366004613b2e565b611ff0565b61029960008051602061452f83398151915281565b604051608c815260200161022e565b61033b6120e7565b6102706104ba3660046135ee565b612103565b6102706104cd366004613b8f565b612231565b6102706104e0366004613bc8565b6122a8565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af4158015610546573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056a9190613c3c565b905090565b610577613110565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156105f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106149190613c6c565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a00161065c6119c1565b6001600160a01b0316815260200182600101805461067990613c89565b80601f01602080910402602001604051908101604052809291908181526020018280546106a590613c89565b80156106f25780601f106106c7576101008083540402835291602001916106f2565b820191906000526020600020905b8154815290600101906020018083116106d557829003601f168201915b505050505081525091505090565b600060008051602061452f83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801561076f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107939190613cce565b156107c45780546040516301ab8b6760e21b81526001600160601b0390911660048201526024015b60405180910390fd5b306107d76001546001600160a01b031690565b60405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa15801561081f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108439190613cce565b61086b5760405163b9304b0d60e01b81526001600160a01b03821660048201526024016107bb565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038381166004830152919091169063d272ac1e90602401602060405180830381865afa1580156108bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e39190613c6c565b82546bffffffffffffffffffffffff19166001600160601b03919091161790915550565b61090f612318565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b61093c612318565b6109468287612231565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3016109cf8382613d31565b5050505050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c6109fb6104e5565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5f9190613dfb565b60008051602061456f8339815191528054600160401b900460ff1680610a92575080546001600160401b03808416911610155b15610ab05760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610ada83612351565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a1505050565b610b2f612318565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b600080610b7d335b600036612359565b610be9876001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be29190613e18565b87856118be565b600254604051634adcf90960e01b81529294509092506001600160a01b031690634adcf90990610c23908a90899089908890600401613e35565b600060405180830381600087803b158015610c3d57600080fd5b505af1158015610c51573d6000803e3d6000fd5b50505050610c5f818361245f565b509550959350505050565b60008051602061456f8339815191528054600160401b810460ff1615906001600160401b0316600081158015610c9d5750825b90506000826001600160401b03166001148015610cb95750303b155b905081158015610cc7575080155b15610ce55760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610d0f57845460ff60401b1916600160401b1785555b610d1987876124ef565b8315610d6057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b610d71612318565b806001600160a01b03163b600003610da75760405163fdeac91f60e01b81526001600160a01b03821660048201526024016107bb565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152633135064760e11b60048201526301ffc9a790602401602060405180830381865afa925050508015610e21575060408051601f3d908101601f19168201909252610e1e91810190613cce565b60015b610e495760405163fdeac91f60e01b81526001600160a01b03821660048201526024016107bb565b80610e725760405163fdeac91f60e01b81526001600160a01b03831660048201526024016107bb565b5050565b60008080610e84608c6126be565b92505091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ec9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eed9190613e18565b905060008073__$58e11c6004c5796aaa8c56e718245e69a2$__639ed246ea610f16858861285a565b6040516001600160e01b031960e084901b1681528151600482015260209091015160248201526001600160601b038d1660448201526064016040805180830381865af4158015610f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8e9190613e67565b91509150600260009054906101000a90046001600160a01b03166001600160a01b031663e283b4a985878f8f868f8f8f6040518963ffffffff1660e01b8152600401610fe1989796959493929190613ebf565b6020604051808303816000875af1158015611000573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110249190613c6c565b9550600360009054906101000a90046001600160a01b03166001600160a01b031663d56cd3d5856001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ac9190613e18565b878d866040518563ffffffff1660e01b81526004016110ce9493929190613e35565b600060405180830381600087803b1580156110e857600080fd5b505af11580156110fc573d6000803e3d6000fd5b5050505061110c83868e8d612966565b7f0dcadf661b8b2888423f78a848a77785b4dc0138395b12584835f6a65dfcea79846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561116b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118f9190613c6c565b604080516001600160601b03928316815282891660208201529189169082015260600160405180910390a150505050509695505050505050565b336111d26120e7565b6001600160a01b0316816001600160a01b03161461120d5760405162d1953b60e31b81526001600160a01b03821660048201526024016107bb565b816001600160a01b03163b600003611243576040516361798f2f60e11b81526001600160a01b03831660048201526024016107bb565b610e7282612ae9565b61125533610b75565b60006112696001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03851660048201529091506000906001600160a01b0383169063a48f42e090602401600060405180830381865afa1580156112bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112e49190810190613f95565b60208101516040516305247a1760e51b81526001600160601b0390911660048201529091506000906001600160a01b0384169063a48f42e090602401600060405180830381865afa15801561133d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113659190810190613f95565b60208101516040516305247a1760e51b81526001600160601b0390911660048201529091506000906001600160a01b0385169063a48f42e090602401600060405180830381865afa1580156113be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113e69190810190613f95565b9050600081608001519050600073__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd968861016001518960e001516114229190614067565b6040518263ffffffff1660e01b815260040161144091815260200190565b602060405180830381865af415801561145d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114819190613c6c565b9050600073__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd968961018001518a61010001516114b59190614067565b6040518263ffffffff1660e01b81526004016114d391815260200190565b602060405180830381865af41580156114f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115149190613c6c565b9050600073__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd968a606001516040518263ffffffff1660e01b815260040161155591815260200190565b602060405180830381865af4158015611572573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115969190613c6c565b90506000846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fc9190613e18565b60035488519192506001600160a01b03169063d56cd3d59083906116208688612b4a565b886040518563ffffffff1660e01b81526004016116409493929190613e35565b600060405180830381600087803b15801561165a57600080fd5b505af115801561166e573d6000803e3d6000fd5b50506003548a516040516325e451d360e01b81526001600160a01b0390921693506325e451d392506116a99185919087908990600401613e35565b600060405180830381600087803b1580156116c357600080fd5b505af11580156116d7573d6000803e3d6000fd5b505050505050505050505050505050565b6000806116f5608c6126be565b92505091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561173a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175e9190613e18565b6040516357f80bbf60e01b81526001600160601b03851660048201526001600160a01b0391909116906357f80bbf906024016101c060405180830381865afa1580156117ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d291906140b8565b9050858161010001819052508481610120018190525083816101400181905250816001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611830573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118549190613e18565b6001600160a01b031663763bb754848360ff6040518463ffffffff1660e01b815260040161188493929190614188565b600060405180830381600087803b15801561189e57600080fd5b505af11580156118b2573d6000803e3d6000fd5b50505050505050505050565b6040516302d764c760e21b81526001600160601b0383166004820152600090819081906001600160a01b03871690630b5d931c9060240161020060405180830381865afa158015611913573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611937919061426a565b602001516040516357f80bbf60e01b81526001600160601b03821660048201529091506000906001600160a01b038816906357f80bbf906024016101c060405180830381865afa15801561198f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b391906140b8565b509396879650945050505050565b60008060008051602061452f83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015611a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a559190613cce565b15611ae2576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adc9190613e18565b91505090565b54600160601b90046001600160a01b0316919050565b611b00612318565b611b8083846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b669190613c6c565b603c60008560405180602001604052806000815250610934565b6001600160a01b03821615611b9d57611b9882612bd2565b611d0c565b6000611bb16001546001600160a01b031690565b6001600160a01b031663d39e60436028604051632392b61b60e21b81526003600482015273__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af4158015611c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c35919061431f565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015611c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9e9190613e18565b9050611d0a816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ce1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d059190613e18565b612bd2565b505b611d1c634a531f3360e01b610907565b611d2c63b68d180960e01b610907565b505050565b60008051602061454f833981519152805460009190600160a01b900460ff16611d5b576000611adc565b638fb3603760e01b91505090565b600080611d76608c6126be565b92505091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddf9190613e18565b60405163f0ea17c360e01b81526001600160601b03851660048201529091506000906001600160a01b0383169063f0ea17c390602401600060405180830381865afa158015611e32573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e5a919081019061433c565b905060008160a00151806020019051810190611e7691906140b8565b9050611e9a8160200151611e88612be3565b6001600160401b039081169116141590565b15611ec35760405163eff765ff60e01b81526001600160601b03861660048201526024016107bb565b6001600160401b03861660208083019190915260408051631a99b41b60e31b815290516001600160a01b0387169263d4cda0d892600480820193918290030181865afa158015611f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3b9190613e18565b6001600160a01b031663763bb754868360ff6040518463ffffffff1660e01b8152600401611f6b93929190614188565b600060405180830381600087803b158015611f8557600080fd5b505af1158015611f99573d6000803e3d6000fd5b5050604080516001600160601b03891681526001600160401b038a1660208201527fe7e6a7a42cbdb2d274dfaaac06073a09d6095ca3745ce71fe5a137f8247ea23e935001905060405180910390a1505050505050565b611ff933610b75565b600254602082015160808301516101808401516001600160a01b039093169263ad328d9f928792879261202c9190612c60565b6040518563ffffffff1660e01b815260040161204b9493929190613e35565b600060405180830381600087803b15801561206557600080fd5b505af1158015612079573d6000803e3d6000fd5b50506002546040516301d90a6f60e61b81526001600160a01b0387811660048301526001600160601b038716602483015290911692506376429bc09150604401600060405180830381600087803b1580156120d357600080fd5b505af1158015610d60573d6000803e3d6000fd5b60008051602061454f833981519152546001600160a01b031690565b600080612110608c6126be565b600254604051632aa6b2cb60e21b81526001600160a01b0380841660048301526001600160601b0389166024830152949650919450929092169163aa9acb2c9150604401600060405180830381600087803b15801561216e57600080fd5b505af1158015612182573d6000803e3d6000fd5b505050507f64c75a4392ba38fee1b5a44b61e3dd0cae424d2d43eb2b0c99772efe31e1c042816001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122099190613c6c565b604080516001600160601b039283168152828616602082015291861690820152606001610b1a565b612239612318565b61224281610d69565b61224a610b27565b6001600160a01b0382166122715760405163f17ef42d60e01b815260040160405180910390fd5b5060008051602061452f83398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b6122b133610b75565b600254602083015160405163ad328d9f60e01b81526001600160a01b039092169163ad328d9f916122ea91889188918790600401613e35565b600060405180830381600087803b15801561230457600080fd5b505af11580156109cf573d6000803e3d6000fd5b60008051602061456f83398151915254600160401b900460ff1661234f57604051631afcd79f60e31b815260040160405180910390fd5b565b6101f0612318565b60008051602061454f8339815191526000806123946123766120e7565b8730612386600460008a8c614410565b61238f9161443a565b612cab565b91509150816124575763ffffffff81161561243457825460ff60a01b1916600160a01b1783556123c26120e7565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016123f19392919061446a565b600060405180830381600087803b15801561240b57600080fd5b505af115801561241f573d6000803e3d6000fd5b5050845460ff60a01b19168555506124579050565b60405162d1953b60e31b81526001600160a01b03871660048201526024016107bb565b505050505050565b604051632601631360e21b81526001600160601b0380841660048301528216602482015260009073__$3bac17678db7ae928afa209f2f44deec9c$__906398058c4c90604401602060405180830381865af41580156124c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e69190613cce565b90505b92915050565b60008051602061456f8339815191528054600160401b810460ff1615906001600160401b03166000811580156125225750825b90506000826001600160401b0316600114801561253e5750303b155b90508115801561254c575080155b1561256a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561259457845460ff60401b1916600160401b1785555b600080878060200190518101906125ab9190614498565b92505091506125bb82828b611af8565b6125ca6028612db7565b612db7565b600580546001600160a01b0319166001600160a01b03929092169190911790556125f56125c560dc90565b600280546001600160a01b0319166001600160a01b03929092169190911790556126206125c5604690565b600480546001600160a01b0319166001600160a01b039290921691909117905561264b6125c5606490565b600380546001600160a01b0319166001600160a01b039290921691909117905561267a629f590960e41b610907565b50508315610d6057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610d57565b60006126c8613110565b60006126dc6001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa158015612722573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127469190613c6c565b92506127528385612ec4565b8092508193505050806001600160a01b031663e5f6cd276040518163ffffffff1660e01b8152600401602060405180830381865afa158015612798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127bc9190613e18565b6080830151604051629b7b3560e61b81526001600160a01b0391821660048201529116906326decd4090602401602060405180830381865afa158015612806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282a9190613cce565b1561285357604051637d71120960e11b81526001600160601b03841660048201526024016107bb565b9193909250565b60408051808201909152600080825260208201526040516357f80bbf60e01b81526001600160601b03831660048201526000906001600160a01b038516906357f80bbf906024016101c060405180830381865afa1580156128bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e391906140b8565b516040516357f80bbf60e01b81526001600160601b03821660048201529091506001600160a01b038516906357f80bbf906024016101c060405180830381865afa158015612935573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295991906140b8565b6101200151949350505050565b60405163f0ea17c360e01b81526001600160601b03841660048201526000906001600160a01b0386169063f0ea17c390602401600060405180830381865afa1580156129b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526129de919081019061433c565b606081015160808201516040516330b8415f60e01b81526001600160601b0386166004820152929350909173__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af4158015612a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a699190613cce565b15610d605760405163c661667d60e01b81526001600160a01b03868116600483015282811660248301526001600160601b038616604483015283169063c661667d90606401600060405180830381600087803b158015612ac857600080fd5b505af1158015612adc573d6000803e3d6000fd5b5050505050505050505050565b60008051602061454f83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b60405163274acb3560e01b81526001600160601b0380841660048301528216602482015260009073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb35906044015b602060405180830381865af4158015612bae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e69190613c6c565b612bda612318565b6103938161306a565b6040516368aebf7b60e01b81526001600160401b03600482015260009073__$1d92393fa9ccd763988368ce8a1cb90d26$__906368aebf7b90602401602060405180830381865af4158015612c3c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056a9190613dfb565b6040516363cf551160e11b81526001600160601b0380841660048301528216602482015260009073__$3bac17678db7ae928afa209f2f44deec9c$__9063c79eaa2290604401612b91565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b17905251612d1a91906144da565b600060405180830381855afa9150503d8060008114612d55576040519150601f19603f3d011682016040523d82523d6000602084013e612d5a565b606091505b50915091508115612dac576040815110612d8c5780806020019051810190612d8291906144f6565b9094509250612dac565b6020815110612dac5780806020019051810190612da99190613cce565b93505b505094509492505050565b6000612dcb6001546001600160a01b031690565b6001600160a01b031663d39e604383612de26104e5565b60405163c9e66e2960e01b815262ffffff909116600482015273__$8eede297b65ed5a56eb3f84d8232ae93f5$__9063c9e66e2990602401602060405180830381865af4158015612e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5b919061431f565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015612ea0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e99190613e18565b612ecc613110565b600080612ee16001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03871660048201529091506001600160a01b0382169063a48f42e090602401600060405180830381865afa158015612f31573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f599190810190613f95565b925060ff8416606414612fb757604083015160ff858116911614612fb257604080840151905163b83d92cb60e01b81526001600160601b038716600482015260ff808716602483015290911660448201526064016107bb565b613053565b612fd28360400151612fc7606e90565b60ff90811691161490565b80612fe85750612fe88360400151612fc7608c90565b80612ffe5750612ffe8360400151612fc7607890565b8061301457506130148360400151612fc7608290565b61305357604080840151905163b83d92cb60e01b81526001600160601b038716600482015260ff808716602483015290911660448201526064016107bb565b613060836020015161307b565b9150509250929050565b613072612318565b61039381612ae9565b600061308f6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa1580156130de573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131069190810190613f95565b6080015192915050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b60006020828403121561316057600080fd5b81356001600160e01b03198116811461317857600080fd5b9392505050565b60005b8381101561319a578181015183820152602001613182565b50506000910152565b600081518084526131bb81602086016020860161317f565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a083015161323860c08401826001600160a01b03169052565b5060c083015160e0808401526132526101008401826131a3565b949350505050565b6001600160a01b038116811461039357600080fd5b6001600160601b038116811461039357600080fd5b803561328f8161326f565b919050565b60ff8116811461039357600080fd5b801515811461039357600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156132e9576132e96132b1565b60405290565b60405161024081016001600160401b03811182821017156132e9576132e96132b1565b60405161022081016001600160401b03811182821017156132e9576132e96132b1565b60405160e081016001600160401b03811182821017156132e9576132e96132b1565b60405161016081016001600160401b03811182821017156132e9576132e96132b1565b60405161012081016001600160401b03811182821017156132e9576132e96132b1565b60405160c081016001600160401b03811182821017156132e9576132e96132b1565b604051601f8201601f191681016001600160401b03811182821017156133e7576133e76132b1565b604052919050565b60006001600160401b03821115613408576134086132b1565b50601f01601f191660200190565b600082601f83011261342757600080fd5b813561343a613435826133ef565b6133bf565b81815284602083860101111561344f57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c0878903121561348557600080fd5b86356134908161325a565b955060208701356134a08161326f565b945060408701356134b081613294565b935060608701356134c0816132a3565b925060808701356134d08161325a565b915060a08701356001600160401b038111156134eb57600080fd5b6134f789828a01613416565b9150509295509295509295565b60006020828403121561351657600080fd5b81356001600160401b0381111561352c57600080fd5b61325284828501613416565b600080600080600060a0868803121561355057600080fd5b853561355b8161325a565b9450602086013561356b8161326f565b9350604086013561357b8161326f565b9250606086013561358b8161326f565b9150608086013561359b8161326f565b809150509295509295909350565b600080604083850312156135bc57600080fd5b82356135c78161325a565b915060208301356001600160401b038111156135e257600080fd5b61306085828601613416565b60006020828403121561360057600080fd5b81356131788161326f565b60006020828403121561361d57600080fd5b81356131788161325a565b60008060006060848603121561363d57600080fd5b833592506020840135915060408401356136568161326f565b809150509250925092565b60006040828403121561367357600080fd5b61367b6132c7565b9050813581526020820135602082015292915050565b64ffffffffff8116811461039357600080fd5b803561328f81613691565b60008060008060008060c087890312156136c857600080fd5b86356136d38161325a565b95506136e28860208901613661565b945060608701356136f28161326f565b9350608087013561370281613691565b925060a08701356001600160401b038082111561371e57600080fd5b818901915089601f83011261373257600080fd5b81358181111561374157600080fd5b8a602082850101111561375357600080fd5b6020830194508093505050509295509295509295565b60008082840361026081121561377e57600080fd5b83356137898161326f565b9250610240601f19820181131561379f57600080fd5b6137a76132ef565b91506137b560208601613284565b82526137c360408601613284565b60208301526137d460608601613284565b60408301526080850135606083015260a0850135608083015260c085013560a083015260e085013560c08301526101008086013560e084015261012080870135828501526101409150818701358185015250610160808701358285015261018091508187013581850152506101a080870135828501526101c091508187013581850152506101e08087013582850152610200915081870135818501525061022080870135828501528287013581850152505050809150509250929050565b600080600060c084860312156138a757600080fd5b6138b18585613661565b92506138c08560408601613661565b91506138cf8560808601613661565b90509250925092565b6000806000606084860312156138ed57600080fd5b83356138f88161325a565b925060208401356139088161326f565b915060408401356136568161326f565b60008060006060848603121561392d57600080fd5b83356139388161325a565b925060208401356139488161325a565b915060408401356136568161325a565b6001600160401b038116811461039357600080fd5b60006020828403121561397f57600080fd5b813561317881613958565b80356001600160c01b03198116811461328f57600080fd5b803561ffff8116811461328f57600080fd5b600061022082840312156139c757600080fd5b6139cf613312565b90506139da82613284565b81526139e860208301613284565b60208201526139f96040830161398a565b6040820152613a0a6060830161398a565b6060820152613a1b60808301613284565b6080820152613a2c60a08301613284565b60a0820152613a3d60c08301613284565b60c0820152613a4e60e083016136a4565b60e0820152610100808301356001600160401b0380821115613a6f57600080fd5b613a7b86838701613416565b83850152610120925082850135915080821115613a9757600080fd5b50613aa485828601613416565b828401525050610140613ab88184016139a2565b90820152610160613aca8382016139a2565b90820152610180613adc838201613284565b908201526101a0613aee838201613284565b908201526101c0613b008382016136a4565b908201526101e0613b128382016136a4565b90820152610200613b248382016136a4565b9082015292915050565b600080600060608486031215613b4357600080fd5b8335613b4e8161325a565b92506020840135613b5e8161326f565b915060408401356001600160401b03811115613b7957600080fd5b613b85868287016139b4565b9150509250925092565b60008060408385031215613ba257600080fd5b8235613bad8161325a565b91506020830135613bbd8161325a565b809150509250929050565b60008060008060808587031215613bde57600080fd5b8435613be98161325a565b93506020850135613bf98161326f565b925060408501356001600160401b03811115613c1457600080fd5b613c20878288016139b4565b9250506060850135613c318161326f565b939692955090935050565b600060208284031215613c4e57600080fd5b815162ffffff8116811461317857600080fd5b805161328f8161326f565b600060208284031215613c7e57600080fd5b81516131788161326f565b600181811c90821680613c9d57607f821691505b602082108103613cbd57634e487b7160e01b600052602260045260246000fd5b50919050565b805161328f816132a3565b600060208284031215613ce057600080fd5b8151613178816132a3565b601f821115611d2c57600081815260208120601f850160051c81016020861015613d125750805b601f850160051c820191505b8181101561245757828155600101613d1e565b81516001600160401b03811115613d4a57613d4a6132b1565b613d5e81613d588454613c89565b84613ceb565b602080601f831160018114613d935760008415613d7b5750858301515b600019600386901b1c1916600185901b178555612457565b600085815260208120601f198616915b82811015613dc257888601518255948401946001909101908401613da3565b5085821015613de05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b805161328f81613958565b600060208284031215613e0d57600080fd5b815161317881613958565b600060208284031215613e2a57600080fd5b81516131788161325a565b6001600160a01b039490941684526001600160601b039283166020850152908216604084015216606082015260800190565b60008060408385031215613e7a57600080fd5b8251613e858161326f565b6020840151909250613bbd8161326f565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0389811682526001600160601b038981166020840152888216604084015260009161010091613f02606086018b80518252602090810151910152565b881660a08501525064ffffffffff861660c084015260e08301819052613f2b8184018587613e96565b9b9a5050505050505050505050565b805161328f81613294565b805161328f8161325a565b600082601f830112613f6157600080fd5b8151613f6f613435826133ef565b818152846020838601011115613f8457600080fd5b61325282602083016020870161317f565b600060208284031215613fa757600080fd5b81516001600160401b0380821115613fbe57600080fd5b9083019060e08286031215613fd257600080fd5b613fda613335565b613fe383613c61565b8152613ff160208401613c61565b602082015261400260408401613f3a565b604082015261401360608401613cc3565b606082015261402460808401613f45565b608082015261403560a08401613f45565b60a082015260c08301518281111561404c57600080fd5b61405887828601613f50565b60c08301525095945050505050565b808201808211156124e957634e487b7160e01b600052601160045260246000fd5b60006040828403121561409a57600080fd5b6140a26132c7565b9050815181526020820151602082015292915050565b60006101c082840312156140cb57600080fd5b6140d3613357565b6140dc83613c61565b81526140ea60208401613df0565b60208201526140fb60408401613c61565b604082015261410c60608401613cc3565b606082015261411d60808401613cc3565b608082015261412e60a08401613cc3565b60a082015260c083015160c082015260e083015160e082015261010061415685828601614088565b9082015261014061416985858301614088565b61012083015261417d856101808601614088565b908201529392505050565b6001600160601b0384811682528351166020820152610200810160208401516001600160401b03811660408401525060408401516001600160601b0381166060840152506060840151801515608084015250608084015180151560a08401525060a084015180151560c08401525060c084015160e083015260e084015161010081818501528086015191505061012061422d8185018380518252602090810151910152565b850151805161016085015260209081015161018085015261014086015180516101a086015201516101c08401525060ff83166101e0830152613252565b6000610200828403121561427d57600080fd5b61428561337a565b61428e83613c61565b815261429c60208401613c61565b60208201526142ae8460408501614088565b60408201526142c08460808501614088565b60608201526142d28460c08501614088565b60808201526101006142e685828601614088565b60a08301526142f9856101408601614088565b60c083015261430c856101808601614088565b60e083015261417d856101c08601614088565b60006020828403121561433157600080fd5b815161317881613294565b60006020828403121561434e57600080fd5b81516001600160401b038082111561436557600080fd5b9083019060c0828603121561437957600080fd5b61438161339d565b82518281111561439057600080fd5b61439c87828601613f50565b8252506143ab60208401613c61565b60208201526143bc60408401613f45565b60408201526143cd60608401613f45565b60608201526143de60808401613f45565b608082015260a0830151828111156143f557600080fd5b61440187828601613f50565b60a08301525095945050505050565b6000808585111561442057600080fd5b8386111561442d57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156144625780818660040360031b1b83161692505b505092915050565b6001600160a01b038416815260406020820181905260009061448f9083018486613e96565b95945050505050565b6000806000606084860312156144ad57600080fd5b83516144b88161325a565b60208501519093506144c98161325a565b60408501519092506136568161325a565b600082516144ec81846020870161317f565b9190910192915050565b6000806040838503121561450957600080fd5b8251614514816132a3565b602084015190925063ffffffff81168114613bbd57600080fdfe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220bb10949c107ff716cae1511a7cab796a18ab3ce243cf6613f7d3bf976aa988f364736f6c63430008140033",
1275
+ "bytecode": "0x6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b61511e806100d65f395ff3fe608060405234801561000f575f80fd5b50600436106101d1575f3560e01c80637225ed01116100fe578063a3c260521161009e578063bf7e214f1161006e578063bf7e214f14610479578063ca510bf614610216578063d0d63b0914610481578063fb3bcd1f14610494575f80fd5b8063a3c2605214610430578063ada9652e14610443578063b68d180914610457578063bca99e3914610466575f80fd5b806384d1f7cf116100d957806384d1f7cf146103e1578063893d20e8146103f45780638fb36037146103fc57806396fa19e81461041d575f80fd5b80637225ed01146103855780637a9e5e4b146103bb57806384a710fa146103ce575f80fd5b8063329d6e7411610174578063644c45e011610144578063644c45e0146103225780636c1e9dff1461033f5780636c741e781461035257806371504a3214610372575f80fd5b8063329d6e74146102c457806332f9f3df146102d757806349bb9e4b146102ea5780635ab1bd53146102fd575f80fd5b80630fec111c116101af5780630fec111c14610247578063138461e01461025c5780631eff4b221461027c57806326889b09146102b1575f80fd5b806301ffc9a7146101d557806306625783146102165780630d8e6e2c1461022b575b5f80fd5b6102016101e3366004613dba565b6001600160e01b0319165f9081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b610229610224366004613e05565b6104a7565b005b6102336104b7565b60405162ffffff909116815260200161020d565b61024f61053e565b60405161020d9190613e6a565b6102646106ca565b6040516001600160601b03909116815260200161020d565b6102a37f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b60405190815260200161020d565b6102646102bf366004613e05565b6106d4565b6102296102d236600461408f565b610bfc565b6102296102e5366004614286565b610d46565b6102296102f83660046142f6565b610f3f565b6001546001600160a01b03165b6040516001600160a01b03909116815260200161020d565b5f80516020615089833981519152546001600160601b0316610264565b61026461034d366004613e05565b61103b565b61035a6115e4565b6040516001600160401b03909116815260200161020d565b610264610380366004614342565b6116db565b61039b610393366004614400565b928392509050565b604080516001600160601b0393841681529290911660208301520161020d565b6102296103c9366004614436565b61189e565b61039b6103dc366004614451565b611920565b61039b6103ef36600461448e565b611a1c565b61030a611c10565b610404611d41565b6040516001600160e01b0319909116815260200161020d565b61022961042b36600461450c565b611d76565b61022961043e3660046145a4565b611db8565b6102a35f8051602061508983398151915281565b604051600f815260200161020d565b6102296104743660046145bf565b61202f565b61030a612239565b61022961048f3660046145bf565b612254565b6102296104a23660046145da565b612732565b6104b3335b5f36612a3e565b5050565b604051632efe011360e01b8152600360048201525f60248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af4158015610515573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105399190614764565b905090565b610546613d7d565b5f7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156105bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105e09190614791565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a001610628611c10565b6001600160a01b03168152602001826001018054610645906147ac565b80601f0160208091040260200160405190810160405280929190818152602001828054610671906147ac565b80156106bc5780601f10610693576101008083540402835291602001916106bc565b820191905f5260205f20905b81548152906001019060200180831161069f57829003601f168201915b505050505081525091505090565b5f61053930612b34565b5f80806106e1600f612d2d565b92505091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610723573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074791906147e4565b90505f826001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610786573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107aa91906147e4565b604051634793b4ab60e01b81526001600160601b03891660048201529091505f906001600160a01b03841690634793b4ab906024015f60405180830381865afa1580156107f9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108209190810190614888565b905061082f815f015186612dc9565b1561086557604051630a49ea2360e01b81526001600160601b03808a166004830152861660248201526044015b60405180910390fd5b600254604051631696791160e11b81526001600160a01b0386811660048301526001600160601b03808c1660248401528a1660448301525f921690632d2cf222906064016020604051808303815f875af11580156108c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e99190614791565b905060035f9054906101000a90046001600160a01b03166001600160a01b03166389fad8a284888473__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610958573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097c9190614791565b6040518563ffffffff1660e01b815260040161099b949392919061494c565b5f604051808303815f87803b1580156109b2575f80fd5b505af11580156109c4573d5f803e3d5ffd5b505060405163f0ea17c360e01b81526001600160601b03891660048201525f92506001600160a01b038716915063f0ea17c3906024015f60405180830381865afa158015610a14573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a3b9190810190614989565b60808101519091505f610a566001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038e1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015610aa3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac791906147e4565b90507fa9e4ee5628423184bfcde002aae428406aeac6b337e1acf560282b155e358527886001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b26573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4a9190614791565b8a8e87604051610b8394939291906001600160601b03948516815292841660208401529083166040830152909116606082015260800190565b60405180910390a182606001516001600160a01b03166354f0d84c8383876040518463ffffffff1660e01b8152600401610bbf93929190614a61565b5f604051808303815f87803b158015610bd6575f80fd5b505af1158015610be8573d5f803e3d5ffd5b50959e9d5050505050505050505050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c610c1e6104b7565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610c5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c809190614a8d565b5f805160206150c98339815191528054600160401b900460ff1680610cb2575080546001600160401b03808416911610155b15610cd05760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610cfa83612e55565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b610d4f336104ac565b5f610d638260800151836101600151612e5d565b600254602084015160405163ad328d9f60e01b81529293506001600160a01b039091169163ad328d9f91610d9f9189918891879060040161494c565b5f604051808303815f87803b158015610db6575f80fd5b505af1158015610dc8573d5f803e3d5ffd5b50506002546040516301d90a6f60e61b81526001600160a01b0389811660048301526001600160601b038816602483015290911692506376429bc091506044015b5f604051808303815f87803b158015610e20575f80fd5b505af1158015610e32573d5f803e3d5ffd5b5050505060065f9054906101000a90046001600160a01b03166001600160a01b031663d44f8a4b866001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb99190614791565b6040516001600160e01b031960e084901b1681526001600160601b0391821660048201526001600160a01b038816602482015290841660448201526064016020604051808303815f875af1158015610f13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f379190614791565b505050505050565b5f805160206150c98339815191528054600160401b810460ff1615906001600160401b03165f81158015610f705750825b90505f826001600160401b03166001148015610f8b5750303b155b905081158015610f99575080155b15610fb75760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610fe157845460ff60401b1916600160401b1785555b610feb8787612ee2565b831561103257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b5f8080611048600f612d2d565b92505091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561108a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ae91906147e4565b604051634793b4ab60e01b81526001600160601b03881660048201529091505f906001600160a01b03831690634793b4ab906024015f60405180830381865afa1580156110fd573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526111249190810190614888565b6040516357f80bbf60e01b81526001600160601b03861660048201529091505f906001600160a01b038416906357f80bbf9060240160e060405180830381865afa158015611174573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111989190614ab7565b90506111a7825f015186612dc9565b156111d857604051630a49ea2360e01b81526001600160601b03808a1660048301528616602482015260440161085c565b6040516308a390bb60e21b81526001600160601b03861660048201525f906001600160a01b0385169063228e42ec90602401602060405180830381865afa158015611225573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112499190614791565b905061125f611258828a613125565b835161316f565b156112a357815160405163b806175d60e01b81526001600160601b03808916600483015291821660248201528183166044820152908916606482015260840161085c565b505f73__$58e11c6004c5796aaa8c56e718245e69a2$__639ed246ea6112c986896131b9565b6040516001600160e01b031960e084901b1681528151600482015260209091015160248201526001600160601b038b1660448201526064016040805180830381865af415801561131b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061133f9190614b41565b809850819250505060035f9054906101000a90046001600160a01b03166001600160a01b031663d56cd3d5866001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ca91906147e4565b888a856040518563ffffffff1660e01b81526004016113ec949392919061494c565b5f604051808303815f87803b158015611403575f80fd5b505af1158015611415573d5f803e3d5ffd5b50506002546040516325fa796b60e01b81526001600160a01b0389811660048301526001600160601b03808f1660248401528c16604483015290911692506325fa796b91506064015f604051808303815f87803b158015611474575f80fd5b505af1158015611486573d5f803e3d5ffd5b505050505f61149d6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038c1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156114ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061150e91906147e4565b90507fa397b0d38fe748a8c29cce53eab5736ef0c29c156e7a9586ae8b88a8557b4145866001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561156d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115919190614791565b604080516001600160601b0392831681528a831660208201528d8316818301528c83166060820152918b166080830152519081900360a00190a16115d78588838c6132c2565b5050505050505092915050565b5f73__$1d92393fa9ccd763988368ce8a1cb90d26$__63dda777d3600f604051632392b61b60e21b81526003600482015273__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af415801561164f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116739190614b87565b6040516001600160e01b031960e085901b16815260ff9283166004820152911660248201526044015b602060405180830381865af41580156116b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105399190614a8d565b5f80806116e8600f612d2d565b925050915060025f9054906101000a90046001600160a01b03166001600160a01b031663e283b4a982848b8b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801561175b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061177f9190614791565b8c8c8c6040518963ffffffff1660e01b81526004016117a5989796959493929190614bca565b6020604051808303815f875af11580156117c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117e59190614791565b92507f0dcadf661b8b2888423f78a848a77785b4dc0138395b12584835f6a65dfcea79816001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611844573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118689190614791565b604080516001600160601b03928316815282861660208201529186169082015260600160405180910390a1505095945050505050565b336118a7612239565b6001600160a01b0316816001600160a01b0316146118e25760405162d1953b60e31b81526001600160a01b038216600482015260240161085c565b816001600160a01b03163b5f03611917576040516361798f2f60e11b81526001600160a01b038316600482015260240161085c565b6104b382613373565b6040516302d764c760e21b81526001600160601b03831660048201525f90819081906001600160a01b03871690630b5d931c9060240161020060405180830381865afa158015611972573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119969190614c46565b602001516040516357f80bbf60e01b81526001600160601b03821660048201529091505f906001600160a01b038816906357f80bbf9060240160e060405180830381865afa1580156119ea573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a0e9190614ab7565b509396879650945050505050565b5f80611a27336104ac565b611a91886001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a66573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a8a91906147e4565b8785611920565b600254604051634adcf90960e01b81529294509092506001600160a01b031690634adcf90990611acb908b9089908990889060040161494c565b5f604051808303815f87803b158015611ae2575f80fd5b505af1158015611af4573d5f803e3d5ffd5b5050505060065f9054906101000a90046001600160a01b03166001600160a01b031663ea48ce9b896001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b57573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7b9190614791565b6040516001600160e01b031960e084901b1681526001600160601b0391821660048201526001600160a01b038b16602482015290841660448201526064016020604051808303815f875af1158015611bd5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bf99190614791565b50611c04818361316f565b50965096945050505050565b5f805f8051602061508983398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015611c7c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ca09190614d07565b15611d2b576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611d01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d2591906147e4565b91505090565b54600160601b90046001600160a01b0316919050565b5f805160206150a983398151915280545f9190600160a01b900460ff16611d68575f611d25565b638fb3603760e01b91505090565b611d7f336104ac565b600254602083015160405163ad328d9f60e01b81526001600160a01b039092169163ad328d9f91610e099189918891879060040161494c565b5f80611dc4600f612d2d565b92505091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e2a91906147e4565b60405163f0ea17c360e01b81526001600160601b03851660048201529091505f906001600160a01b0383169063f0ea17c3906024015f60405180830381865afa158015611e79573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611ea09190810190614989565b90505f8160a00151806020019051810190611ebb9190614ab7565b9050611edf8160200151611ecd6133d3565b6001600160401b039081169116141590565b15611f085760405163eff765ff60e01b81526001600160601b038616600482015260240161085c565b6001600160401b03861660208083019190915260408051631a99b41b60e31b815290516001600160a01b0387169263d4cda0d892600480820193918290030181865afa158015611f5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f7e91906147e4565b6001600160a01b0316637e3d91e8868360ff6040518463ffffffff1660e01b8152600401611fae93929190614d20565b5f604051808303815f87803b158015611fc5575f80fd5b505af1158015611fd7573d5f803e3d5ffd5b5050604080516001600160601b03891681526001600160401b038a1660208201527fe7e6a7a42cbdb2d274dfaaac06073a09d6095ca3745ce71fe5a137f8247ea23e93500190505b60405180910390a1505050505050565b5f8061203b600f612d2d565b92505091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561207d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120a191906147e4565b6040516357f80bbf60e01b81526001600160601b03851660048201529091505f906001600160a01b038316906357f80bbf9060240160e060405180830381865afa1580156120f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121159190614ab7565b80516001600160601b038716825260408051631a99b41b60e31b8152905192935090916001600160a01b0386169163d4cda0d89160048083019260209291908290030181865afa15801561216b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061218f91906147e4565b6001600160a01b0316637e3d91e8868460ff6040518463ffffffff1660e01b81526004016121bf93929190614d20565b5f604051808303815f87803b1580156121d6575f80fd5b505af11580156121e8573d5f803e3d5ffd5b5050604080516001600160601b03808a16825280861660208301528a16918101919091527f59c52d680289bf3ed1eaf8c98c2385d021cbc74043dd1ed596d6383f63235ffc9250606001905061201f565b5f805160206150a9833981519152546001600160a01b031690565b5f80612260600f612d2d565b600254604051632aa6b2cb60e21b81526001600160a01b0380841660048301526001600160601b03891660248301529496509194505f93849350169063aa9acb2c9060440160408051808303815f875af11580156122c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122e49190614b41565b9150915060035f9054906101000a90046001600160a01b03166001600160a01b03166389fad8a2846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612347573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061236b91906147e4565b866123768686613125565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156123bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123e19190614791565b6040518563ffffffff1660e01b8152600401612400949392919061494c565b5f604051808303815f87803b158015612417575f80fd5b505af1158015612429573d5f803e3d5ffd5b505050507f64c75a4392ba38fee1b5a44b61e3dd0cae424d2d43eb2b0c99772efe31e1c042836001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561248a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124ae9190614791565b604080516001600160601b03928316815282881660208201529188169082015260600160405180910390a16124e38282613125565b6040516330b8415f60e01b81526001600160601b03909116600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af415801561253a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061255e9190614d07565b1561272b575f836001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125c491906147e4565b60405163f0ea17c360e01b81526001600160601b03871660048201526001600160a01b03919091169063f0ea17c3906024015f60405180830381865afa158015612610573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526126379190810190614989565b905080606001516001600160a01b03166354f0d84c82608001516126636001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038b1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156126b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126d491906147e4565b6126de8787613125565b6040518463ffffffff1660e01b81526004016126fc93929190614a61565b5f604051808303815f87803b158015612713575f80fd5b505af1158015612725573d5f803e3d5ffd5b50505050505b5050505050565b61273b336104ac565b5f61274e6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03851660048201529091505f906001600160a01b0383169063a48f42e0906024015f60405180830381865afa15801561279d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526127c49190810190614da7565b60208101516040516305247a1760e51b81526001600160601b0390911660048201529091505f906001600160a01b0384169063a48f42e0906024015f60405180830381865afa158015612819573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526128409190810190614da7565b60208101516040516305247a1760e51b81526001600160601b0390911660048201529091505f906001600160a01b0385169063a48f42e0906024015f60405180830381865afa158015612895573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526128bc9190810190614da7565b90505f816080015190505f6128da8760e00151886101600151613125565b90505f6128f1886101000151896101800151613125565b90505f886060015190505f846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612938573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061295c91906147e4565b60035488519192506001600160a01b03169063d56cd3d59083906129808688613125565b886040518563ffffffff1660e01b81526004016129a0949392919061494c565b5f604051808303815f87803b1580156129b7575f80fd5b505af11580156129c9573d5f803e3d5ffd5b50506003548a516040516325e451d360e01b81526001600160a01b0390921693506325e451d39250612a04918591908790899060040161494c565b5f604051808303815f87803b158015612a1b575f80fd5b505af1158015612a2d573d5f803e3d5ffd5b505050505050505050505050505050565b5f805160206150a98339815191525f80612a76612a59612239565b8730612a6860045f8a8c614e77565b612a7191614e9e565b613413565b9150915081610f375763ffffffff811615612b1157825460ff60a01b1916600160a01b178355612aa4612239565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b8152600401612ad393929190614ed6565b5f604051808303815f87803b158015612aea575f80fd5b505af1158015612afc573d5f803e3d5ffd5b5050845460ff60a01b1916855550610f379050565b60405162d1953b60e31b81526001600160a01b038716600482015260240161085c565b5f805f8051602061508983398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015612ba0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bc49190614d07565b15612bf05780546040516301ab8b6760e21b81526001600160601b03909116600482015260240161085c565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa158015612c42573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c669190614d07565b612c8e5760405163b9304b0d60e01b81526001600160a01b038416600482015260240161085c565b6001546001600160a01b0316604051632f2a35f760e11b81526001600160a01b0385811660048301529190911690635e546bee90602401602060405180830381865afa158015612ce0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d049190614791565b81546bffffffffffffffffffffffff19166001600160601b039190911690811790915592915050565b5f612d36613d7d565b5f612d496001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015612d8d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612db19190614791565b9250612dbf8385600161351b565b9395909450915050565b6040516399009c5160e01b81526001600160601b038084166004830152821660248201525f9073__$94a2c899be079b00d952d0d84fffaa5c34$__906399009c51906044015b602060405180830381865af4158015612e2a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e4e9190614d07565b9392505050565b6101d16137b8565b6040516363cf551160e11b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063c79eaa22906044015b602060405180830381865af4158015612ebe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e4e9190614791565b5f805160206150c98339815191528054600160401b810460ff1615906001600160401b03165f81158015612f135750825b90505f826001600160401b03166001148015612f2e5750303b155b905081158015612f3c575080155b15612f5a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315612f8457845460ff60401b1916600160401b1785555b5f8087806020019051810190612f9a9190614f03565b9250509150612faa82828b6137f0565b612fb4600261392d565b600580546001600160a01b0319166001600160a01b0392909216919091179055612fde601f61392d565b600280546001600160a01b0319166001600160a01b0392909216919091179055613008600a61392d565b600480546001600160a01b0319166001600160a01b0392909216919091179055613032600b61392d565b600380546001600160a01b0319166001600160a01b03928316179055600154166001600160a01b0316630e9ed68b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561308d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130b191906147e4565b600680546001600160a01b0319166001600160a01b03929092169190911790556130e1631523f8cf60e01b613a34565b5050831561103257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001611029565b60405163274acb3560e01b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb3590604401612ea3565b604051632601631360e21b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__906398058c4c90604401612e0f565b604080518082019091525f808252602082015260405163f0ea17c360e01b81526001600160601b03831660048201525f906001600160a01b0385169063f0ea17c3906024015f60405180830381865afa158015613218573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261323f9190810190614989565b602001516040516302d764c760e21b81526001600160601b03821660048201529091506001600160a01b03851690630b5d931c9060240161020060405180830381865afa158015613292573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132b69190614c46565b60e00151949350505050565b60405163f0ea17c360e01b81526001600160601b03841660048201525f906001600160a01b0386169063f0ea17c3906024015f60405180830381865afa15801561330e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526133359190810190614989565b90505f8160800151905081606001516001600160a01b031663c7d63d578583866040518463ffffffff1660e01b81526004016126fc93929190614a61565b5f805160206150a983398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b604051637c3940bf60e01b81526001600160401b0360048201525f9073__$1d92393fa9ccd763988368ce8a1cb90d26$__90637c3940bf9060240161169c565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516134819190614f42565b5f60405180830381855afa9150503d805f81146134b9576040519150601f19603f3d011682016040523d82523d5f602084013e6134be565b606091505b509150915081156135105760408151106134f057808060200190518101906134e69190614f58565b9094509250613510565b6020815110613510578080602001905181019061350d9190614d07565b93505b505094509492505050565b613523613d7d565b5f806135376001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03881660048201529091506001600160a01b0382169063a48f42e0906024015f60405180830381865afa158015613584573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526135ab9190810190614da7565b925060ff8516600b1461360957604083015160ff86811691161461360457604080840151905163b83d92cb60e01b81526001600160601b038816600482015260ff8088166024830152909116604482015260640161085c565b6136a5565b6136248360400151613619600c90565b60ff90811691161490565b8061363a575061363a8360400151613619600f90565b8061365057506136508360400151613619600e90565b8061366657506136668360400151613619600d90565b6136a557604080840151905163b83d92cb60e01b81526001600160601b038816600482015260ff8088166024830152909116604482015260640161085c565b6136b28360200151613a60565b915083156137af57816001600160a01b031663311adb686040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136f6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061371a91906147e4565b6080840151604051629b7b3560e61b81526001600160a01b0391821660048201529116906326decd4090602401602060405180830381865afa158015613762573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137869190614d07565b156137af57604051637d71120960e11b81526001600160601b038716600482015260240161085c565b50935093915050565b5f805160206150c983398151915254600160401b900460ff166137ee57604051631afcd79f60e31b815260040160405180910390fd5b565b6137f86137b8565b61387483846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015613838573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061385c9190614791565b60085f8560405180602001604052805f815250613af0565b6001600160a01b038216156138915761388c82613b95565b613908565b5f61389c600261392d565b9050613906816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138dd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061390191906147e4565b613b95565b505b613918634a531f3360e01b613a34565b61392863daf9067160e01b613a34565b505050565b5f6139406001546001600160a01b031690565b604051632392b61b60e21b8152600360048201526001600160a01b03919091169063d39e604390849073__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af41580156139a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139c79190614b87565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015613a0a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a2e91906147e4565b92915050565b613a3c6137b8565b6001600160e01b0319165f908152602081905260409020805460ff19166001179055565b5f613a736001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa158015613abf573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613ae69190810190614da7565b6080015192915050565b613af86137b8565b613b028287613ba9565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa301613b8b8382614fce565b5050505050505050565b613b9d6137b8565b613ba681613c1f565b50565b613bb16137b8565b613bba81613c30565b613bc2613d38565b6001600160a01b038216613be95760405163f17ef42d60e01b815260040160405180910390fd5b505f8051602061508983398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b613c276137b8565b613ba681613373565b613c386137b8565b806001600160a01b03163b5f03613c6d5760405163fdeac91f60e01b81526001600160a01b038216600482015260240161085c565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152632f6da6f960e01b60048201526301ffc9a790602401602060405180830381865afa925050508015613ce7575060408051601f3d908101601f19168201909252613ce491810190614d07565b60015b613d0f5760405163fdeac91f60e01b81526001600160a01b038216600482015260240161085c565b806104b35760405163fdeac91f60e01b81526001600160a01b038316600482015260240161085c565b613d406137b8565b6301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b5f60208284031215613dca575f80fd5b81356001600160e01b031981168114612e4e575f80fd5b6001600160601b0381168114613ba6575f80fd5b8035613e0081613de1565b919050565b5f8060408385031215613e16575f80fd5b8235613e2181613de1565b91506020830135613e3181613de1565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081526001600160601b0382511660208201526001600160601b03602083015116604082015260ff60408301511660608201525f6060830151613eb2608084018215159052565b5060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e080840152613ef6610100840182613e3c565b949350505050565b634e487b7160e01b5f52604160045260245ffd5b60405161020081016001600160401b0381118282101715613f3557613f35613efe565b60405290565b604080519081016001600160401b0381118282101715613f3557613f35613efe565b60405161024081016001600160401b0381118282101715613f3557613f35613efe565b60405160c081016001600160401b0381118282101715613f3557613f35613efe565b60405160e081016001600160401b0381118282101715613f3557613f35613efe565b60405161012081016001600160401b0381118282101715613f3557613f35613efe565b604051601f8201601f191681016001600160401b038111828210171561400f5761400f613efe565b604052919050565b5f6001600160401b0382111561402f5761402f613efe565b50601f01601f191660200190565b5f82601f83011261404c575f80fd5b813561405f61405a82614017565b613fe7565b818152846020838601011115614073575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561409f575f80fd5b81356001600160401b038111156140b4575f80fd5b613ef68482850161403d565b6001600160a01b0381168114613ba6575f80fd5b80356001600160c01b031981168114613e00575f80fd5b64ffffffffff81168114613ba6575f80fd5b8035613e00816140eb565b803561ffff81168114613e00575f80fd5b5f610200828403121561412a575f80fd5b614132613f12565b905061413d82613df5565b815261414b60208301613df5565b602082015261415c604083016140d4565b604082015261416d606083016140d4565b606082015261417e60808301613df5565b608082015261418f60a08301613df5565b60a08201526141a060c083016140fd565b60c082015260e08201356001600160401b038111156141bd575f80fd5b6141c98482850161403d565b60e0830152506101008201356001600160401b038111156141e8575f80fd5b6141f48482850161403d565b610100830152506142086101208301614108565b61012082015261421b6101408301614108565b61014082015261422e6101608301613df5565b6101608201526142416101808301613df5565b6101808201526142546101a083016140fd565b6101a08201526142676101c083016140fd565b6101c082015261427a6101e083016140fd565b6101e082015292915050565b5f805f8060808587031215614299575f80fd5b84356142a4816140c0565b935060208501356142b4816140c0565b925060408501356142c481613de1565b915060608501356001600160401b038111156142de575f80fd5b6142ea87828801614119565b91505092959194509250565b5f8060408385031215614307575f80fd5b8235614312816140c0565b915060208301356001600160401b0381111561432c575f80fd5b6143388582860161403d565b9150509250929050565b5f805f805f85870360a0811215614357575f80fd5b8635614362816140c0565b95506040601f1982011215614375575f80fd5b5061437e613f3b565b60208781013582526040880135908201529350606086013561439f816140eb565b925060808601356001600160401b038111156143b9575f80fd5b8601601f810188136143c9575f80fd5b80356001600160401b038111156143de575f80fd5b8860208284010111156143ef575f80fd5b959894975092955050506020019190565b5f805f60608486031215614412575f80fd5b8335925060208401359150604084013561442b81613de1565b809150509250925092565b5f60208284031215614446575f80fd5b8135612e4e816140c0565b5f805f60608486031215614463575f80fd5b833561446e816140c0565b9250602084013561447e81613de1565b9150604084013561442b81613de1565b5f805f805f8060c087890312156144a3575f80fd5b86356144ae816140c0565b955060208701356144be816140c0565b945060408701356144ce81613de1565b935060608701356144de81613de1565b925060808701356144ee81613de1565b915060a08701356144fe81613de1565b809150509295509295509295565b5f805f805f60a08688031215614520575f80fd5b853561452b816140c0565b9450602086013561453b816140c0565b9350604086013561454b81613de1565b925060608601356001600160401b03811115614565575f80fd5b61457188828901614119565b925050608086013561458281613de1565b809150509295509295909350565b6001600160401b0381168114613ba6575f80fd5b5f602082840312156145b4575f80fd5b8135612e4e81614590565b5f602082840312156145cf575f80fd5b8135612e4e81613de1565b5f808284036102608112156145ed575f80fd5b83356145f881613de1565b9250610240601f198201121561460c575f80fd5b50614615613f5d565b61462160208501613df5565b815261462f60408501613df5565b602082015261464060608501613df5565b604082015261465160808501613df5565b606082015261466260a08501613df5565b608082015261467360c08501613df5565b60a082015261468460e08501613df5565b60c08201526146966101008501613df5565b60e08201526146a86101208501613df5565b6101008201526146bb6101408501613df5565b6101208201526146ce6101608501613df5565b6101408201526146e16101808501613df5565b6101608201526146f46101a08501613df5565b6101808201526147076101c08501613df5565b6101a082015261471a6101e08501613df5565b6101c082015261472d6102008501613df5565b6101e08201526147406102208501613df5565b6102008201526147536102408501613df5565b610220820152809150509250929050565b5f60208284031215614774575f80fd5b815162ffffff81168114612e4e575f80fd5b8051613e0081613de1565b5f602082840312156147a1575f80fd5b8151612e4e81613de1565b600181811c908216806147c057607f821691505b6020821081036147de57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f602082840312156147f4575f80fd5b8151612e4e816140c0565b5f6040828403121561480f575f80fd5b614817613f3b565b825181526020928301519281019290925250919050565b5f82601f83011261483d575f80fd5b8151602083015f61485061405a84614017565b9050828152858383011115614863575f80fd5b8282602083015e5f92810160200192909252509392505050565b8051613e00816140eb565b5f60208284031215614898575f80fd5b81516001600160401b038111156148ad575f80fd5b820160e081850312156148be575f80fd5b6148c6613f80565b81516148d181613de1565b81526148e085602084016147ff565b602082015260608201516001600160401b038111156148fd575f80fd5b6149098682850161482e565b604083015250608082015161491d816140eb565b606082015261492e60a0830161487d565b608082015261493f60c0830161487d565b60a0820152949350505050565b6001600160a01b039490941684526001600160601b039283166020850152908216604084015216606082015260800190565b8051613e00816140c0565b5f60208284031215614999575f80fd5b81516001600160401b038111156149ae575f80fd5b820160c081850312156149bf575f80fd5b6149c7613f80565b81516001600160401b038111156149dc575f80fd5b6149e88682850161482e565b8252506149f760208301614786565b6020820152614a086040830161497e565b6040820152614a196060830161497e565b6060820152614a2a6080830161497e565b608082015260a08201516001600160401b03811115614a47575f80fd5b614a538682850161482e565b60a083015250949350505050565b6001600160a01b0393841681529190921660208201526001600160601b03909116604082015260600190565b5f60208284031215614a9d575f80fd5b8151612e4e81614590565b80518015158114613e00575f80fd5b5f60e0828403128015614ac8575f80fd5b50614ad1613fa2565b8251614adc81613de1565b81526020830151614aec81614590565b6020820152614afd60408401614aa8565b6040820152614b0e60608401614aa8565b6060820152614b1f60808401614aa8565b608082015260a0838101519082015260c0928301519281019290925250919050565b5f8060408385031215614b52575f80fd5b8251614b5d81613de1565b6020840151909250613e3181613de1565b60ff81168114613ba6575f80fd5b8051613e0081614b6e565b5f60208284031215614b97575f80fd5b8151612e4e81614b6e565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b0389811682526001600160601b038916602083015287166040820152614c04606082018780518252602090810151910152565b6001600160601b03851660a082015264ffffffffff841660c082015261010060e08201525f614c3861010083018486614ba2565b9a9950505050505050505050565b5f610200828403128015614c58575f80fd5b50614c61613fc4565b614c6a83614786565b8152614c7860208401614786565b6020820152614c8a84604085016147ff565b6040820152614c9c84608085016147ff565b6060820152614cae8460c085016147ff565b6080820152614cc18461010085016147ff565b60a0820152614cd48461014085016147ff565b60c0820152614ce78461018085016147ff565b60e0820152614cfa846101c085016147ff565b6101008201529392505050565b5f60208284031215614d17575f80fd5b612e4e82614aa8565b5f610120820190506001600160601b03851682526001600160601b0384511660208301526001600160401b0360208501511660408301526040840151151560608301526060840151151560808301526080840151614d8260a084018215159052565b5060a084015160c083015260c084015160e0830152613ef661010083018460ff169052565b5f60208284031215614db7575f80fd5b81516001600160401b03811115614dcc575f80fd5b820160e08185031215614ddd575f80fd5b614de5613fa2565b614dee82614786565b8152614dfc60208301614786565b6020820152614e0d60408301614b7c565b6040820152614e1e60608301614aa8565b6060820152614e2f6080830161497e565b6080820152614e4060a0830161497e565b60a082015260c08201516001600160401b03811115614e5d575f80fd5b614e698682850161482e565b60c083015250949350505050565b5f8085851115614e85575f80fd5b83861115614e91575f80fd5b5050820193919092039150565b80356001600160e01b03198116906004841015614ecf576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190525f90614efa9083018486614ba2565b95945050505050565b5f805f60608486031215614f15575f80fd5b8351614f20816140c0565b6020850151909350614f31816140c0565b604085015190925061442b816140c0565b5f82518060208501845e5f920191825250919050565b5f8060408385031215614f69575f80fd5b614f7283614aa8565b9150602083015163ffffffff81168114613e31575f80fd5b601f82111561392857805f5260205f20601f840160051c81016020851015614faf5750805b601f840160051c820191505b8181101561272b575f8155600101614fbb565b81516001600160401b03811115614fe757614fe7613efe565b614ffb81614ff584546147ac565b84614f8a565b6020601f82116001811461502d575f83156150165750848201515b5f19600385901b1c1916600184901b17845561272b565b5f84815260208120601f198516915b8281101561505c578785015182556020948501946001909201910161503c565b508482101561507957868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220f7dbb6b0d25b0f8e40cbb6fa0b62babb2b8a4fcd3283ec06093dc9e9bb9c155764736f6c634300081a0033",
1276
+ "deployedBytecode": "0x608060405234801561000f575f80fd5b50600436106101d1575f3560e01c80637225ed01116100fe578063a3c260521161009e578063bf7e214f1161006e578063bf7e214f14610479578063ca510bf614610216578063d0d63b0914610481578063fb3bcd1f14610494575f80fd5b8063a3c2605214610430578063ada9652e14610443578063b68d180914610457578063bca99e3914610466575f80fd5b806384d1f7cf116100d957806384d1f7cf146103e1578063893d20e8146103f45780638fb36037146103fc57806396fa19e81461041d575f80fd5b80637225ed01146103855780637a9e5e4b146103bb57806384a710fa146103ce575f80fd5b8063329d6e7411610174578063644c45e011610144578063644c45e0146103225780636c1e9dff1461033f5780636c741e781461035257806371504a3214610372575f80fd5b8063329d6e74146102c457806332f9f3df146102d757806349bb9e4b146102ea5780635ab1bd53146102fd575f80fd5b80630fec111c116101af5780630fec111c14610247578063138461e01461025c5780631eff4b221461027c57806326889b09146102b1575f80fd5b806301ffc9a7146101d557806306625783146102165780630d8e6e2c1461022b575b5f80fd5b6102016101e3366004613dba565b6001600160e01b0319165f9081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b610229610224366004613e05565b6104a7565b005b6102336104b7565b60405162ffffff909116815260200161020d565b61024f61053e565b60405161020d9190613e6a565b6102646106ca565b6040516001600160601b03909116815260200161020d565b6102a37f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b60405190815260200161020d565b6102646102bf366004613e05565b6106d4565b6102296102d236600461408f565b610bfc565b6102296102e5366004614286565b610d46565b6102296102f83660046142f6565b610f3f565b6001546001600160a01b03165b6040516001600160a01b03909116815260200161020d565b5f80516020615089833981519152546001600160601b0316610264565b61026461034d366004613e05565b61103b565b61035a6115e4565b6040516001600160401b03909116815260200161020d565b610264610380366004614342565b6116db565b61039b610393366004614400565b928392509050565b604080516001600160601b0393841681529290911660208301520161020d565b6102296103c9366004614436565b61189e565b61039b6103dc366004614451565b611920565b61039b6103ef36600461448e565b611a1c565b61030a611c10565b610404611d41565b6040516001600160e01b0319909116815260200161020d565b61022961042b36600461450c565b611d76565b61022961043e3660046145a4565b611db8565b6102a35f8051602061508983398151915281565b604051600f815260200161020d565b6102296104743660046145bf565b61202f565b61030a612239565b61022961048f3660046145bf565b612254565b6102296104a23660046145da565b612732565b6104b3335b5f36612a3e565b5050565b604051632efe011360e01b8152600360048201525f60248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af4158015610515573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105399190614764565b905090565b610546613d7d565b5f7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156105bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105e09190614791565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a001610628611c10565b6001600160a01b03168152602001826001018054610645906147ac565b80601f0160208091040260200160405190810160405280929190818152602001828054610671906147ac565b80156106bc5780601f10610693576101008083540402835291602001916106bc565b820191905f5260205f20905b81548152906001019060200180831161069f57829003601f168201915b505050505081525091505090565b5f61053930612b34565b5f80806106e1600f612d2d565b92505091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610723573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074791906147e4565b90505f826001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610786573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107aa91906147e4565b604051634793b4ab60e01b81526001600160601b03891660048201529091505f906001600160a01b03841690634793b4ab906024015f60405180830381865afa1580156107f9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108209190810190614888565b905061082f815f015186612dc9565b1561086557604051630a49ea2360e01b81526001600160601b03808a166004830152861660248201526044015b60405180910390fd5b600254604051631696791160e11b81526001600160a01b0386811660048301526001600160601b03808c1660248401528a1660448301525f921690632d2cf222906064016020604051808303815f875af11580156108c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e99190614791565b905060035f9054906101000a90046001600160a01b03166001600160a01b03166389fad8a284888473__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610958573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097c9190614791565b6040518563ffffffff1660e01b815260040161099b949392919061494c565b5f604051808303815f87803b1580156109b2575f80fd5b505af11580156109c4573d5f803e3d5ffd5b505060405163f0ea17c360e01b81526001600160601b03891660048201525f92506001600160a01b038716915063f0ea17c3906024015f60405180830381865afa158015610a14573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a3b9190810190614989565b60808101519091505f610a566001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038e1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015610aa3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac791906147e4565b90507fa9e4ee5628423184bfcde002aae428406aeac6b337e1acf560282b155e358527886001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b26573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4a9190614791565b8a8e87604051610b8394939291906001600160601b03948516815292841660208401529083166040830152909116606082015260800190565b60405180910390a182606001516001600160a01b03166354f0d84c8383876040518463ffffffff1660e01b8152600401610bbf93929190614a61565b5f604051808303815f87803b158015610bd6575f80fd5b505af1158015610be8573d5f803e3d5ffd5b50959e9d5050505050505050505050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c610c1e6104b7565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610c5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c809190614a8d565b5f805160206150c98339815191528054600160401b900460ff1680610cb2575080546001600160401b03808416911610155b15610cd05760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610cfa83612e55565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b610d4f336104ac565b5f610d638260800151836101600151612e5d565b600254602084015160405163ad328d9f60e01b81529293506001600160a01b039091169163ad328d9f91610d9f9189918891879060040161494c565b5f604051808303815f87803b158015610db6575f80fd5b505af1158015610dc8573d5f803e3d5ffd5b50506002546040516301d90a6f60e61b81526001600160a01b0389811660048301526001600160601b038816602483015290911692506376429bc091506044015b5f604051808303815f87803b158015610e20575f80fd5b505af1158015610e32573d5f803e3d5ffd5b5050505060065f9054906101000a90046001600160a01b03166001600160a01b031663d44f8a4b866001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb99190614791565b6040516001600160e01b031960e084901b1681526001600160601b0391821660048201526001600160a01b038816602482015290841660448201526064016020604051808303815f875af1158015610f13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f379190614791565b505050505050565b5f805160206150c98339815191528054600160401b810460ff1615906001600160401b03165f81158015610f705750825b90505f826001600160401b03166001148015610f8b5750303b155b905081158015610f99575080155b15610fb75760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610fe157845460ff60401b1916600160401b1785555b610feb8787612ee2565b831561103257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b5f8080611048600f612d2d565b92505091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561108a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ae91906147e4565b604051634793b4ab60e01b81526001600160601b03881660048201529091505f906001600160a01b03831690634793b4ab906024015f60405180830381865afa1580156110fd573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526111249190810190614888565b6040516357f80bbf60e01b81526001600160601b03861660048201529091505f906001600160a01b038416906357f80bbf9060240160e060405180830381865afa158015611174573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111989190614ab7565b90506111a7825f015186612dc9565b156111d857604051630a49ea2360e01b81526001600160601b03808a1660048301528616602482015260440161085c565b6040516308a390bb60e21b81526001600160601b03861660048201525f906001600160a01b0385169063228e42ec90602401602060405180830381865afa158015611225573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112499190614791565b905061125f611258828a613125565b835161316f565b156112a357815160405163b806175d60e01b81526001600160601b03808916600483015291821660248201528183166044820152908916606482015260840161085c565b505f73__$58e11c6004c5796aaa8c56e718245e69a2$__639ed246ea6112c986896131b9565b6040516001600160e01b031960e084901b1681528151600482015260209091015160248201526001600160601b038b1660448201526064016040805180830381865af415801561131b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061133f9190614b41565b809850819250505060035f9054906101000a90046001600160a01b03166001600160a01b031663d56cd3d5866001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ca91906147e4565b888a856040518563ffffffff1660e01b81526004016113ec949392919061494c565b5f604051808303815f87803b158015611403575f80fd5b505af1158015611415573d5f803e3d5ffd5b50506002546040516325fa796b60e01b81526001600160a01b0389811660048301526001600160601b03808f1660248401528c16604483015290911692506325fa796b91506064015f604051808303815f87803b158015611474575f80fd5b505af1158015611486573d5f803e3d5ffd5b505050505f61149d6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038c1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156114ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061150e91906147e4565b90507fa397b0d38fe748a8c29cce53eab5736ef0c29c156e7a9586ae8b88a8557b4145866001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561156d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115919190614791565b604080516001600160601b0392831681528a831660208201528d8316818301528c83166060820152918b166080830152519081900360a00190a16115d78588838c6132c2565b5050505050505092915050565b5f73__$1d92393fa9ccd763988368ce8a1cb90d26$__63dda777d3600f604051632392b61b60e21b81526003600482015273__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af415801561164f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116739190614b87565b6040516001600160e01b031960e085901b16815260ff9283166004820152911660248201526044015b602060405180830381865af41580156116b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105399190614a8d565b5f80806116e8600f612d2d565b925050915060025f9054906101000a90046001600160a01b03166001600160a01b031663e283b4a982848b8b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801561175b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061177f9190614791565b8c8c8c6040518963ffffffff1660e01b81526004016117a5989796959493929190614bca565b6020604051808303815f875af11580156117c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117e59190614791565b92507f0dcadf661b8b2888423f78a848a77785b4dc0138395b12584835f6a65dfcea79816001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611844573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118689190614791565b604080516001600160601b03928316815282861660208201529186169082015260600160405180910390a1505095945050505050565b336118a7612239565b6001600160a01b0316816001600160a01b0316146118e25760405162d1953b60e31b81526001600160a01b038216600482015260240161085c565b816001600160a01b03163b5f03611917576040516361798f2f60e11b81526001600160a01b038316600482015260240161085c565b6104b382613373565b6040516302d764c760e21b81526001600160601b03831660048201525f90819081906001600160a01b03871690630b5d931c9060240161020060405180830381865afa158015611972573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119969190614c46565b602001516040516357f80bbf60e01b81526001600160601b03821660048201529091505f906001600160a01b038816906357f80bbf9060240160e060405180830381865afa1580156119ea573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a0e9190614ab7565b509396879650945050505050565b5f80611a27336104ac565b611a91886001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a66573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a8a91906147e4565b8785611920565b600254604051634adcf90960e01b81529294509092506001600160a01b031690634adcf90990611acb908b9089908990889060040161494c565b5f604051808303815f87803b158015611ae2575f80fd5b505af1158015611af4573d5f803e3d5ffd5b5050505060065f9054906101000a90046001600160a01b03166001600160a01b031663ea48ce9b896001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b57573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7b9190614791565b6040516001600160e01b031960e084901b1681526001600160601b0391821660048201526001600160a01b038b16602482015290841660448201526064016020604051808303815f875af1158015611bd5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bf99190614791565b50611c04818361316f565b50965096945050505050565b5f805f8051602061508983398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015611c7c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ca09190614d07565b15611d2b576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611d01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d2591906147e4565b91505090565b54600160601b90046001600160a01b0316919050565b5f805160206150a983398151915280545f9190600160a01b900460ff16611d68575f611d25565b638fb3603760e01b91505090565b611d7f336104ac565b600254602083015160405163ad328d9f60e01b81526001600160a01b039092169163ad328d9f91610e099189918891879060040161494c565b5f80611dc4600f612d2d565b92505091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e2a91906147e4565b60405163f0ea17c360e01b81526001600160601b03851660048201529091505f906001600160a01b0383169063f0ea17c3906024015f60405180830381865afa158015611e79573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611ea09190810190614989565b90505f8160a00151806020019051810190611ebb9190614ab7565b9050611edf8160200151611ecd6133d3565b6001600160401b039081169116141590565b15611f085760405163eff765ff60e01b81526001600160601b038616600482015260240161085c565b6001600160401b03861660208083019190915260408051631a99b41b60e31b815290516001600160a01b0387169263d4cda0d892600480820193918290030181865afa158015611f5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f7e91906147e4565b6001600160a01b0316637e3d91e8868360ff6040518463ffffffff1660e01b8152600401611fae93929190614d20565b5f604051808303815f87803b158015611fc5575f80fd5b505af1158015611fd7573d5f803e3d5ffd5b5050604080516001600160601b03891681526001600160401b038a1660208201527fe7e6a7a42cbdb2d274dfaaac06073a09d6095ca3745ce71fe5a137f8247ea23e93500190505b60405180910390a1505050505050565b5f8061203b600f612d2d565b92505091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561207d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120a191906147e4565b6040516357f80bbf60e01b81526001600160601b03851660048201529091505f906001600160a01b038316906357f80bbf9060240160e060405180830381865afa1580156120f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121159190614ab7565b80516001600160601b038716825260408051631a99b41b60e31b8152905192935090916001600160a01b0386169163d4cda0d89160048083019260209291908290030181865afa15801561216b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061218f91906147e4565b6001600160a01b0316637e3d91e8868460ff6040518463ffffffff1660e01b81526004016121bf93929190614d20565b5f604051808303815f87803b1580156121d6575f80fd5b505af11580156121e8573d5f803e3d5ffd5b5050604080516001600160601b03808a16825280861660208301528a16918101919091527f59c52d680289bf3ed1eaf8c98c2385d021cbc74043dd1ed596d6383f63235ffc9250606001905061201f565b5f805160206150a9833981519152546001600160a01b031690565b5f80612260600f612d2d565b600254604051632aa6b2cb60e21b81526001600160a01b0380841660048301526001600160601b03891660248301529496509194505f93849350169063aa9acb2c9060440160408051808303815f875af11580156122c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122e49190614b41565b9150915060035f9054906101000a90046001600160a01b03166001600160a01b03166389fad8a2846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612347573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061236b91906147e4565b866123768686613125565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156123bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123e19190614791565b6040518563ffffffff1660e01b8152600401612400949392919061494c565b5f604051808303815f87803b158015612417575f80fd5b505af1158015612429573d5f803e3d5ffd5b505050507f64c75a4392ba38fee1b5a44b61e3dd0cae424d2d43eb2b0c99772efe31e1c042836001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561248a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124ae9190614791565b604080516001600160601b03928316815282881660208201529188169082015260600160405180910390a16124e38282613125565b6040516330b8415f60e01b81526001600160601b03909116600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af415801561253a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061255e9190614d07565b1561272b575f836001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125c491906147e4565b60405163f0ea17c360e01b81526001600160601b03871660048201526001600160a01b03919091169063f0ea17c3906024015f60405180830381865afa158015612610573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526126379190810190614989565b905080606001516001600160a01b03166354f0d84c82608001516126636001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038b1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156126b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126d491906147e4565b6126de8787613125565b6040518463ffffffff1660e01b81526004016126fc93929190614a61565b5f604051808303815f87803b158015612713575f80fd5b505af1158015612725573d5f803e3d5ffd5b50505050505b5050505050565b61273b336104ac565b5f61274e6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03851660048201529091505f906001600160a01b0383169063a48f42e0906024015f60405180830381865afa15801561279d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526127c49190810190614da7565b60208101516040516305247a1760e51b81526001600160601b0390911660048201529091505f906001600160a01b0384169063a48f42e0906024015f60405180830381865afa158015612819573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526128409190810190614da7565b60208101516040516305247a1760e51b81526001600160601b0390911660048201529091505f906001600160a01b0385169063a48f42e0906024015f60405180830381865afa158015612895573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526128bc9190810190614da7565b90505f816080015190505f6128da8760e00151886101600151613125565b90505f6128f1886101000151896101800151613125565b90505f886060015190505f846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612938573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061295c91906147e4565b60035488519192506001600160a01b03169063d56cd3d59083906129808688613125565b886040518563ffffffff1660e01b81526004016129a0949392919061494c565b5f604051808303815f87803b1580156129b7575f80fd5b505af11580156129c9573d5f803e3d5ffd5b50506003548a516040516325e451d360e01b81526001600160a01b0390921693506325e451d39250612a04918591908790899060040161494c565b5f604051808303815f87803b158015612a1b575f80fd5b505af1158015612a2d573d5f803e3d5ffd5b505050505050505050505050505050565b5f805160206150a98339815191525f80612a76612a59612239565b8730612a6860045f8a8c614e77565b612a7191614e9e565b613413565b9150915081610f375763ffffffff811615612b1157825460ff60a01b1916600160a01b178355612aa4612239565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b8152600401612ad393929190614ed6565b5f604051808303815f87803b158015612aea575f80fd5b505af1158015612afc573d5f803e3d5ffd5b5050845460ff60a01b1916855550610f379050565b60405162d1953b60e31b81526001600160a01b038716600482015260240161085c565b5f805f8051602061508983398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015612ba0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bc49190614d07565b15612bf05780546040516301ab8b6760e21b81526001600160601b03909116600482015260240161085c565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa158015612c42573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c669190614d07565b612c8e5760405163b9304b0d60e01b81526001600160a01b038416600482015260240161085c565b6001546001600160a01b0316604051632f2a35f760e11b81526001600160a01b0385811660048301529190911690635e546bee90602401602060405180830381865afa158015612ce0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d049190614791565b81546bffffffffffffffffffffffff19166001600160601b039190911690811790915592915050565b5f612d36613d7d565b5f612d496001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015612d8d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612db19190614791565b9250612dbf8385600161351b565b9395909450915050565b6040516399009c5160e01b81526001600160601b038084166004830152821660248201525f9073__$94a2c899be079b00d952d0d84fffaa5c34$__906399009c51906044015b602060405180830381865af4158015612e2a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e4e9190614d07565b9392505050565b6101d16137b8565b6040516363cf551160e11b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063c79eaa22906044015b602060405180830381865af4158015612ebe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e4e9190614791565b5f805160206150c98339815191528054600160401b810460ff1615906001600160401b03165f81158015612f135750825b90505f826001600160401b03166001148015612f2e5750303b155b905081158015612f3c575080155b15612f5a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315612f8457845460ff60401b1916600160401b1785555b5f8087806020019051810190612f9a9190614f03565b9250509150612faa82828b6137f0565b612fb4600261392d565b600580546001600160a01b0319166001600160a01b0392909216919091179055612fde601f61392d565b600280546001600160a01b0319166001600160a01b0392909216919091179055613008600a61392d565b600480546001600160a01b0319166001600160a01b0392909216919091179055613032600b61392d565b600380546001600160a01b0319166001600160a01b03928316179055600154166001600160a01b0316630e9ed68b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561308d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130b191906147e4565b600680546001600160a01b0319166001600160a01b03929092169190911790556130e1631523f8cf60e01b613a34565b5050831561103257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001611029565b60405163274acb3560e01b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb3590604401612ea3565b604051632601631360e21b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__906398058c4c90604401612e0f565b604080518082019091525f808252602082015260405163f0ea17c360e01b81526001600160601b03831660048201525f906001600160a01b0385169063f0ea17c3906024015f60405180830381865afa158015613218573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261323f9190810190614989565b602001516040516302d764c760e21b81526001600160601b03821660048201529091506001600160a01b03851690630b5d931c9060240161020060405180830381865afa158015613292573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132b69190614c46565b60e00151949350505050565b60405163f0ea17c360e01b81526001600160601b03841660048201525f906001600160a01b0386169063f0ea17c3906024015f60405180830381865afa15801561330e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526133359190810190614989565b90505f8160800151905081606001516001600160a01b031663c7d63d578583866040518463ffffffff1660e01b81526004016126fc93929190614a61565b5f805160206150a983398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b604051637c3940bf60e01b81526001600160401b0360048201525f9073__$1d92393fa9ccd763988368ce8a1cb90d26$__90637c3940bf9060240161169c565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516134819190614f42565b5f60405180830381855afa9150503d805f81146134b9576040519150601f19603f3d011682016040523d82523d5f602084013e6134be565b606091505b509150915081156135105760408151106134f057808060200190518101906134e69190614f58565b9094509250613510565b6020815110613510578080602001905181019061350d9190614d07565b93505b505094509492505050565b613523613d7d565b5f806135376001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03881660048201529091506001600160a01b0382169063a48f42e0906024015f60405180830381865afa158015613584573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526135ab9190810190614da7565b925060ff8516600b1461360957604083015160ff86811691161461360457604080840151905163b83d92cb60e01b81526001600160601b038816600482015260ff8088166024830152909116604482015260640161085c565b6136a5565b6136248360400151613619600c90565b60ff90811691161490565b8061363a575061363a8360400151613619600f90565b8061365057506136508360400151613619600e90565b8061366657506136668360400151613619600d90565b6136a557604080840151905163b83d92cb60e01b81526001600160601b038816600482015260ff8088166024830152909116604482015260640161085c565b6136b28360200151613a60565b915083156137af57816001600160a01b031663311adb686040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136f6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061371a91906147e4565b6080840151604051629b7b3560e61b81526001600160a01b0391821660048201529116906326decd4090602401602060405180830381865afa158015613762573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137869190614d07565b156137af57604051637d71120960e11b81526001600160601b038716600482015260240161085c565b50935093915050565b5f805160206150c983398151915254600160401b900460ff166137ee57604051631afcd79f60e31b815260040160405180910390fd5b565b6137f86137b8565b61387483846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015613838573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061385c9190614791565b60085f8560405180602001604052805f815250613af0565b6001600160a01b038216156138915761388c82613b95565b613908565b5f61389c600261392d565b9050613906816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138dd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061390191906147e4565b613b95565b505b613918634a531f3360e01b613a34565b61392863daf9067160e01b613a34565b505050565b5f6139406001546001600160a01b031690565b604051632392b61b60e21b8152600360048201526001600160a01b03919091169063d39e604390849073__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af41580156139a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139c79190614b87565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015613a0a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a2e91906147e4565b92915050565b613a3c6137b8565b6001600160e01b0319165f908152602081905260409020805460ff19166001179055565b5f613a736001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa158015613abf573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613ae69190810190614da7565b6080015192915050565b613af86137b8565b613b028287613ba9565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa301613b8b8382614fce565b5050505050505050565b613b9d6137b8565b613ba681613c1f565b50565b613bb16137b8565b613bba81613c30565b613bc2613d38565b6001600160a01b038216613be95760405163f17ef42d60e01b815260040160405180910390fd5b505f8051602061508983398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b613c276137b8565b613ba681613373565b613c386137b8565b806001600160a01b03163b5f03613c6d5760405163fdeac91f60e01b81526001600160a01b038216600482015260240161085c565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152632f6da6f960e01b60048201526301ffc9a790602401602060405180830381865afa925050508015613ce7575060408051601f3d908101601f19168201909252613ce491810190614d07565b60015b613d0f5760405163fdeac91f60e01b81526001600160a01b038216600482015260240161085c565b806104b35760405163fdeac91f60e01b81526001600160a01b038316600482015260240161085c565b613d406137b8565b6301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b5f60208284031215613dca575f80fd5b81356001600160e01b031981168114612e4e575f80fd5b6001600160601b0381168114613ba6575f80fd5b8035613e0081613de1565b919050565b5f8060408385031215613e16575f80fd5b8235613e2181613de1565b91506020830135613e3181613de1565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081526001600160601b0382511660208201526001600160601b03602083015116604082015260ff60408301511660608201525f6060830151613eb2608084018215159052565b5060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e080840152613ef6610100840182613e3c565b949350505050565b634e487b7160e01b5f52604160045260245ffd5b60405161020081016001600160401b0381118282101715613f3557613f35613efe565b60405290565b604080519081016001600160401b0381118282101715613f3557613f35613efe565b60405161024081016001600160401b0381118282101715613f3557613f35613efe565b60405160c081016001600160401b0381118282101715613f3557613f35613efe565b60405160e081016001600160401b0381118282101715613f3557613f35613efe565b60405161012081016001600160401b0381118282101715613f3557613f35613efe565b604051601f8201601f191681016001600160401b038111828210171561400f5761400f613efe565b604052919050565b5f6001600160401b0382111561402f5761402f613efe565b50601f01601f191660200190565b5f82601f83011261404c575f80fd5b813561405f61405a82614017565b613fe7565b818152846020838601011115614073575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561409f575f80fd5b81356001600160401b038111156140b4575f80fd5b613ef68482850161403d565b6001600160a01b0381168114613ba6575f80fd5b80356001600160c01b031981168114613e00575f80fd5b64ffffffffff81168114613ba6575f80fd5b8035613e00816140eb565b803561ffff81168114613e00575f80fd5b5f610200828403121561412a575f80fd5b614132613f12565b905061413d82613df5565b815261414b60208301613df5565b602082015261415c604083016140d4565b604082015261416d606083016140d4565b606082015261417e60808301613df5565b608082015261418f60a08301613df5565b60a08201526141a060c083016140fd565b60c082015260e08201356001600160401b038111156141bd575f80fd5b6141c98482850161403d565b60e0830152506101008201356001600160401b038111156141e8575f80fd5b6141f48482850161403d565b610100830152506142086101208301614108565b61012082015261421b6101408301614108565b61014082015261422e6101608301613df5565b6101608201526142416101808301613df5565b6101808201526142546101a083016140fd565b6101a08201526142676101c083016140fd565b6101c082015261427a6101e083016140fd565b6101e082015292915050565b5f805f8060808587031215614299575f80fd5b84356142a4816140c0565b935060208501356142b4816140c0565b925060408501356142c481613de1565b915060608501356001600160401b038111156142de575f80fd5b6142ea87828801614119565b91505092959194509250565b5f8060408385031215614307575f80fd5b8235614312816140c0565b915060208301356001600160401b0381111561432c575f80fd5b6143388582860161403d565b9150509250929050565b5f805f805f85870360a0811215614357575f80fd5b8635614362816140c0565b95506040601f1982011215614375575f80fd5b5061437e613f3b565b60208781013582526040880135908201529350606086013561439f816140eb565b925060808601356001600160401b038111156143b9575f80fd5b8601601f810188136143c9575f80fd5b80356001600160401b038111156143de575f80fd5b8860208284010111156143ef575f80fd5b959894975092955050506020019190565b5f805f60608486031215614412575f80fd5b8335925060208401359150604084013561442b81613de1565b809150509250925092565b5f60208284031215614446575f80fd5b8135612e4e816140c0565b5f805f60608486031215614463575f80fd5b833561446e816140c0565b9250602084013561447e81613de1565b9150604084013561442b81613de1565b5f805f805f8060c087890312156144a3575f80fd5b86356144ae816140c0565b955060208701356144be816140c0565b945060408701356144ce81613de1565b935060608701356144de81613de1565b925060808701356144ee81613de1565b915060a08701356144fe81613de1565b809150509295509295509295565b5f805f805f60a08688031215614520575f80fd5b853561452b816140c0565b9450602086013561453b816140c0565b9350604086013561454b81613de1565b925060608601356001600160401b03811115614565575f80fd5b61457188828901614119565b925050608086013561458281613de1565b809150509295509295909350565b6001600160401b0381168114613ba6575f80fd5b5f602082840312156145b4575f80fd5b8135612e4e81614590565b5f602082840312156145cf575f80fd5b8135612e4e81613de1565b5f808284036102608112156145ed575f80fd5b83356145f881613de1565b9250610240601f198201121561460c575f80fd5b50614615613f5d565b61462160208501613df5565b815261462f60408501613df5565b602082015261464060608501613df5565b604082015261465160808501613df5565b606082015261466260a08501613df5565b608082015261467360c08501613df5565b60a082015261468460e08501613df5565b60c08201526146966101008501613df5565b60e08201526146a86101208501613df5565b6101008201526146bb6101408501613df5565b6101208201526146ce6101608501613df5565b6101408201526146e16101808501613df5565b6101608201526146f46101a08501613df5565b6101808201526147076101c08501613df5565b6101a082015261471a6101e08501613df5565b6101c082015261472d6102008501613df5565b6101e08201526147406102208501613df5565b6102008201526147536102408501613df5565b610220820152809150509250929050565b5f60208284031215614774575f80fd5b815162ffffff81168114612e4e575f80fd5b8051613e0081613de1565b5f602082840312156147a1575f80fd5b8151612e4e81613de1565b600181811c908216806147c057607f821691505b6020821081036147de57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f602082840312156147f4575f80fd5b8151612e4e816140c0565b5f6040828403121561480f575f80fd5b614817613f3b565b825181526020928301519281019290925250919050565b5f82601f83011261483d575f80fd5b8151602083015f61485061405a84614017565b9050828152858383011115614863575f80fd5b8282602083015e5f92810160200192909252509392505050565b8051613e00816140eb565b5f60208284031215614898575f80fd5b81516001600160401b038111156148ad575f80fd5b820160e081850312156148be575f80fd5b6148c6613f80565b81516148d181613de1565b81526148e085602084016147ff565b602082015260608201516001600160401b038111156148fd575f80fd5b6149098682850161482e565b604083015250608082015161491d816140eb565b606082015261492e60a0830161487d565b608082015261493f60c0830161487d565b60a0820152949350505050565b6001600160a01b039490941684526001600160601b039283166020850152908216604084015216606082015260800190565b8051613e00816140c0565b5f60208284031215614999575f80fd5b81516001600160401b038111156149ae575f80fd5b820160c081850312156149bf575f80fd5b6149c7613f80565b81516001600160401b038111156149dc575f80fd5b6149e88682850161482e565b8252506149f760208301614786565b6020820152614a086040830161497e565b6040820152614a196060830161497e565b6060820152614a2a6080830161497e565b608082015260a08201516001600160401b03811115614a47575f80fd5b614a538682850161482e565b60a083015250949350505050565b6001600160a01b0393841681529190921660208201526001600160601b03909116604082015260600190565b5f60208284031215614a9d575f80fd5b8151612e4e81614590565b80518015158114613e00575f80fd5b5f60e0828403128015614ac8575f80fd5b50614ad1613fa2565b8251614adc81613de1565b81526020830151614aec81614590565b6020820152614afd60408401614aa8565b6040820152614b0e60608401614aa8565b6060820152614b1f60808401614aa8565b608082015260a0838101519082015260c0928301519281019290925250919050565b5f8060408385031215614b52575f80fd5b8251614b5d81613de1565b6020840151909250613e3181613de1565b60ff81168114613ba6575f80fd5b8051613e0081614b6e565b5f60208284031215614b97575f80fd5b8151612e4e81614b6e565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b0389811682526001600160601b038916602083015287166040820152614c04606082018780518252602090810151910152565b6001600160601b03851660a082015264ffffffffff841660c082015261010060e08201525f614c3861010083018486614ba2565b9a9950505050505050505050565b5f610200828403128015614c58575f80fd5b50614c61613fc4565b614c6a83614786565b8152614c7860208401614786565b6020820152614c8a84604085016147ff565b6040820152614c9c84608085016147ff565b6060820152614cae8460c085016147ff565b6080820152614cc18461010085016147ff565b60a0820152614cd48461014085016147ff565b60c0820152614ce78461018085016147ff565b60e0820152614cfa846101c085016147ff565b6101008201529392505050565b5f60208284031215614d17575f80fd5b612e4e82614aa8565b5f610120820190506001600160601b03851682526001600160601b0384511660208301526001600160401b0360208501511660408301526040840151151560608301526060840151151560808301526080840151614d8260a084018215159052565b5060a084015160c083015260c084015160e0830152613ef661010083018460ff169052565b5f60208284031215614db7575f80fd5b81516001600160401b03811115614dcc575f80fd5b820160e08185031215614ddd575f80fd5b614de5613fa2565b614dee82614786565b8152614dfc60208301614786565b6020820152614e0d60408301614b7c565b6040820152614e1e60608301614aa8565b6060820152614e2f6080830161497e565b6080820152614e4060a0830161497e565b60a082015260c08201516001600160401b03811115614e5d575f80fd5b614e698682850161482e565b60c083015250949350505050565b5f8085851115614e85575f80fd5b83861115614e91575f80fd5b5050820193919092039150565b80356001600160e01b03198116906004841015614ecf576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190525f90614efa9083018486614ba2565b95945050505050565b5f805f60608486031215614f15575f80fd5b8351614f20816140c0565b6020850151909350614f31816140c0565b604085015190925061442b816140c0565b5f82518060208501845e5f920191825250919050565b5f8060408385031215614f69575f80fd5b614f7283614aa8565b9150602083015163ffffffff81168114613e31575f80fd5b601f82111561392857805f5260205f20601f840160051c81016020851015614faf5750805b601f840160051c820191505b8181101561272b575f8155600101614fbb565b81516001600160401b03811115614fe757614fe7613efe565b614ffb81614ff584546147ac565b84614f8a565b6020601f82116001811461502d575f83156150165750848201515b5f19600385901b1c1916600184901b17845561272b565b5f84815260208120601f198516915b8281101561505c578785015182556020948501946001909201910161503c565b508482101561507957868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220f7dbb6b0d25b0f8e40cbb6fa0b62babb2b8a4fcd3283ec06093dc9e9bb9c155764736f6c634300081a0033",
1235
1277
  "linkReferences": {
1236
1278
  "contracts/type/Amount.sol": {
1237
1279
  "AmountLib": [
1238
1280
  {
1239
1281
  "length": 20,
1240
- "start": 5339
1282
+ "start": 2537
1241
1283
  },
1242
1284
  {
1243
1285
  "length": 20,
1244
- "start": 5485
1286
+ "start": 6124
1245
1287
  },
1246
1288
  {
1247
1289
  "length": 20,
1248
- "start": 5632
1290
+ "start": 9294
1249
1291
  },
1250
1292
  {
1251
1293
  "length": 20,
1252
- "start": 9582
1294
+ "start": 9688
1253
1295
  },
1254
1296
  {
1255
1297
  "length": 20,
1256
- "start": 10993
1298
+ "start": 12123
1257
1299
  },
1258
1300
  {
1259
1301
  "length": 20,
1260
- "start": 11353
1302
+ "start": 12835
1261
1303
  },
1262
1304
  {
1263
1305
  "length": 20,
1264
- "start": 11631
1306
+ "start": 12909
1265
1307
  }
1266
1308
  ]
1267
1309
  },
@@ -1269,7 +1311,7 @@
1269
1311
  "FeeLib": [
1270
1312
  {
1271
1313
  "length": 20,
1272
- "start": 4058
1314
+ "start": 4989
1273
1315
  }
1274
1316
  ]
1275
1317
  },
@@ -1277,15 +1319,19 @@
1277
1319
  "NftIdLib": [
1278
1320
  {
1279
1321
  "length": 20,
1280
- "start": 1679
1322
+ "start": 1613
1281
1323
  },
1282
1324
  {
1283
1325
  "length": 20,
1284
- "start": 2075
1326
+ "start": 7450
1285
1327
  },
1286
1328
  {
1287
1329
  "length": 20,
1288
- "start": 6877
1330
+ "start": 11326
1331
+ },
1332
+ {
1333
+ "length": 20,
1334
+ "start": 11975
1289
1335
  }
1290
1336
  ]
1291
1337
  },
@@ -1293,7 +1339,11 @@
1293
1339
  "RoleIdLib": [
1294
1340
  {
1295
1341
  "length": 20,
1296
- "start": 11496
1342
+ "start": 5821
1343
+ },
1344
+ {
1345
+ "length": 20,
1346
+ "start": 13511
1297
1347
  }
1298
1348
  ]
1299
1349
  },
@@ -1301,21 +1351,21 @@
1301
1351
  "VersionLib": [
1302
1352
  {
1303
1353
  "length": 20,
1304
- "start": 1522
1354
+ "start": 1459
1305
1355
  },
1306
1356
  {
1307
1357
  "length": 20,
1308
- "start": 2753
1309
- },
1310
- {
1311
- "length": 20,
1312
- "start": 12003
1358
+ "start": 3284
1313
1359
  }
1314
1360
  ],
1315
1361
  "VersionPartLib": [
1316
1362
  {
1317
1363
  "length": 20,
1318
- "start": 7357
1364
+ "start": 5869
1365
+ },
1366
+ {
1367
+ "length": 20,
1368
+ "start": 14913
1319
1369
  }
1320
1370
  ]
1321
1371
  }
@@ -1325,31 +1375,31 @@
1325
1375
  "AmountLib": [
1326
1376
  {
1327
1377
  "length": 20,
1328
- "start": 5109
1378
+ "start": 2323
1329
1379
  },
1330
1380
  {
1331
1381
  "length": 20,
1332
- "start": 5255
1382
+ "start": 5910
1333
1383
  },
1334
1384
  {
1335
1385
  "length": 20,
1336
- "start": 5402
1386
+ "start": 9080
1337
1387
  },
1338
1388
  {
1339
1389
  "length": 20,
1340
- "start": 9352
1390
+ "start": 9474
1341
1391
  },
1342
1392
  {
1343
1393
  "length": 20,
1344
- "start": 10763
1394
+ "start": 11909
1345
1395
  },
1346
1396
  {
1347
1397
  "length": 20,
1348
- "start": 11123
1398
+ "start": 12621
1349
1399
  },
1350
1400
  {
1351
1401
  "length": 20,
1352
- "start": 11401
1402
+ "start": 12695
1353
1403
  }
1354
1404
  ]
1355
1405
  },
@@ -1357,7 +1407,7 @@
1357
1407
  "FeeLib": [
1358
1408
  {
1359
1409
  "length": 20,
1360
- "start": 3828
1410
+ "start": 4775
1361
1411
  }
1362
1412
  ]
1363
1413
  },
@@ -1365,15 +1415,19 @@
1365
1415
  "NftIdLib": [
1366
1416
  {
1367
1417
  "length": 20,
1368
- "start": 1449
1418
+ "start": 1399
1419
+ },
1420
+ {
1421
+ "length": 20,
1422
+ "start": 7236
1369
1423
  },
1370
1424
  {
1371
1425
  "length": 20,
1372
- "start": 1845
1426
+ "start": 11112
1373
1427
  },
1374
1428
  {
1375
1429
  "length": 20,
1376
- "start": 6647
1430
+ "start": 11761
1377
1431
  }
1378
1432
  ]
1379
1433
  },
@@ -1381,7 +1435,11 @@
1381
1435
  "RoleIdLib": [
1382
1436
  {
1383
1437
  "length": 20,
1384
- "start": 11266
1438
+ "start": 5607
1439
+ },
1440
+ {
1441
+ "length": 20,
1442
+ "start": 13297
1385
1443
  }
1386
1444
  ]
1387
1445
  },
@@ -1389,21 +1447,21 @@
1389
1447
  "VersionLib": [
1390
1448
  {
1391
1449
  "length": 20,
1392
- "start": 1292
1450
+ "start": 1245
1393
1451
  },
1394
1452
  {
1395
1453
  "length": 20,
1396
- "start": 2523
1397
- },
1398
- {
1399
- "length": 20,
1400
- "start": 11773
1454
+ "start": 3070
1401
1455
  }
1402
1456
  ],
1403
1457
  "VersionPartLib": [
1404
1458
  {
1405
1459
  "length": 20,
1406
- "start": 7127
1460
+ "start": 5655
1461
+ },
1462
+ {
1463
+ "length": 20,
1464
+ "start": 14699
1407
1465
  }
1408
1466
  ]
1409
1467
  }