@etherisc/gif-next 0.0.2-e79d227-681 → 0.0.2-e7a5428-226

Sign up to get free protection for your applications and to get access to all the features.
Files changed (504) hide show
  1. package/README.md +57 -1
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +640 -269
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +409 -33
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +525 -213
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +179 -19
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +246 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +420 -27
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +105 -185
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +381 -46
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +58 -127
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +533 -218
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +150 -82
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +37 -106
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +379 -79
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +183 -128
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +355 -52
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +324 -250
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +380 -45
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +191 -182
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +94 -100
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  56. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +196 -155
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +600 -296
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  63. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  64. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +88 -45
  65. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  66. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +482 -50
  67. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +373 -13
  69. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  70. package/artifacts/contracts/instance/Instance.sol/Instance.json +493 -85
  71. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  72. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1017 -334
  73. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +380 -52
  75. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +914 -554
  77. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +377 -80
  79. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +83 -57
  81. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +690 -566
  83. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  84. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +141 -85
  85. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  87. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  90. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  92. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  94. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  96. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  101. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +77 -81
  104. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +379 -47
  106. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +41 -45
  109. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +56 -3
  111. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +61 -65
  113. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +120 -68
  115. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +99 -55
  117. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  118. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +102 -114
  119. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +355 -52
  121. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +304 -226
  123. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +120 -76
  125. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  126. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +200 -89
  127. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +59 -63
  129. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +333 -169
  131. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  132. package/artifacts/contracts/pool/Pool.sol/Pool.json +72 -76
  133. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  134. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  135. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +574 -360
  137. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +146 -74
  139. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  140. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +293 -63
  141. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +106 -46
  143. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  144. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +193 -182
  145. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  146. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +380 -45
  147. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  148. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +292 -195
  149. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +127 -99
  151. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  152. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +235 -4
  153. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +181 -19
  155. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +160 -68
  157. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +77 -3
  159. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  160. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +168 -157
  161. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +258 -22
  163. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  164. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +278 -187
  165. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  166. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  167. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +129 -85
  169. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PricingService.sol/PricingService.json +135 -126
  171. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  172. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +103 -75
  173. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  174. package/artifacts/contracts/product/Product.sol/Product.json +187 -176
  175. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  176. package/artifacts/contracts/product/RiskService.sol/RiskService.json +326 -91
  177. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +103 -47
  179. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  180. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  181. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  182. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +54 -19
  183. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  184. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +56 -3
  185. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  186. package/artifacts/contracts/{authorization/AccessAdmin.sol/IAccessManagedChecker.json → registry/IRelease.sol/IRelease.json} +6 -6
  187. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  188. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  189. package/artifacts/contracts/registry/Registry.sol/Registry.json +92 -57
  190. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  191. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +727 -479
  192. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  193. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1061 -0
  194. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  195. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +75 -39
  196. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  197. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +79 -43
  198. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  199. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  200. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  201. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  202. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  203. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +386 -64
  204. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  205. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +437 -26
  206. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  207. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +120 -60
  208. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  209. package/artifacts/contracts/shared/Component.sol/Component.json +60 -50
  210. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  211. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +247 -531
  212. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  213. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +111 -95
  214. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  215. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +178 -34
  216. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  218. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  220. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  221. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +41 -31
  222. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  223. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +155 -382
  224. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  225. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +41 -45
  226. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +6 -6
  228. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  229. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  230. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
  231. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +139 -1
  234. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  236. package/artifacts/contracts/shared/IService.sol/IService.json +56 -3
  237. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  238. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  239. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  240. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +60 -64
  241. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  242. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +6 -6
  243. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  244. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  245. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  246. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  247. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -2
  248. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  249. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  250. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  251. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +137 -62
  252. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  253. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  254. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  255. package/artifacts/contracts/shared/Service.sol/Service.json +51 -11
  256. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  257. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +63 -162
  258. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  259. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +118 -29
  260. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  261. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +32 -32
  262. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  263. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1026 -101
  264. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  265. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +214 -110
  266. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  267. package/artifacts/contracts/staking/Staking.sol/Staking.json +1218 -214
  268. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  269. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  270. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  271. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  272. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  273. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +139 -61
  274. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  275. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +174 -217
  276. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  277. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +253 -174
  278. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  279. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +87 -55
  280. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  281. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +957 -603
  282. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  283. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +101 -51
  284. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  285. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/Amount.sol/AmountLib.json +11 -11
  287. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -19
  289. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  290. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  291. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  293. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  295. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
  297. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  299. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  300. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  301. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  303. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  304. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  305. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  307. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  309. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  311. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  313. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +30 -6
  315. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
  317. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +45 -2
  319. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  321. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  323. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
  326. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +3 -3
  328. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +61 -37
  330. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  332. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  334. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  335. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
  336. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  337. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +65 -27
  338. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  339. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  340. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  341. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
  342. package/contracts/accounting/AccountingService.sol +274 -0
  343. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  344. package/contracts/accounting/IAccountingService.sol +47 -0
  345. package/contracts/authorization/AccessAdmin.sol +422 -258
  346. package/contracts/authorization/AccessAdminLib.sol +396 -0
  347. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  348. package/contracts/authorization/Authorization.sol +142 -262
  349. package/contracts/authorization/IAccess.sol +25 -7
  350. package/contracts/authorization/IAccessAdmin.sol +87 -80
  351. package/contracts/authorization/IAuthorization.sol +9 -43
  352. package/contracts/authorization/IServiceAuthorization.sol +55 -17
  353. package/contracts/authorization/ServiceAuthorization.sol +248 -34
  354. package/contracts/distribution/BasicDistribution.sol +16 -14
  355. package/contracts/distribution/BasicDistributionAuthorization.sol +29 -9
  356. package/contracts/distribution/Distribution.sol +38 -75
  357. package/contracts/distribution/DistributionService.sol +181 -87
  358. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  359. package/contracts/distribution/IDistributionComponent.sol +3 -10
  360. package/contracts/distribution/IDistributionService.sol +34 -19
  361. package/contracts/examples/fire/FirePool.sol +6 -6
  362. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  363. package/contracts/examples/fire/FireProduct.sol +15 -13
  364. package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
  365. package/contracts/examples/unpermissioned/SimpleDistribution.sol +34 -11
  366. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  367. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
  368. package/contracts/examples/unpermissioned/SimplePool.sol +7 -13
  369. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  370. package/contracts/examples/unpermissioned/SimpleProduct.sol +119 -27
  371. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  372. package/contracts/instance/BundleSet.sol +4 -4
  373. package/contracts/instance/IInstance.sol +92 -19
  374. package/contracts/instance/IInstanceService.sol +52 -9
  375. package/contracts/instance/Instance.sol +163 -57
  376. package/contracts/instance/InstanceAdmin.sol +271 -166
  377. package/contracts/instance/InstanceAuthorizationV3.sol +89 -40
  378. package/contracts/instance/InstanceReader.sol +422 -369
  379. package/contracts/instance/InstanceService.sol +252 -176
  380. package/contracts/instance/InstanceServiceManager.sol +1 -1
  381. package/contracts/instance/InstanceStore.sol +13 -2
  382. package/contracts/instance/RiskSet.sol +21 -14
  383. package/contracts/instance/base/BalanceStore.sol +4 -6
  384. package/contracts/instance/base/ObjectCounter.sol +1 -2
  385. package/contracts/instance/base/ObjectLifecycle.sol +6 -8
  386. package/contracts/instance/base/ObjectSet.sol +7 -8
  387. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  388. package/contracts/instance/module/IBundle.sol +6 -5
  389. package/contracts/instance/module/IComponents.sol +19 -7
  390. package/contracts/instance/module/IDistribution.sol +21 -8
  391. package/contracts/instance/module/IPolicy.sol +28 -8
  392. package/contracts/instance/module/IRisk.sol +4 -0
  393. package/contracts/oracle/BasicOracle.sol +2 -4
  394. package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
  395. package/contracts/oracle/IOracle.sol +9 -4
  396. package/contracts/oracle/Oracle.sol +3 -5
  397. package/contracts/oracle/OracleService.sol +24 -23
  398. package/contracts/oracle/OracleServiceManager.sol +1 -1
  399. package/contracts/pool/BasicPool.sol +3 -16
  400. package/contracts/pool/BasicPoolAuthorization.sol +29 -16
  401. package/contracts/pool/BundleService.sol +67 -104
  402. package/contracts/pool/BundleServiceManager.sol +1 -1
  403. package/contracts/pool/IBundleService.sol +27 -33
  404. package/contracts/pool/IPoolService.sol +57 -40
  405. package/contracts/pool/Pool.sol +13 -25
  406. package/contracts/pool/PoolLib.sol +341 -0
  407. package/contracts/pool/PoolService.sol +203 -201
  408. package/contracts/pool/PoolServiceManager.sol +1 -1
  409. package/contracts/product/ApplicationService.sol +86 -18
  410. package/contracts/product/ApplicationServiceManager.sol +1 -1
  411. package/contracts/product/BasicProduct.sol +3 -3
  412. package/contracts/product/BasicProductAuthorization.sol +32 -11
  413. package/contracts/product/ClaimService.sol +187 -171
  414. package/contracts/product/ClaimServiceManager.sol +1 -1
  415. package/contracts/product/IApplicationService.sol +24 -2
  416. package/contracts/product/IClaimService.sol +18 -5
  417. package/contracts/product/IPolicyService.sol +20 -8
  418. package/contracts/product/IPricingService.sol +1 -0
  419. package/contracts/product/IProductComponent.sol +4 -1
  420. package/contracts/product/IRiskService.sol +25 -10
  421. package/contracts/product/PolicyService.sol +110 -198
  422. package/contracts/product/PolicyServiceLib.sol +139 -0
  423. package/contracts/product/PolicyServiceManager.sol +1 -1
  424. package/contracts/product/PricingService.sol +52 -46
  425. package/contracts/product/PricingServiceManager.sol +3 -3
  426. package/contracts/product/Product.sol +93 -27
  427. package/contracts/product/RiskService.sol +119 -36
  428. package/contracts/product/RiskServiceManager.sol +1 -1
  429. package/contracts/registry/ChainNft.sol +4 -2
  430. package/contracts/registry/IRegistry.sol +23 -24
  431. package/contracts/registry/IRelease.sol +29 -0
  432. package/contracts/registry/Registry.sol +22 -11
  433. package/contracts/registry/RegistryAdmin.sol +100 -363
  434. package/contracts/registry/RegistryAuthorization.sol +309 -0
  435. package/contracts/registry/RegistryService.sol +4 -4
  436. package/contracts/registry/RegistryServiceManager.sol +1 -1
  437. package/contracts/registry/ReleaseAdmin.sol +195 -0
  438. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  439. package/contracts/registry/ReleaseRegistry.sol +157 -117
  440. package/contracts/registry/ServiceAuthorizationV3.sol +194 -27
  441. package/contracts/registry/TokenRegistry.sol +61 -59
  442. package/contracts/shared/Component.sol +34 -37
  443. package/contracts/shared/ComponentService.sol +314 -433
  444. package/contracts/shared/ComponentServiceManager.sol +1 -1
  445. package/contracts/shared/ContractLib.sol +164 -76
  446. package/contracts/shared/IComponent.sol +1 -10
  447. package/contracts/shared/IComponentService.sol +22 -41
  448. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  449. package/contracts/shared/IKeyValueStore.sol +1 -1
  450. package/contracts/shared/INftOwnable.sol +2 -0
  451. package/contracts/shared/IRegisterable.sol +15 -5
  452. package/contracts/shared/IService.sol +3 -5
  453. package/contracts/shared/InitializableERC165.sol +9 -1
  454. package/contracts/shared/InstanceLinkedComponent.sol +7 -18
  455. package/contracts/shared/KeyValueStore.sol +3 -3
  456. package/contracts/shared/NftOwnable.sol +8 -6
  457. package/contracts/shared/PolicyHolder.sol +4 -3
  458. package/contracts/shared/Registerable.sol +42 -19
  459. package/contracts/shared/RegistryLinked.sol +1 -1
  460. package/contracts/shared/Service.sol +13 -30
  461. package/contracts/shared/TokenHandler.sol +45 -92
  462. package/contracts/staking/IStaking.sol +155 -64
  463. package/contracts/staking/IStakingService.sol +45 -75
  464. package/contracts/staking/Staking.sol +444 -203
  465. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
  466. package/contracts/staking/StakingManager.sol +1 -2
  467. package/contracts/staking/StakingReader.sol +41 -80
  468. package/contracts/staking/StakingService.sol +62 -181
  469. package/contracts/staking/StakingServiceManager.sol +6 -4
  470. package/contracts/staking/StakingStore.sol +697 -329
  471. package/contracts/staking/TargetManagerLib.sol +1 -1
  472. package/contracts/type/Amount.sol +4 -0
  473. package/contracts/type/Blocknumber.sol +15 -15
  474. package/contracts/type/ChainId.sol +101 -0
  475. package/contracts/type/Fee.sol +8 -8
  476. package/contracts/type/NftId.sol +3 -3
  477. package/contracts/type/ObjectType.sol +67 -38
  478. package/contracts/type/RiskId.sol +9 -3
  479. package/contracts/type/RoleId.sol +63 -45
  480. package/contracts/type/Seconds.sol +14 -0
  481. package/contracts/type/Selector.sol +5 -0
  482. package/contracts/type/String.sol +12 -0
  483. package/contracts/type/Timestamp.sol +4 -7
  484. package/contracts/type/UFixed.sol +35 -127
  485. package/contracts/type/Version.sol +54 -5
  486. package/contracts/upgradeability/IVersionable.sol +3 -0
  487. package/contracts/upgradeability/ProxyManager.sol +26 -12
  488. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
  489. package/contracts/upgradeability/Versionable.sol +6 -3
  490. package/package.json +2 -2
  491. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
  492. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  493. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  494. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  495. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  496. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  497. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -474
  498. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  499. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
  500. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  501. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  502. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
  503. package/contracts/instance/module/IAccess.sol +0 -46
  504. package/contracts/shared/ComponentVerifyingService.sol +0 -128
@@ -41,6 +41,17 @@
41
41
  "name": "AccessManagedUnauthorized",
42
42
  "type": "error"
43
43
  },
44
+ {
45
+ "inputs": [
46
+ {
47
+ "internalType": "address",
48
+ "name": "authority",
49
+ "type": "address"
50
+ }
51
+ ],
52
+ "name": "ErrorAuthorityInvalid",
53
+ "type": "error"
54
+ },
44
55
  {
45
56
  "inputs": [
46
57
  {
@@ -133,6 +144,22 @@
133
144
  "name": "ErrorPoolServiceBundlePoolMismatch",
134
145
  "type": "error"
135
146
  },
147
+ {
148
+ "inputs": [
149
+ {
150
+ "internalType": "Amount",
151
+ "name": "amount",
152
+ "type": "uint96"
153
+ },
154
+ {
155
+ "internalType": "Amount",
156
+ "name": "limit",
157
+ "type": "uint96"
158
+ }
159
+ ],
160
+ "name": "ErrorPoolServiceFeesWithdrawAmountExceedsLimit",
161
+ "type": "error"
162
+ },
136
163
  {
137
164
  "inputs": [
138
165
  {
@@ -209,17 +236,22 @@
209
236
  },
210
237
  {
211
238
  "inputs": [],
212
- "name": "ErrorServiceNotImplemented",
239
+ "name": "ErrorRegisterableNotActive",
213
240
  "type": "error"
214
241
  },
215
242
  {
216
243
  "inputs": [],
217
- "name": "InvalidInitialization",
244
+ "name": "ErrorVersionableInitializeNotImplemented",
218
245
  "type": "error"
219
246
  },
220
247
  {
221
248
  "inputs": [],
222
- "name": "MathLigMulDivOverflow",
249
+ "name": "ErrorVersionableUpgradeNotImplemented",
250
+ "type": "error"
251
+ },
252
+ {
253
+ "inputs": [],
254
+ "name": "InvalidInitialization",
223
255
  "type": "error"
224
256
  },
225
257
  {
@@ -258,6 +290,56 @@
258
290
  "name": "Initialized",
259
291
  "type": "event"
260
292
  },
293
+ {
294
+ "anonymous": false,
295
+ "inputs": [
296
+ {
297
+ "indexed": false,
298
+ "internalType": "NftId",
299
+ "name": "nftId",
300
+ "type": "uint96"
301
+ },
302
+ {
303
+ "indexed": false,
304
+ "internalType": "address",
305
+ "name": "owner",
306
+ "type": "address"
307
+ }
308
+ ],
309
+ "name": "LogNftOwnableNftLinkedToAddress",
310
+ "type": "event"
311
+ },
312
+ {
313
+ "anonymous": false,
314
+ "inputs": [
315
+ {
316
+ "indexed": false,
317
+ "internalType": "NftId",
318
+ "name": "poolNftId",
319
+ "type": "uint96"
320
+ },
321
+ {
322
+ "indexed": false,
323
+ "internalType": "NftId",
324
+ "name": "bundleNftId",
325
+ "type": "uint96"
326
+ },
327
+ {
328
+ "indexed": false,
329
+ "internalType": "NftId",
330
+ "name": "applicationNftId",
331
+ "type": "uint96"
332
+ },
333
+ {
334
+ "indexed": false,
335
+ "internalType": "Amount",
336
+ "name": "totalCollateralAmount",
337
+ "type": "uint96"
338
+ }
339
+ ],
340
+ "name": "LogPoolServiceApplicationVerified",
341
+ "type": "event"
342
+ },
261
343
  {
262
344
  "anonymous": false,
263
345
  "inputs": [
@@ -391,20 +473,32 @@
391
473
  "name": "poolNftId",
392
474
  "type": "uint96"
393
475
  },
476
+ {
477
+ "indexed": false,
478
+ "internalType": "NftId",
479
+ "name": "bundleNftId",
480
+ "type": "uint96"
481
+ },
482
+ {
483
+ "indexed": false,
484
+ "internalType": "NftId",
485
+ "name": "applicationNftId",
486
+ "type": "uint96"
487
+ },
394
488
  {
395
489
  "indexed": false,
396
490
  "internalType": "Amount",
397
- "name": "previousMaxCapitalAmount",
491
+ "name": "totalCollateralAmount",
398
492
  "type": "uint96"
399
493
  },
400
494
  {
401
495
  "indexed": false,
402
496
  "internalType": "Amount",
403
- "name": "currentMaxCapitalAmount",
497
+ "name": "lockedCollateralAmount",
404
498
  "type": "uint96"
405
499
  }
406
500
  ],
407
- "name": "LogPoolServiceMaxBalanceAmountUpdated",
501
+ "name": "LogPoolServiceCollateralLocked",
408
502
  "type": "event"
409
503
  },
410
504
  {
@@ -413,23 +507,23 @@
413
507
  {
414
508
  "indexed": false,
415
509
  "internalType": "NftId",
416
- "name": "policyNftId",
510
+ "name": "bundleNftId",
417
511
  "type": "uint96"
418
512
  },
419
513
  {
420
514
  "indexed": false,
421
- "internalType": "ClaimId",
422
- "name": "claimId",
423
- "type": "uint16"
515
+ "internalType": "NftId",
516
+ "name": "policyNftId",
517
+ "type": "uint96"
424
518
  },
425
519
  {
426
520
  "indexed": false,
427
521
  "internalType": "Amount",
428
- "name": "availableAmount",
522
+ "name": "remainingCollateralAmount",
429
523
  "type": "uint96"
430
524
  }
431
525
  ],
432
- "name": "LogPoolServiceProcessFundedClaim",
526
+ "name": "LogPoolServiceCollateralReleased",
433
527
  "type": "event"
434
528
  },
435
529
  {
@@ -438,13 +532,19 @@
438
532
  {
439
533
  "indexed": false,
440
534
  "internalType": "NftId",
441
- "name": "poolNftId",
535
+ "name": "bundleNftId",
442
536
  "type": "uint96"
443
537
  },
444
538
  {
445
539
  "indexed": false,
446
540
  "internalType": "address",
447
- "name": "poolOwner",
541
+ "name": "recipient",
542
+ "type": "address"
543
+ },
544
+ {
545
+ "indexed": false,
546
+ "internalType": "address",
547
+ "name": "tokenAddress",
448
548
  "type": "address"
449
549
  },
450
550
  {
@@ -454,7 +554,7 @@
454
554
  "type": "uint96"
455
555
  }
456
556
  ],
457
- "name": "LogPoolServiceWalletDefunded",
557
+ "name": "LogPoolServiceFeesWithdrawn",
458
558
  "type": "event"
459
559
  },
460
560
  {
@@ -468,145 +568,215 @@
468
568
  },
469
569
  {
470
570
  "indexed": false,
471
- "internalType": "address",
472
- "name": "poolOwner",
473
- "type": "address"
571
+ "internalType": "Amount",
572
+ "name": "previousMaxCapitalAmount",
573
+ "type": "uint96"
474
574
  },
475
575
  {
476
576
  "indexed": false,
477
577
  "internalType": "Amount",
478
- "name": "amount",
578
+ "name": "currentMaxCapitalAmount",
479
579
  "type": "uint96"
480
580
  }
481
581
  ],
482
- "name": "LogPoolServiceWalletFunded",
582
+ "name": "LogPoolServiceMaxBalanceAmountUpdated",
483
583
  "type": "event"
484
584
  },
485
585
  {
486
- "inputs": [],
487
- "name": "GIF_RELEASE",
488
- "outputs": [
586
+ "anonymous": false,
587
+ "inputs": [
489
588
  {
490
- "internalType": "uint256",
491
- "name": "",
492
- "type": "uint256"
493
- }
494
- ],
495
- "stateMutability": "view",
496
- "type": "function"
497
- },
498
- {
499
- "inputs": [],
500
- "name": "NFT_OWNABLE_STORAGE_LOCATION_V1",
501
- "outputs": [
589
+ "indexed": false,
590
+ "internalType": "NftId",
591
+ "name": "poolNftId",
592
+ "type": "uint96"
593
+ },
502
594
  {
503
- "internalType": "bytes32",
504
- "name": "",
505
- "type": "bytes32"
506
- }
507
- ],
508
- "stateMutability": "view",
509
- "type": "function"
510
- },
511
- {
512
- "inputs": [],
513
- "name": "REGISTERABLE_LOCATION_V1",
514
- "outputs": [
595
+ "indexed": false,
596
+ "internalType": "NftId",
597
+ "name": "bundleNftId",
598
+ "type": "uint96"
599
+ },
515
600
  {
516
- "internalType": "bytes32",
517
- "name": "",
518
- "type": "bytes32"
519
- }
520
- ],
521
- "stateMutability": "view",
522
- "type": "function"
523
- },
524
- {
525
- "inputs": [],
526
- "name": "authority",
527
- "outputs": [
601
+ "indexed": false,
602
+ "internalType": "NftId",
603
+ "name": "policyNftId",
604
+ "type": "uint96"
605
+ },
606
+ {
607
+ "indexed": false,
608
+ "internalType": "PayoutId",
609
+ "name": "payoutId",
610
+ "type": "uint40"
611
+ },
612
+ {
613
+ "indexed": false,
614
+ "internalType": "Amount",
615
+ "name": "netPayoutAmount",
616
+ "type": "uint96"
617
+ },
528
618
  {
619
+ "indexed": false,
620
+ "internalType": "Amount",
621
+ "name": "processingFeeAmount",
622
+ "type": "uint96"
623
+ },
624
+ {
625
+ "indexed": false,
529
626
  "internalType": "address",
530
- "name": "",
627
+ "name": "payoutBeneficiary",
531
628
  "type": "address"
532
629
  }
533
630
  ],
534
- "stateMutability": "view",
535
- "type": "function"
631
+ "name": "LogPoolServicePayoutProcessed",
632
+ "type": "event"
536
633
  },
537
634
  {
635
+ "anonymous": false,
538
636
  "inputs": [
539
637
  {
540
- "internalType": "UFixed",
541
- "name": "collateralizationLevel",
542
- "type": "uint256"
638
+ "indexed": false,
639
+ "internalType": "NftId",
640
+ "name": "policyNftId",
641
+ "type": "uint96"
543
642
  },
544
643
  {
545
- "internalType": "UFixed",
546
- "name": "retentionLevel",
547
- "type": "uint256"
644
+ "indexed": false,
645
+ "internalType": "ClaimId",
646
+ "name": "claimId",
647
+ "type": "uint16"
548
648
  },
549
649
  {
650
+ "indexed": false,
550
651
  "internalType": "Amount",
551
- "name": "sumInsuredAmount",
652
+ "name": "availableAmount",
552
653
  "type": "uint96"
553
654
  }
554
655
  ],
555
- "name": "calculateRequiredCollateral",
556
- "outputs": [
656
+ "name": "LogPoolServiceProcessFundedClaim",
657
+ "type": "event"
658
+ },
659
+ {
660
+ "anonymous": false,
661
+ "inputs": [
662
+ {
663
+ "indexed": false,
664
+ "internalType": "NftId",
665
+ "name": "poolNftId",
666
+ "type": "uint96"
667
+ },
557
668
  {
669
+ "indexed": false,
670
+ "internalType": "NftId",
671
+ "name": "bundleNftId",
672
+ "type": "uint96"
673
+ },
674
+ {
675
+ "indexed": false,
558
676
  "internalType": "Amount",
559
- "name": "totalCollateralAmount",
677
+ "name": "bundleNetAmount",
560
678
  "type": "uint96"
561
679
  },
562
680
  {
681
+ "indexed": false,
563
682
  "internalType": "Amount",
564
- "name": "localCollateralAmount",
683
+ "name": "bundleFeeAmount",
684
+ "type": "uint96"
685
+ },
686
+ {
687
+ "indexed": false,
688
+ "internalType": "Amount",
689
+ "name": "poolFeeAmount",
565
690
  "type": "uint96"
566
691
  }
567
692
  ],
568
- "stateMutability": "pure",
569
- "type": "function"
693
+ "name": "LogPoolServiceSaleProcessed",
694
+ "type": "event"
570
695
  },
571
696
  {
697
+ "anonymous": false,
572
698
  "inputs": [
573
699
  {
574
- "internalType": "contract InstanceReader",
575
- "name": "instanceReader",
576
- "type": "address"
577
- },
578
- {
700
+ "indexed": false,
579
701
  "internalType": "NftId",
580
- "name": "productNftId",
702
+ "name": "poolNftId",
581
703
  "type": "uint96"
582
704
  },
583
705
  {
706
+ "indexed": false,
707
+ "internalType": "address",
708
+ "name": "poolOwner",
709
+ "type": "address"
710
+ },
711
+ {
712
+ "indexed": false,
584
713
  "internalType": "Amount",
585
- "name": "sumInsuredAmount",
714
+ "name": "amount",
586
715
  "type": "uint96"
587
716
  }
588
717
  ],
589
- "name": "calculateRequiredCollateral",
590
- "outputs": [
718
+ "name": "LogPoolServiceWalletDefunded",
719
+ "type": "event"
720
+ },
721
+ {
722
+ "anonymous": false,
723
+ "inputs": [
591
724
  {
725
+ "indexed": false,
592
726
  "internalType": "NftId",
593
727
  "name": "poolNftId",
594
728
  "type": "uint96"
595
729
  },
596
730
  {
597
- "internalType": "Amount",
598
- "name": "totalCollateralAmount",
599
- "type": "uint96"
731
+ "indexed": false,
732
+ "internalType": "address",
733
+ "name": "poolOwner",
734
+ "type": "address"
600
735
  },
601
736
  {
737
+ "indexed": false,
602
738
  "internalType": "Amount",
603
- "name": "localCollateralAmount",
739
+ "name": "amount",
604
740
  "type": "uint96"
605
- },
741
+ }
742
+ ],
743
+ "name": "LogPoolServiceWalletFunded",
744
+ "type": "event"
745
+ },
746
+ {
747
+ "inputs": [],
748
+ "name": "NFT_OWNABLE_STORAGE_LOCATION_V1",
749
+ "outputs": [
606
750
  {
607
- "internalType": "bool",
608
- "name": "poolIsVerifyingApplications",
609
- "type": "bool"
751
+ "internalType": "bytes32",
752
+ "name": "",
753
+ "type": "bytes32"
754
+ }
755
+ ],
756
+ "stateMutability": "view",
757
+ "type": "function"
758
+ },
759
+ {
760
+ "inputs": [],
761
+ "name": "REGISTERABLE_LOCATION_V1",
762
+ "outputs": [
763
+ {
764
+ "internalType": "bytes32",
765
+ "name": "",
766
+ "type": "bytes32"
767
+ }
768
+ ],
769
+ "stateMutability": "view",
770
+ "type": "function"
771
+ },
772
+ {
773
+ "inputs": [],
774
+ "name": "authority",
775
+ "outputs": [
776
+ {
777
+ "internalType": "address",
778
+ "name": "",
779
+ "type": "address"
610
780
  }
611
781
  ],
612
782
  "stateMutability": "view",
@@ -763,7 +933,7 @@
763
933
  "type": "uint8"
764
934
  }
765
935
  ],
766
- "stateMutability": "pure",
936
+ "stateMutability": "view",
767
937
  "type": "function"
768
938
  },
769
939
  {
@@ -776,7 +946,7 @@
776
946
  "type": "uint64"
777
947
  }
778
948
  ],
779
- "stateMutability": "pure",
949
+ "stateMutability": "view",
780
950
  "type": "function"
781
951
  },
782
952
  {
@@ -812,12 +982,12 @@
812
982
  },
813
983
  {
814
984
  "inputs": [],
815
- "name": "isConsumingScheduledOp",
985
+ "name": "isActive",
816
986
  "outputs": [
817
987
  {
818
- "internalType": "bytes4",
819
- "name": "",
820
- "type": "bytes4"
988
+ "internalType": "bool",
989
+ "name": "active",
990
+ "type": "bool"
821
991
  }
822
992
  ],
823
993
  "stateMutability": "view",
@@ -825,86 +995,27 @@
825
995
  },
826
996
  {
827
997
  "inputs": [],
828
- "name": "linkToRegisteredNftId",
998
+ "name": "isConsumingScheduledOp",
829
999
  "outputs": [
830
1000
  {
831
- "internalType": "NftId",
832
- "name": "nftId",
833
- "type": "uint96"
1001
+ "internalType": "bytes4",
1002
+ "name": "",
1003
+ "type": "bytes4"
834
1004
  }
835
1005
  ],
836
- "stateMutability": "nonpayable",
1006
+ "stateMutability": "view",
837
1007
  "type": "function"
838
1008
  },
839
1009
  {
840
- "inputs": [
841
- {
842
- "internalType": "contract IInstance",
843
- "name": "instance",
844
- "type": "address"
845
- },
846
- {
847
- "internalType": "address",
848
- "name": "token",
849
- "type": "address"
850
- },
851
- {
852
- "internalType": "NftId",
853
- "name": "productNftId",
854
- "type": "uint96"
855
- },
856
- {
857
- "internalType": "NftId",
858
- "name": "applicationNftId",
859
- "type": "uint96"
860
- },
861
- {
862
- "internalType": "NftId",
863
- "name": "bundleNftId",
864
- "type": "uint96"
865
- },
866
- {
867
- "internalType": "Amount",
868
- "name": "sumInsuredAmount",
869
- "type": "uint96"
870
- }
871
- ],
872
- "name": "lockCollateral",
1010
+ "inputs": [],
1011
+ "name": "linkToRegisteredNftId",
873
1012
  "outputs": [
874
- {
875
- "internalType": "Amount",
876
- "name": "totalCollateralAmount",
877
- "type": "uint96"
878
- },
879
- {
880
- "internalType": "Amount",
881
- "name": "localCollateralAmount",
882
- "type": "uint96"
883
- }
884
- ],
885
- "stateMutability": "nonpayable",
886
- "type": "function"
887
- },
888
- {
889
- "inputs": [
890
1013
  {
891
1014
  "internalType": "NftId",
892
- "name": "policyNftId",
893
- "type": "uint96"
894
- },
895
- {
896
- "internalType": "ClaimId",
897
- "name": "claimId",
898
- "type": "uint16"
899
- },
900
- {
901
- "internalType": "Amount",
902
- "name": "availableAmount",
1015
+ "name": "nftId",
903
1016
  "type": "uint96"
904
1017
  }
905
1018
  ],
906
- "name": "processFundedClaim",
907
- "outputs": [],
908
1019
  "stateMutability": "nonpayable",
909
1020
  "type": "function"
910
1021
  },
@@ -922,104 +1033,120 @@
922
1033
  },
923
1034
  {
924
1035
  "internalType": "NftId",
925
- "name": "policyNftId",
1036
+ "name": "productNftId",
926
1037
  "type": "uint96"
927
1038
  },
928
1039
  {
929
- "components": [
930
- {
931
- "internalType": "NftId",
932
- "name": "productNftId",
933
- "type": "uint96"
934
- },
935
- {
936
- "internalType": "NftId",
937
- "name": "bundleNftId",
938
- "type": "uint96"
939
- },
940
- {
941
- "internalType": "ReferralId",
942
- "name": "referralId",
943
- "type": "bytes8"
944
- },
945
- {
946
- "internalType": "RiskId",
947
- "name": "riskId",
948
- "type": "bytes8"
949
- },
950
- {
951
- "internalType": "Amount",
952
- "name": "sumInsuredAmount",
953
- "type": "uint96"
954
- },
955
- {
956
- "internalType": "Amount",
957
- "name": "premiumAmount",
958
- "type": "uint96"
959
- },
960
- {
961
- "internalType": "Seconds",
962
- "name": "lifetime",
963
- "type": "uint40"
964
- },
965
- {
966
- "internalType": "bytes",
967
- "name": "applicationData",
968
- "type": "bytes"
969
- },
970
- {
971
- "internalType": "bytes",
972
- "name": "processData",
973
- "type": "bytes"
974
- },
975
- {
976
- "internalType": "uint16",
977
- "name": "claimsCount",
978
- "type": "uint16"
979
- },
980
- {
981
- "internalType": "uint16",
982
- "name": "openClaimsCount",
983
- "type": "uint16"
984
- },
985
- {
986
- "internalType": "Amount",
987
- "name": "claimAmount",
988
- "type": "uint96"
989
- },
990
- {
991
- "internalType": "Amount",
992
- "name": "payoutAmount",
993
- "type": "uint96"
994
- },
995
- {
996
- "internalType": "Timestamp",
997
- "name": "activatedAt",
998
- "type": "uint40"
999
- },
1000
- {
1001
- "internalType": "Timestamp",
1002
- "name": "expiredAt",
1003
- "type": "uint40"
1004
- },
1005
- {
1006
- "internalType": "Timestamp",
1007
- "name": "closedAt",
1008
- "type": "uint40"
1009
- }
1010
- ],
1011
- "internalType": "struct IPolicy.PolicyInfo",
1012
- "name": "policyInfo",
1013
- "type": "tuple"
1040
+ "internalType": "NftId",
1041
+ "name": "applicationNftId",
1042
+ "type": "uint96"
1043
+ },
1044
+ {
1045
+ "internalType": "NftId",
1046
+ "name": "bundleNftId",
1047
+ "type": "uint96"
1048
+ },
1049
+ {
1050
+ "internalType": "Amount",
1051
+ "name": "sumInsuredAmount",
1052
+ "type": "uint96"
1053
+ }
1054
+ ],
1055
+ "name": "lockCollateral",
1056
+ "outputs": [
1057
+ {
1058
+ "internalType": "Amount",
1059
+ "name": "totalCollateralAmount",
1060
+ "type": "uint96"
1061
+ },
1062
+ {
1063
+ "internalType": "Amount",
1064
+ "name": "localCollateralAmount",
1065
+ "type": "uint96"
1066
+ }
1067
+ ],
1068
+ "stateMutability": "nonpayable",
1069
+ "type": "function"
1070
+ },
1071
+ {
1072
+ "inputs": [
1073
+ {
1074
+ "internalType": "NftId",
1075
+ "name": "policyNftId",
1076
+ "type": "uint96"
1077
+ },
1078
+ {
1079
+ "internalType": "ClaimId",
1080
+ "name": "claimId",
1081
+ "type": "uint16"
1082
+ },
1083
+ {
1084
+ "internalType": "Amount",
1085
+ "name": "availableAmount",
1086
+ "type": "uint96"
1087
+ }
1088
+ ],
1089
+ "name": "processFundedClaim",
1090
+ "outputs": [],
1091
+ "stateMutability": "nonpayable",
1092
+ "type": "function"
1093
+ },
1094
+ {
1095
+ "inputs": [
1096
+ {
1097
+ "internalType": "contract InstanceReader",
1098
+ "name": "instanceReader",
1099
+ "type": "address"
1100
+ },
1101
+ {
1102
+ "internalType": "contract InstanceStore",
1103
+ "name": "instanceStore",
1104
+ "type": "address"
1105
+ },
1106
+ {
1107
+ "internalType": "NftId",
1108
+ "name": "productNftId",
1109
+ "type": "uint96"
1110
+ },
1111
+ {
1112
+ "internalType": "NftId",
1113
+ "name": "policyNftId",
1114
+ "type": "uint96"
1115
+ },
1116
+ {
1117
+ "internalType": "NftId",
1118
+ "name": "bundleNftId",
1119
+ "type": "uint96"
1120
+ },
1121
+ {
1122
+ "internalType": "PayoutId",
1123
+ "name": "payoutId",
1124
+ "type": "uint40"
1014
1125
  },
1015
1126
  {
1016
1127
  "internalType": "Amount",
1017
1128
  "name": "payoutAmount",
1018
1129
  "type": "uint96"
1130
+ },
1131
+ {
1132
+ "internalType": "address",
1133
+ "name": "payoutBeneficiary",
1134
+ "type": "address"
1019
1135
  }
1020
1136
  ],
1021
1137
  "name": "processPayout",
1022
- "outputs": [],
1138
+ "outputs": [
1139
+ {
1140
+ "internalType": "Amount",
1141
+ "name": "netPayoutAmount",
1142
+ "type": "uint96"
1143
+ },
1144
+ {
1145
+ "internalType": "Amount",
1146
+ "name": "processingFeeAmount",
1147
+ "type": "uint96"
1148
+ }
1149
+ ],
1023
1150
  "stateMutability": "nonpayable",
1024
1151
  "type": "function"
1025
1152
  },
@@ -1140,11 +1267,6 @@
1140
1267
  "name": "instance",
1141
1268
  "type": "address"
1142
1269
  },
1143
- {
1144
- "internalType": "address",
1145
- "name": "token",
1146
- "type": "address"
1147
- },
1148
1270
  {
1149
1271
  "internalType": "NftId",
1150
1272
  "name": "policyNftId",
@@ -1162,11 +1284,6 @@
1162
1284
  "name": "bundleNftId",
1163
1285
  "type": "uint96"
1164
1286
  },
1165
- {
1166
- "internalType": "ReferralId",
1167
- "name": "referralId",
1168
- "type": "bytes8"
1169
- },
1170
1287
  {
1171
1288
  "internalType": "RiskId",
1172
1289
  "name": "riskId",
@@ -1183,19 +1300,9 @@
1183
1300
  "type": "uint96"
1184
1301
  },
1185
1302
  {
1186
- "internalType": "Seconds",
1187
- "name": "lifetime",
1188
- "type": "uint40"
1189
- },
1190
- {
1191
- "internalType": "bytes",
1192
- "name": "applicationData",
1193
- "type": "bytes"
1194
- },
1195
- {
1196
- "internalType": "bytes",
1197
- "name": "processData",
1198
- "type": "bytes"
1303
+ "internalType": "ReferralId",
1304
+ "name": "referralId",
1305
+ "type": "bytes8"
1199
1306
  },
1200
1307
  {
1201
1308
  "internalType": "uint16",
@@ -1222,6 +1329,11 @@
1222
1329
  "name": "activatedAt",
1223
1330
  "type": "uint40"
1224
1331
  },
1332
+ {
1333
+ "internalType": "Seconds",
1334
+ "name": "lifetime",
1335
+ "type": "uint40"
1336
+ },
1225
1337
  {
1226
1338
  "internalType": "Timestamp",
1227
1339
  "name": "expiredAt",
@@ -1231,6 +1343,16 @@
1231
1343
  "internalType": "Timestamp",
1232
1344
  "name": "closedAt",
1233
1345
  "type": "uint40"
1346
+ },
1347
+ {
1348
+ "internalType": "bytes",
1349
+ "name": "applicationData",
1350
+ "type": "bytes"
1351
+ },
1352
+ {
1353
+ "internalType": "bytes",
1354
+ "name": "processData",
1355
+ "type": "bytes"
1234
1356
  }
1235
1357
  ],
1236
1358
  "internalType": "struct IPolicy.PolicyInfo",
@@ -1348,24 +1470,92 @@
1348
1470
  "outputs": [],
1349
1471
  "stateMutability": "nonpayable",
1350
1472
  "type": "function"
1473
+ },
1474
+ {
1475
+ "inputs": [
1476
+ {
1477
+ "internalType": "NftId",
1478
+ "name": "bundleNftId",
1479
+ "type": "uint96"
1480
+ },
1481
+ {
1482
+ "internalType": "Amount",
1483
+ "name": "amount",
1484
+ "type": "uint96"
1485
+ }
1486
+ ],
1487
+ "name": "withdrawBundleFees",
1488
+ "outputs": [
1489
+ {
1490
+ "internalType": "Amount",
1491
+ "name": "withdrawnAmount",
1492
+ "type": "uint96"
1493
+ }
1494
+ ],
1495
+ "stateMutability": "nonpayable",
1496
+ "type": "function"
1351
1497
  }
1352
1498
  ],
1353
- "bytecode": "0x6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b615c3d806100d65f395ff3fe608060405234801561000f575f80fd5b50600436106101dc575f3560e01c806376b707b711610109578063ada9652e1161009e578063d0d63b091161006e578063d0d63b09146104b2578063db02f7d3146104c5578063e1f216fa146104d8578063fb3bcd1f146104eb575f80fd5b8063ada9652e1461047c578063b68d180914610490578063bca99e3914610497578063bf7e214f146104aa575f80fd5b80638899278a116100d95780638899278a14610438578063893d20e8146104405780638e4a508e146104485780638fb360371461045b575f80fd5b806376b707b7146103b05780637a9e5e4b146103ca57806384a710fa146103dd57806384d1f7cf14610425575f80fd5b8063329d6e741161017f578063644c45e01161014f578063644c45e01461032d5780636c1e9dff1461034a5780636c741e781461035d5780637225ed011461037d575f80fd5b8063329d6e74146102cf57806332f9f3df146102e257806349bb9e4b146102f55780635ab1bd5314610308575f80fd5b8063138461e0116101ba578063138461e0146102525780631eff4b221461027257806326889b09146102a7578063329c71c0146102ba575f80fd5b806301ffc9a7146101e05780630d8e6e2c146102215780630fec111c1461023d575b5f80fd5b61020c6101ee3660046146be565b6001600160e01b0319165f9081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6102296104fe565b60405162ffffff9091168152602001610218565b610245610585565b6040516102189190614713565b61025a610743565b6040516001600160601b039091168152602001610218565b6102997f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610218565b61025a6102b53660046147cb565b61074d565b6102cd6102c8366004614802565b610c1e565b005b6102cd6102dd3660046149ae565b610dff565b6102cd6102f0366004614bb7565b610f49565b6102cd610303366004614c27565b6110c8565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610218565b5f80516020615ba8833981519152546001600160601b031661025a565b61025a6103583660046147cb565b6111c4565b610365611881565b6040516001600160401b039091168152602001610218565b61039061038b366004614c73565b61190d565b604080516001600160601b03938416815292909116602083015201610218565b6103b8611b87565b60405160ff9091168152602001610218565b6102cd6103d8366004614ca9565b611bfb565b6103f06103eb366004614cc4565b611c81565b60405161021894939291906001600160601b039485168152928416602084015292166040820152901515606082015260800190565b610390610433366004614d01565b611da5565b610299600381565b610315612099565b6102cd610456366004614802565b6121ca565b6104636123a4565b6040516001600160e01b03199091168152602001610218565b6102995f80516020615ba883398151915281565b600f6103b8565b6102cd6104a5366004614802565b6123d9565b6103156125e7565b6102cd6104c0366004614802565b612602565b6102cd6104d3366004614d7f565b612b61565b6102cd6104e6366004614e03565b612f77565b6102cd6104f9366004614e30565b613304565b604051632efe011360e01b8152600360048201525f60248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af415801561055c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105809190614fba565b905090565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091525f7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610635573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106599190614fe7565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a0016106a1612099565b6001600160a01b031681526020018260010180546106be90615002565b80601f01602080910402602001604051908101604052809291908181526020018280546106ea90615002565b80156107355780601f1061070c57610100808354040283529160200191610735565b820191905f5260205f20905b81548152906001019060200180831161071857829003601f168201915b505050505081525091505090565b5f610580306135b5565b5f61075983601f6137ae565b5f80610763613865565b915091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107c8919061503a565b90505f826001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610807573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082b919061503a565b604051634793b4ab60e01b81526001600160601b03891660048201529091505f906001600160a01b03841690634793b4ab906024015f60405180830381865afa15801561087a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108a19190810190615100565b90506108b0815f015186613924565b156108e657604051630a49ea2360e01b81526001600160601b03808a166004830152861660248201526044015b60405180910390fd5b600254604051631696791160e11b81526001600160a01b0386811660048301526001600160601b03808c1660248401528a1660448301525f921690632d2cf222906064016020604051808303815f875af1158015610946573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061096a9190614fe7565b905080965060035f9054906101000a90046001600160a01b03166001600160a01b03166389fad8a284888473__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156109dc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a009190614fe7565b6040518563ffffffff1660e01b8152600401610a1f94939291906151c4565b5f604051808303815f87803b158015610a36575f80fd5b505af1158015610a48573d5f803e3d5ffd5b505050507f1486849121d5ae771349472444bdddfe08862a6644665b5fd7ed4cf14a51db78856001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aa9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610acd9190614fe7565b604080516001600160601b03928316815289831660208201528c8316818301528483166060820152918a166080830152519081900360a00190a16040516357f80bbf60e01b81526001600160601b03871660048201526001600160a01b038516906357f80bbf9060240160e060405180830381865afa158015610b52573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b769190615205565b60600151610c12575f610b916001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038c1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015610bde573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c02919061503a565b9050610c108588838b6139b0565b505b50505050505092915050565b5f80610c28613865565b915091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c8d919061503a565b6040516357f80bbf60e01b81526001600160601b03851660048201529091506001600160a01b038216906357f80bbf9060240160e060405180830381865afa158015610cdb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cff9190615205565b60600151610d2b5760405163664958ad60e01b81526001600160601b03841660048201526024016108dd565b5f610d3e6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03861660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015610d8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610daf919061503a565b90507ff93784364e35bd9d02fb31e12793254279ee0381ed65b4fa39ee297b22fdd79a848287604051610de493929190615298565b60405180910390a1610df8828583886139b0565b5050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c610e216104fe565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610e5f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e8391906152d8565b5f80516020615be88339815191528054600160401b900460ff1680610eb5575080546001600160401b03808416911610155b15610ed35760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610efd83613b04565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b610f55335b5f36613b0c565b610f608260156137ae565b5f610f748260800151836101600151613c02565b600254602084015160405163ad328d9f60e01b81529293506001600160a01b039091169163ad328d9f91610fb0918991889187906004016151c4565b5f604051808303815f87803b158015610fc7575f80fd5b505af1158015610fd9573d5f803e3d5ffd5b5050505060045f9054906101000a90046001600160a01b03166001600160a01b031663d44f8a4b866001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561103c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110609190614fe7565b86846040518463ffffffff1660e01b815260040161108093929190615298565b6020604051808303815f875af115801561109c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c09190614fe7565b505050505050565b5f80516020615be88339815191528054600160401b810460ff1615906001600160401b03165f811580156110f95750825b90505f826001600160401b031660011480156111145750303b155b905081158015611122575080155b156111405760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561116a57845460ff60401b1916600160401b1785555b6111748787613c87565b83156111bb57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b5f6111d083601f6137ae565b5f806111da613865565b915091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561121b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123f919061503a565b604051634793b4ab60e01b81526001600160601b03881660048201529091505f906001600160a01b03831690634793b4ab906024015f60405180830381865afa15801561128e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526112b59190810190615100565b6040516357f80bbf60e01b81526001600160601b03861660048201529091505f906001600160a01b038416906357f80bbf9060240160e060405180830381865afa158015611305573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113299190615205565b9050611338825f015186613924565b1561136957604051630a49ea2360e01b81526001600160601b03808a166004830152861660248201526044016108dd565b6040516308a390bb60e21b81526001600160601b03861660048201525f906001600160a01b0385169063228e42ec90602401602060405180830381865afa1580156113b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113da9190614fe7565b90506113f06113e9828a613e75565b8351613ebf565b1561143457815160405163b806175d60e01b81526001600160601b0380891660048301529182166024820152818316604482015290891660648201526084016108dd565b505f6114486001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03881660048201529091505f9081906001600160a01b0384169063a48f42e0906024015f60405180830381865afa158015611499573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526114c091908101906153b6565b602001516040516302d764c760e21b81526001600160601b03821660048201529091505f906001600160a01b03881690630b5d931c906024015f60405180830381865afa158015611513573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261153a919081019061546f565b6101a00151604051634f69237560e11b815281516004820152602082015160248201526001600160601b038d16604482015290915073__$58e11c6004c5796aaa8c56e718245e69a2$__90639ed246ea906064016040805180830381865af41580156115a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115cc91906155dd565b60035460408051631a99b41b60e31b81529051929d509295506001600160a01b03908116945063d56cd3d593508a169163d4cda0d89160048083019260209291908290030181865afa158015611624573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611648919061503a565b898b856040518563ffffffff1660e01b815260040161166a94939291906151c4565b5f604051808303815f87803b158015611681575f80fd5b505af1158015611693573d5f803e3d5ffd5b50506002546040516325fa796b60e01b81526001600160a01b0390911692506325fa796b91506116f09089908e908d906004016001600160a01b039390931683526001600160601b03918216602084015216604082015260600190565b5f604051808303815f87803b158015611707575f80fd5b505af1158015611719573d5f803e3d5ffd5b505050507fa397b0d38fe748a8c29cce53eab5736ef0c29c156e7a9586ae8b88a8557b4145866001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561177a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061179e9190614fe7565b604080516001600160601b0392831681528a831660208201528d8316818301528c83166060820152918b166080830152519081900360a00190a18260600151610c10575f6117f46001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038d1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611841573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611865919061503a565b90506118738689838d613f09565b505050505050505092915050565b5f73__$1d92393fa9ccd763988368ce8a1cb90d26$__63dda777d3600f6118a6611b87565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865af41580156118e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061058091906152d8565b6040516355205f0f60e01b81526001600160601b03821660048201525f908190819061199890879073__$3bac17678db7ae928afa209f2f44deec9c$__906355205f0f90602401602060405180830381865af415801561196f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611993919061560a565b613fc1565b604051632255341b60e11b81526004810182905290915073__$3bac17678db7ae928afa209f2f44deec9c$__90634c41dd969073__$bf7bc340cbb9229ef1de2c568356e67902$__906344aa683690602401602060405180830381865af4158015611a05573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a29919061560a565b6040518263ffffffff1660e01b8152600401611a4791815260200190565b602060405180830381865af4158015611a62573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a869190614fe7565b925073__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd96611aac8784613fc1565b604051632255341b60e11b8152600481019190915273__$bf7bc340cbb9229ef1de2c568356e67902$__906344aa683690602401602060405180830381865af4158015611afb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b1f919061560a565b6040518263ffffffff1660e01b8152600401611b3d91815260200190565b602060405180830381865af4158015611b58573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7c9190614fe7565b915050935093915050565b604051632392b61b60e21b8152600360048201525f9073__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af4158015611bd7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105809190615621565b33611c046125e7565b6001600160a01b0316816001600160a01b031614611c3f5760405162d1953b60e31b81526001600160a01b03821660048201526024016108dd565b816001600160a01b03163b5f03611c74576040516361798f2f60e11b81526001600160a01b03831660048201526024016108dd565b611c7d82613fd5565b5050565b5f808080611c9086600c6137ae565b6040516302d764c760e21b81526001600160601b03871660048201526001600160a01b03881690630b5d931c906024015f60405180830381865afa158015611cda573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d01919081019061546f565b60a001516040516357f80bbf60e01b81526001600160601b03821660048201529094505f906001600160a01b038916906357f80bbf9060240160e060405180830381865afa158015611d55573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d799190615205565b905080608001519150611d958160a001518260c001518861190d565b9599909850949650909450505050565b5f80611db033610f4e565b611dbb86600c6137ae565b611dc68560156137ae565b611dd184601f6137ae565b5f80611e3d8a6001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e36919061503a565b8987611c81565b600254604051634adcf90960e01b81529398509196509294509192506001600160a01b0390911690634adcf90990611e7f908d908b908b9089906004016151c4565b5f604051808303815f87803b158015611e96575f80fd5b505af1158015611ea8573d5f803e3d5ffd5b5050505060045f9054906101000a90046001600160a01b03166001600160a01b031663ea48ce9b8b6001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f0b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f2f9190614fe7565b8b876040518463ffffffff1660e01b8152600401611f4f93929190615298565b6020604051808303815f875af1158015611f6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f8f9190614fe7565b50801561208c575f611fa96001546001600160a01b031690565b60405163bf8e179760e01b81526001600160601b03851660048201526001600160a01b03919091169063bf8e179790602401602060405180830381865afa158015611ff6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061201a919061503a565b604051634deed57960e01b81526001600160601b03808b166004830152808a166024830152871660448201529091506001600160a01b03821690634deed579906064015f604051808303815f87803b158015612074575f80fd5b505af1158015612086573d5f803e3d5ffd5b50505050505b5050965096945050505050565b5f805f80516020615ba883398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015612105573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612129919061563c565b156121b4576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa15801561218a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121ae919061503a565b91505090565b54600160601b90046001600160a01b0316919050565b5f806121d4613865565b915091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612215573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612239919061503a565b6040516357f80bbf60e01b81526001600160601b03851660048201529091506001600160a01b038216906357f80bbf9060240160e060405180830381865afa158015612287573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122ab9190615205565b606001516122d75760405163664958ad60e01b81526001600160601b03841660048201526024016108dd565b5f6122ea6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03861660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612337573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061235b919061503a565b90507f67e4007a2396f32c2c58b0546d5dc80e8097a965b3de4127c33f3610864416bd84828760405161239093929190615298565b60405180910390a1610df882858388613f09565b5f80516020615bc883398151915280545f9190600160a01b900460ff166123cb575f6121ae565b638fb3603760e01b91505090565b5f806123e3613865565b915091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612424573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612448919061503a565b6040516357f80bbf60e01b81526001600160601b03851660048201529091505f906001600160a01b038316906357f80bbf9060240160e060405180830381865afa158015612498573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124bc9190615205565b80516001600160601b038716825260408051631a99b41b60e31b8152905192935090916001600160a01b0386169163d4cda0d89160048083019260209291908290030181865afa158015612512573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612536919061503a565b6001600160a01b03166328802681868460ff6040518463ffffffff1660e01b815260040161256693929190615655565b5f604051808303815f87803b15801561257d575f80fd5b505af115801561258f573d5f803e3d5ffd5b5050604080516001600160601b03898116825285811660208301528a168183015290517f59c52d680289bf3ed1eaf8c98c2385d021cbc74043dd1ed596d6383f63235ffc9350908190036060019150a1505050505050565b5f80516020615bc8833981519152546001600160a01b031690565b61260d81601f6137ae565b5f80612617613865565b600254604051632aa6b2cb60e21b81526001600160a01b0380841660048301526001600160601b03881660248301529395509193505f92839291169063aa9acb2c9060440160408051808303815f875af1158015612677573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061269b91906155dd565b9150915060035f9054906101000a90046001600160a01b03166001600160a01b03166389fad8a2846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126fe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612722919061503a565b8661272d8686613e75565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015612774573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127989190614fe7565b6040518563ffffffff1660e01b81526004016127b794939291906151c4565b5f604051808303815f87803b1580156127ce575f80fd5b505af11580156127e0573d5f803e3d5ffd5b505050507f64c75a4392ba38fee1b5a44b61e3dd0cae424d2d43eb2b0c99772efe31e1c042836001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612841573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128659190614fe7565b604080516001600160601b03928316815282881660208201529188169082015260600160405180910390a161289a8282613e75565b6040516330b8415f60e01b81526001600160601b03909116600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af41580156128f1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612915919061563c565b15610df8575f836001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612957573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061297b919061503a565b60405163f0ea17c360e01b81526001600160601b03871660048201526001600160a01b03919091169063f0ea17c3906024015f60405180830381865afa1580156129c7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526129ee91908101906156cd565b905080604001516001600160a01b03166354f0d84c82604001516001600160a01b031663132996046040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a67919061503a565b6001546001600160a01b0316604051631c5da14d60e11b81526001600160601b038b1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612ac0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ae4919061503a565b612aee8787613e75565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526001600160601b031660448201526064015f604051808303815f87803b158015612b43575f80fd5b505af1158015612b55573d5f803e3d5ffd5b50505050505050505050565b612b6a33610f4e565b612b758360156137ae565b60208201515f612b8d6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa158015612bd9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612c0091908101906153b6565b6020015190505f876001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c67919061503a565b905060035f9054906101000a90046001600160a01b03166001600160a01b03166389fad8a282848773__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015612cd6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cfa9190614fe7565b6040518563ffffffff1660e01b8152600401612d1994939291906151c4565b5f604051808303815f87803b158015612d30575f80fd5b505af1158015612d42573d5f803e3d5ffd5b5050505060035f9054906101000a90046001600160a01b03166001600160a01b031663e618053f82858773__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015612db3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dd79190614fe7565b6040518563ffffffff1660e01b8152600401612df694939291906151c4565b5f604051808303815f87803b158015612e0d575f80fd5b505af1158015612e1f573d5f803e3d5ffd5b5050600254602088015160405163ad328d9f60e01b81526001600160a01b03909216935063ad328d9f9250612e5c918c918b918a906004016151c4565b5f604051808303815f87803b158015612e73575f80fd5b505af1158015612e85573d5f803e3d5ffd5b5050505060045f9054906101000a90046001600160a01b03166001600160a01b031663d44f8a4b896001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ee8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f0c9190614fe7565b89876040518463ffffffff1660e01b8152600401612f2c93929190615298565b6020604051808303815f875af1158015612f48573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f6c9190614fe7565b505050505050505050565b612f828360156137ae565b5f80612f8c613865565b915091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fcd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ff1919061503a565b90505f6130066001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03861660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa158015613052573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261307991908101906153b6565b6020015160405163bd7d9d8560e01b81526001600160601b03891660048201529091505f906001600160a01b0384169063bd7d9d85906024015f60405180830381865afa1580156130cc573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526130f391908101906157ac565b9050613102815f015183613924565b1561313e578051604051636083e75360e01b81526001600160601b03808b166004830152918216602482015290831660448201526064016108dd565b604080516001600160601b038a8116825261ffff8a16602083015288168183015290517f6a2b4f9e8a4bb9038617a047352d25c5ac3c64c4aaba95e576b978a91b6666fb9181900360600190a16040516302d764c760e21b81526001600160601b03831660048201526001600160a01b03841690630b5d931c906024015f60405180830381865afa1580156131d5573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526131fc919081019061546f565b51156132fa575f6132156001546001600160a01b031690565b60405163bf8e179760e01b81526001600160601b03851660048201526001600160a01b03919091169063bf8e179790602401602060405180830381865afa158015613262573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613286919061503a565b6040516370f90b7d60e11b81526001600160601b03808c16600483015261ffff8b166024830152891660448201529091506001600160a01b0382169063e1f216fa906064015f604051808303815f87803b1580156132e2575f80fd5b505af11580156132f4573d5f803e3d5ffd5b50505050505b5050505050505050565b61330d33610f4e565b61331882601f6137ae565b5f61332b6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03851660048201529091505f906001600160a01b0383169063a48f42e0906024015f60405180830381865afa15801561337a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526133a191908101906153b6565b6020015160405163c52721a360e01b81526001600160a01b03841660048201526001600160601b0382166024820152600160448201529091505f9073__$fb599632d08395912d9d70eb2f0f93b5e2$__9063c52721a3906064015f60405180830381865af4158015613415573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261343c919081019061593f565b9150505f8190505f6134578660e00151876101600151613e75565b90505f61346e876101000151886101800151613e75565b90505f876060015190505f846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134d9919061503a565b6003549091506001600160a01b031663d56cd3d582896134f98688613e75565b886040518563ffffffff1660e01b815260040161351994939291906151c4565b5f604051808303815f87803b158015613530575f80fd5b505af1158015613542573d5f803e3d5ffd5b50506003546040516325e451d360e01b81526001600160a01b0390911692506325e451d3915061357c9084908e90879089906004016151c4565b5f604051808303815f87803b158015613593575f80fd5b505af11580156135a5573d5f803e3d5ffd5b5050505050505050505050505050565b5f805f80516020615ba883398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015613621573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613645919061563c565b156136715780546040516301ab8b6760e21b81526001600160601b0390911660048201526024016108dd565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa1580156136c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e7919061563c565b61370f5760405163b9304b0d60e01b81526001600160a01b03841660048201526024016108dd565b6001546001600160a01b0316604051632f2a35f760e11b81526001600160a01b0385811660048301529190911690635e546bee90602401602060405180830381865afa158015613761573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137859190614fe7565b81546bffffffffffffffffffffffff19166001600160601b039190911690811790915592915050565b6001546001600160a01b0316604051635b12715d60e11b81526001600160601b038416600482015260ff831660248201526001600160a01b03919091169063b624e2ba90604401602060405180830381865afa158015613810573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613834919061563c565b611c7d5760405163d711af7560e01b81526001600160601b038316600482015260ff821660248201526044016108dd565b5f805f8073__$fb599632d08395912d9d70eb2f0f93b5e2$__635c990ed36138956001546001600160a01b031690565b33600f6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260ff166044820152600160648201526084015f60405180830381865af41580156138f1573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613918919081019061593f565b90519590945092505050565b6040516399009c5160e01b81526001600160601b038084166004830152821660248201525f9073__$94a2c899be079b00d952d0d84fffaa5c34$__906399009c51906044015b602060405180830381865af4158015613985573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139a9919061563c565b9392505050565b60405163f0ea17c360e01b81526001600160601b03841660048201525f906001600160a01b0386169063f0ea17c3906024015f60405180830381865afa1580156139fc573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613a2391908101906156cd565b905080604001516001600160a01b03166354f0d84c82604001516001600160a01b031663132996046040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a78573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a9c919061503a565b6040516001600160e01b031960e084901b1681526001600160a01b03918216600482015290861660248201526001600160601b03851660448201526064015b5f604051808303815f87803b158015613af2575f80fd5b505af1158015612f6c573d5f803e3d5ffd5b6101dc614035565b5f80516020615bc88339815191525f80613b44613b276125e7565b8730613b3660045f8a8c615982565b613b3f916159a9565b61406d565b91509150816110c05763ffffffff811615613bdf57825460ff60a01b1916600160a01b178355613b726125e7565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b8152600401613ba1939291906159e1565b5f604051808303815f87803b158015613bb8575f80fd5b505af1158015613bca573d5f803e3d5ffd5b5050845460ff60a01b19168555506110c09050565b60405162d1953b60e31b81526001600160a01b03871660048201526024016108dd565b6040516363cf551160e11b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063c79eaa22906044015b602060405180830381865af4158015613c63573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139a99190614fe7565b5f80516020615be88339815191528054600160401b810460ff1615906001600160401b03165f81158015613cb85750825b90505f826001600160401b03166001148015613cd35750303b155b905081158015613ce1575080155b15613cff5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315613d2957845460ff60401b1916600160401b1785555b5f8087806020019051810190613d3f9190615a20565b91509150613d4e82828b614175565b613d58601f6142ba565b600280546001600160a01b0319166001600160a01b0392909216919091179055613d82600b6142ba565b600380546001600160a01b0319166001600160a01b03928316179055600154166001600160a01b0316630e9ed68b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ddd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e01919061503a565b600480546001600160a01b0319166001600160a01b0392909216919091179055613e31631b5e575560e01b614351565b505083156111bb57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020016111b2565b60405163274acb3560e01b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb3590604401613c48565b604051632601631360e21b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__906398058c4c9060440161396a565b60405163f0ea17c360e01b81526001600160601b03841660048201525f906001600160a01b0386169063f0ea17c3906024015f60405180830381865afa158015613f55573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613f7c91908101906156cd565b60408082015190516340cda00760e11b81526001600160a01b0386811660048301526001600160601b038616602483015292935091169063819b400e90604401613adb565b5f6139a98383670de0b6b3a764000061437d565b5f80516020615bc883398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b5f80516020615be883398151915254600160401b900460ff1661406b57604051631afcd79f60e31b815260040160405180910390fd5b565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516140db9190615a4d565b5f60405180830381855afa9150503d805f8114614113576040519150601f19603f3d011682016040523d82523d5f602084013e614118565b606091505b5091509150811561416a57604081511061414a57808060200190518101906141409190615a63565b909450925061416a565b602081511061416a5780806020019051810190614167919061563c565b93505b505094509492505050565b61417d614035565b614185614439565b6001600160a01b038216156141a25761419d82614449565b614219565b5f6141ad60026142ba565b9050614217816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141ee573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614212919061503a565b614449565b505b61429583846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015614259573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061427d9190614fe7565b60085f8560405180602001604052805f81525061445d565b6142a5634a531f3360e01b614351565b6142b563daf9067160e01b614351565b505050565b5f6142cd6001546001600160a01b031690565b6001600160a01b031663d39e6043836142e4611b87565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015614327573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061434b919061503a565b92915050565b614359614035565b6001600160e01b0319165f908152602081905260409020805460ff19166001179055565b5f80805f19858709858702925082811083820303915050805f036143b4578382816143aa576143aa615a95565b04925050506139a9565b8084116143d357604051629540d960e61b815260040160405180910390fd5b5f84868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203025f889003889004909101858311909403939093029303949094049190911702949350505050565b614441614035565b61406b6144f8565b614451614035565b61445a81614526565b50565b614465614035565b61446f8683614537565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3016132fa8382615aed565b614500614035565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61452e614035565b61445a81613fd5565b61453f614035565b614548826145ad565b614550614679565b6001600160a01b0381166145775760405163f17ef42d60e01b815260040160405180910390fd5b5f80516020615ba883398151915280546001600160601b0316600160601b6001600160a01b039093169290920291909117905550565b6145b5614035565b604051633334d16b60e01b81526001600160a01b038216600482015273__$fb599632d08395912d9d70eb2f0f93b5e2$__90633334d16b90602401602060405180830381865af415801561460b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061462f919061563c565b6146575760405163fdeac91f60e01b81526001600160a01b03821660048201526024016108dd565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b614681614035565b6301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b5f602082840312156146ce575f80fd5b81356001600160e01b0319811681146139a9575f80fd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081526001600160601b0382511660208201526001600160601b03602083015116604082015260ff60408301511660608201525f606083015161475b608084018215159052565b5060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e08084015261479f6101008401826146e5565b949350505050565b6001600160601b038116811461445a575f80fd5b80356147c6816147a7565b919050565b5f80604083850312156147dc575f80fd5b82356147e7816147a7565b915060208301356147f7816147a7565b809150509250929050565b5f60208284031215614812575f80fd5b81356139a9816147a7565b634e487b7160e01b5f52604160045260245ffd5b60405161020081016001600160401b03811182821017156148545761485461481d565b60405290565b60405161024081016001600160401b03811182821017156148545761485461481d565b60405160c081016001600160401b03811182821017156148545761485461481d565b60405160e081016001600160401b03811182821017156148545761485461481d565b6040516101e081016001600160401b03811182821017156148545761485461481d565b604051608081016001600160401b03811182821017156148545761485461481d565b604051601f8201601f191681016001600160401b038111828210171561492e5761492e61481d565b604052919050565b5f6001600160401b0382111561494e5761494e61481d565b50601f01601f191660200190565b5f82601f83011261496b575f80fd5b813561497e61497982614936565b614906565b818152846020838601011115614992575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156149be575f80fd5b81356001600160401b038111156149d3575f80fd5b61479f8482850161495c565b6001600160a01b038116811461445a575f80fd5b6001600160c01b03198116811461445a575f80fd5b80356147c6816149f3565b64ffffffffff8116811461445a575f80fd5b80356147c681614a13565b61ffff8116811461445a575f80fd5b80356147c681614a30565b5f6102008284031215614a5b575f80fd5b614a63614831565b9050614a6e826147bb565b8152614a7c602083016147bb565b6020820152614a8d60408301614a08565b6040820152614a9e60608301614a08565b6060820152614aaf608083016147bb565b6080820152614ac060a083016147bb565b60a0820152614ad160c08301614a25565b60c082015260e08201356001600160401b03811115614aee575f80fd5b614afa8482850161495c565b60e0830152506101008201356001600160401b03811115614b19575f80fd5b614b258482850161495c565b61010083015250614b396101208301614a3f565b610120820152614b4c6101408301614a3f565b610140820152614b5f61016083016147bb565b610160820152614b7261018083016147bb565b610180820152614b856101a08301614a25565b6101a0820152614b986101c08301614a25565b6101c0820152614bab6101e08301614a25565b6101e082015292915050565b5f805f8060808587031215614bca575f80fd5b8435614bd5816149df565b93506020850135614be5816149df565b92506040850135614bf5816147a7565b915060608501356001600160401b03811115614c0f575f80fd5b614c1b87828801614a4a565b91505092959194509250565b5f8060408385031215614c38575f80fd5b8235614c43816149df565b915060208301356001600160401b03811115614c5d575f80fd5b614c698582860161495c565b9150509250929050565b5f805f60608486031215614c85575f80fd5b83359250602084013591506040840135614c9e816147a7565b809150509250925092565b5f60208284031215614cb9575f80fd5b81356139a9816149df565b5f805f60608486031215614cd6575f80fd5b8335614ce1816149df565b92506020840135614cf1816147a7565b91506040840135614c9e816147a7565b5f805f805f8060c08789031215614d16575f80fd5b8635614d21816149df565b95506020870135614d31816149df565b94506040870135614d41816147a7565b93506060870135614d51816147a7565b92506080870135614d61816147a7565b915060a0870135614d71816147a7565b809150509295509295509295565b5f805f805f60a08688031215614d93575f80fd5b8535614d9e816149df565b94506020860135614dae816149df565b93506040860135614dbe816147a7565b925060608601356001600160401b03811115614dd8575f80fd5b614de488828901614a4a565b9250506080860135614df5816147a7565b809150509295509295909350565b5f805f60608486031215614e15575f80fd5b8335614e20816147a7565b92506020840135614cf181614a30565b5f80828403610260811215614e43575f80fd5b8335614e4e816147a7565b9250610240601f1982011215614e62575f80fd5b50614e6b61485a565b614e77602085016147bb565b8152614e85604085016147bb565b6020820152614e96606085016147bb565b6040820152614ea7608085016147bb565b6060820152614eb860a085016147bb565b6080820152614ec960c085016147bb565b60a0820152614eda60e085016147bb565b60c0820152614eec61010085016147bb565b60e0820152614efe61012085016147bb565b610100820152614f1161014085016147bb565b610120820152614f2461016085016147bb565b610140820152614f3761018085016147bb565b610160820152614f4a6101a085016147bb565b610180820152614f5d6101c085016147bb565b6101a0820152614f706101e085016147bb565b6101c0820152614f8361020085016147bb565b6101e0820152614f9661022085016147bb565b610200820152614fa961024085016147bb565b610220820152809150509250929050565b5f60208284031215614fca575f80fd5b815162ffffff811681146139a9575f80fd5b80516147c6816147a7565b5f60208284031215614ff7575f80fd5b81516139a9816147a7565b600181811c9082168061501657607f821691505b60208210810361503457634e487b7160e01b5f52602260045260245ffd5b50919050565b5f6020828403121561504a575f80fd5b81516139a9816149df565b5f60408284031215615065575f80fd5b604080519081016001600160401b03811182821017156150875761508761481d565b604052825181526020928301519281019290925250919050565b5f6150ae61497984614936565b90508281528383830111156150c1575f80fd5b8282602083015e5f602084830101529392505050565b5f82601f8301126150e6575f80fd5b6139a9838351602085016150a1565b80516147c681614a13565b5f60208284031215615110575f80fd5b81516001600160401b03811115615125575f80fd5b820160e08185031215615136575f80fd5b61513e61487d565b8151615149816147a7565b81526151588560208401615055565b602082015260608201516001600160401b03811115615175575f80fd5b615181868285016150d7565b604083015250608082015161519581614a13565b60608201526151a660a083016150f5565b60808201526151b760c083016150f5565b60a0820152949350505050565b6001600160a01b039490941684526001600160601b039283166020850152908216604084015216606082015260800190565b805180151581146147c6575f80fd5b5f60e0828403128015615216575f80fd5b5061521f61489f565b825161522a816147a7565b8152615238602084016151f6565b6020820152615249604084016151f6565b604082015261525a606084016151f6565b606082015261526b608084016151f6565b608082015260a0838101519082015260c0928301519281019290925250919050565b80516147c6816149df565b6001600160601b0393841681526001600160a01b03929092166020830152909116604082015260600190565b6001600160401b038116811461445a575f80fd5b5f602082840312156152e8575f80fd5b81516139a9816152c4565b60ff8116811461445a575f80fd5b80516147c6816152f3565b5f60e0828403121561531c575f80fd5b61532461489f565b905061532f82614fdc565b815261533d60208301614fdc565b602082015261534e60408301615301565b604082015261535f606083016151f6565b60608201526153706080830161528d565b608082015261538160a0830161528d565b60a082015260c08201516001600160401b0381111561539e575f80fd5b6153aa848285016150d7565b60c08301525092915050565b5f602082840312156153c6575f80fd5b81516001600160401b038111156153db575f80fd5b61479f8482850161530c565b5f82601f8301126153f6575f80fd5b81516001600160401b0381111561540f5761540f61481d565b8060051b61541f60208201614906565b9182526020818501810192908101908684111561543a575f80fd5b6020860192505b83831015615465578251615454816147a7565b825260209283019290910190615441565b9695505050505050565b5f6020828403121561547f575f80fd5b81516001600160401b03811115615494575f80fd5b82016102c081850312156154a6575f80fd5b6154ae6148c1565b6154b7826151f6565b81526154c5602083016151f6565b60208201526154d6604083016151f6565b60408201526154e760608301615301565b60608201526154f860808301615301565b608082015261550960a08301614fdc565b60a082015261551a60c08301614fdc565b60c082015260e08201516001600160401b03811115615537575f80fd5b615543868285016153e7565b60e083015250615557856101008401615055565b61010082015261556b856101408401615055565b61012082015261557f856101808401615055565b610140820152615593856101c08401615055565b6101608201526155a7856102008401615055565b6101808201526155bb856102408401615055565b6101a08201526155cf856102808401615055565b6101c0820152949350505050565b5f80604083850312156155ee575f80fd5b82516155f9816147a7565b60208401519092506147f7816147a7565b5f6020828403121561561a575f80fd5b5051919050565b5f60208284031215615631575f80fd5b81516139a9816152f3565b5f6020828403121561564c575f80fd5b6139a9826151f6565b5f610120820190506001600160601b03851682526001600160601b0384511660208301526020840151151560408301526040840151151560608301526060840151151560808301526080840151151560a083015260a084015160c083015260c084015160e083015261479f61010083018460ff169052565b5f602082840312156156dd575f80fd5b81516001600160401b038111156156f2575f80fd5b820160808185031215615703575f80fd5b61570b6148e4565b81516001600160401b03811115615720575f80fd5b8201601f81018613615730575f80fd5b61573f868251602084016150a1565b82525061574e6020830161528d565b602082015261575f6040830161528d565b604082015260608201516001600160401b0381111561577c575f80fd5b615788868285016150d7565b606083015250949350505050565b80516147c6816149f3565b80516147c681614a30565b5f602082840312156157bc575f80fd5b81516001600160401b038111156157d1575f80fd5b820161020081850312156157e3575f80fd5b6157eb614831565b6157f482614fdc565b815261580260208301614fdc565b602082015261581360408301615796565b604082015261582460608301615796565b606082015261583560808301614fdc565b608082015261584660a08301614fdc565b60a082015261585760c083016150f5565b60c082015260e08201516001600160401b03811115615874575f80fd5b615880868285016150d7565b60e0830152506101008201516001600160401b0381111561589f575f80fd5b6158ab868285016150d7565b610100830152506158bf61012083016157a1565b6101208201526158d261014083016157a1565b6101408201526158e56101608301614fdc565b6101608201526158f86101808301614fdc565b61018082015261590b6101a083016150f5565b6101a082015261591e6101c083016150f5565b6101c08201526159316101e083016150f5565b6101e0820152949350505050565b5f8060408385031215615950575f80fd5b82516001600160401b03811115615965575f80fd5b6159718582860161530c565b92505060208301516147f7816149df565b5f8085851115615990575f80fd5b8386111561599c575f80fd5b5050820193919092039150565b80356001600160e01b031981169060048410156159da576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f8060408385031215615a31575f80fd5b8251615a3c816149df565b60208401519092506147f7816149df565b5f82518060208501845e5f920191825250919050565b5f8060408385031215615a74575f80fd5b615a7d836151f6565b9150602083015163ffffffff811681146147f7575f80fd5b634e487b7160e01b5f52601260045260245ffd5b601f8211156142b557805f5260205f20601f840160051c81016020851015615ace5750805b601f840160051c820191505b81811015610df8575f8155600101615ada565b81516001600160401b03811115615b0657615b0661481d565b615b1a81615b148454615002565b84615aa9565b6020601f821160018114615b4c575f8315615b355750848201515b5f19600385901b1c1916600184901b178455610df8565b5f84815260208120601f198516915b82811015615b7b5787850151825560209485019460019092019101615b5b565b5084821015615b9857868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220d096a1faacaefefdf31e7713588244e5238fc8189244ca2596d6380a3a44b80664736f6c634300081a0033",
1354
- "deployedBytecode": "0x608060405234801561000f575f80fd5b50600436106101dc575f3560e01c806376b707b711610109578063ada9652e1161009e578063d0d63b091161006e578063d0d63b09146104b2578063db02f7d3146104c5578063e1f216fa146104d8578063fb3bcd1f146104eb575f80fd5b8063ada9652e1461047c578063b68d180914610490578063bca99e3914610497578063bf7e214f146104aa575f80fd5b80638899278a116100d95780638899278a14610438578063893d20e8146104405780638e4a508e146104485780638fb360371461045b575f80fd5b806376b707b7146103b05780637a9e5e4b146103ca57806384a710fa146103dd57806384d1f7cf14610425575f80fd5b8063329d6e741161017f578063644c45e01161014f578063644c45e01461032d5780636c1e9dff1461034a5780636c741e781461035d5780637225ed011461037d575f80fd5b8063329d6e74146102cf57806332f9f3df146102e257806349bb9e4b146102f55780635ab1bd5314610308575f80fd5b8063138461e0116101ba578063138461e0146102525780631eff4b221461027257806326889b09146102a7578063329c71c0146102ba575f80fd5b806301ffc9a7146101e05780630d8e6e2c146102215780630fec111c1461023d575b5f80fd5b61020c6101ee3660046146be565b6001600160e01b0319165f9081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6102296104fe565b60405162ffffff9091168152602001610218565b610245610585565b6040516102189190614713565b61025a610743565b6040516001600160601b039091168152602001610218565b6102997f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610218565b61025a6102b53660046147cb565b61074d565b6102cd6102c8366004614802565b610c1e565b005b6102cd6102dd3660046149ae565b610dff565b6102cd6102f0366004614bb7565b610f49565b6102cd610303366004614c27565b6110c8565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610218565b5f80516020615ba8833981519152546001600160601b031661025a565b61025a6103583660046147cb565b6111c4565b610365611881565b6040516001600160401b039091168152602001610218565b61039061038b366004614c73565b61190d565b604080516001600160601b03938416815292909116602083015201610218565b6103b8611b87565b60405160ff9091168152602001610218565b6102cd6103d8366004614ca9565b611bfb565b6103f06103eb366004614cc4565b611c81565b60405161021894939291906001600160601b039485168152928416602084015292166040820152901515606082015260800190565b610390610433366004614d01565b611da5565b610299600381565b610315612099565b6102cd610456366004614802565b6121ca565b6104636123a4565b6040516001600160e01b03199091168152602001610218565b6102995f80516020615ba883398151915281565b600f6103b8565b6102cd6104a5366004614802565b6123d9565b6103156125e7565b6102cd6104c0366004614802565b612602565b6102cd6104d3366004614d7f565b612b61565b6102cd6104e6366004614e03565b612f77565b6102cd6104f9366004614e30565b613304565b604051632efe011360e01b8152600360048201525f60248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af415801561055c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105809190614fba565b905090565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091525f7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610635573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106599190614fe7565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a0016106a1612099565b6001600160a01b031681526020018260010180546106be90615002565b80601f01602080910402602001604051908101604052809291908181526020018280546106ea90615002565b80156107355780601f1061070c57610100808354040283529160200191610735565b820191905f5260205f20905b81548152906001019060200180831161071857829003601f168201915b505050505081525091505090565b5f610580306135b5565b5f61075983601f6137ae565b5f80610763613865565b915091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107c8919061503a565b90505f826001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610807573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082b919061503a565b604051634793b4ab60e01b81526001600160601b03891660048201529091505f906001600160a01b03841690634793b4ab906024015f60405180830381865afa15801561087a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108a19190810190615100565b90506108b0815f015186613924565b156108e657604051630a49ea2360e01b81526001600160601b03808a166004830152861660248201526044015b60405180910390fd5b600254604051631696791160e11b81526001600160a01b0386811660048301526001600160601b03808c1660248401528a1660448301525f921690632d2cf222906064016020604051808303815f875af1158015610946573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061096a9190614fe7565b905080965060035f9054906101000a90046001600160a01b03166001600160a01b03166389fad8a284888473__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156109dc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a009190614fe7565b6040518563ffffffff1660e01b8152600401610a1f94939291906151c4565b5f604051808303815f87803b158015610a36575f80fd5b505af1158015610a48573d5f803e3d5ffd5b505050507f1486849121d5ae771349472444bdddfe08862a6644665b5fd7ed4cf14a51db78856001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aa9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610acd9190614fe7565b604080516001600160601b03928316815289831660208201528c8316818301528483166060820152918a166080830152519081900360a00190a16040516357f80bbf60e01b81526001600160601b03871660048201526001600160a01b038516906357f80bbf9060240160e060405180830381865afa158015610b52573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b769190615205565b60600151610c12575f610b916001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038c1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015610bde573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c02919061503a565b9050610c108588838b6139b0565b505b50505050505092915050565b5f80610c28613865565b915091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c8d919061503a565b6040516357f80bbf60e01b81526001600160601b03851660048201529091506001600160a01b038216906357f80bbf9060240160e060405180830381865afa158015610cdb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cff9190615205565b60600151610d2b5760405163664958ad60e01b81526001600160601b03841660048201526024016108dd565b5f610d3e6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03861660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015610d8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610daf919061503a565b90507ff93784364e35bd9d02fb31e12793254279ee0381ed65b4fa39ee297b22fdd79a848287604051610de493929190615298565b60405180910390a1610df8828583886139b0565b5050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c610e216104fe565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610e5f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e8391906152d8565b5f80516020615be88339815191528054600160401b900460ff1680610eb5575080546001600160401b03808416911610155b15610ed35760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610efd83613b04565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b610f55335b5f36613b0c565b610f608260156137ae565b5f610f748260800151836101600151613c02565b600254602084015160405163ad328d9f60e01b81529293506001600160a01b039091169163ad328d9f91610fb0918991889187906004016151c4565b5f604051808303815f87803b158015610fc7575f80fd5b505af1158015610fd9573d5f803e3d5ffd5b5050505060045f9054906101000a90046001600160a01b03166001600160a01b031663d44f8a4b866001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561103c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110609190614fe7565b86846040518463ffffffff1660e01b815260040161108093929190615298565b6020604051808303815f875af115801561109c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c09190614fe7565b505050505050565b5f80516020615be88339815191528054600160401b810460ff1615906001600160401b03165f811580156110f95750825b90505f826001600160401b031660011480156111145750303b155b905081158015611122575080155b156111405760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561116a57845460ff60401b1916600160401b1785555b6111748787613c87565b83156111bb57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b5f6111d083601f6137ae565b5f806111da613865565b915091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561121b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123f919061503a565b604051634793b4ab60e01b81526001600160601b03881660048201529091505f906001600160a01b03831690634793b4ab906024015f60405180830381865afa15801561128e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526112b59190810190615100565b6040516357f80bbf60e01b81526001600160601b03861660048201529091505f906001600160a01b038416906357f80bbf9060240160e060405180830381865afa158015611305573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113299190615205565b9050611338825f015186613924565b1561136957604051630a49ea2360e01b81526001600160601b03808a166004830152861660248201526044016108dd565b6040516308a390bb60e21b81526001600160601b03861660048201525f906001600160a01b0385169063228e42ec90602401602060405180830381865afa1580156113b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113da9190614fe7565b90506113f06113e9828a613e75565b8351613ebf565b1561143457815160405163b806175d60e01b81526001600160601b0380891660048301529182166024820152818316604482015290891660648201526084016108dd565b505f6114486001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03881660048201529091505f9081906001600160a01b0384169063a48f42e0906024015f60405180830381865afa158015611499573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526114c091908101906153b6565b602001516040516302d764c760e21b81526001600160601b03821660048201529091505f906001600160a01b03881690630b5d931c906024015f60405180830381865afa158015611513573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261153a919081019061546f565b6101a00151604051634f69237560e11b815281516004820152602082015160248201526001600160601b038d16604482015290915073__$58e11c6004c5796aaa8c56e718245e69a2$__90639ed246ea906064016040805180830381865af41580156115a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115cc91906155dd565b60035460408051631a99b41b60e31b81529051929d509295506001600160a01b03908116945063d56cd3d593508a169163d4cda0d89160048083019260209291908290030181865afa158015611624573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611648919061503a565b898b856040518563ffffffff1660e01b815260040161166a94939291906151c4565b5f604051808303815f87803b158015611681575f80fd5b505af1158015611693573d5f803e3d5ffd5b50506002546040516325fa796b60e01b81526001600160a01b0390911692506325fa796b91506116f09089908e908d906004016001600160a01b039390931683526001600160601b03918216602084015216604082015260600190565b5f604051808303815f87803b158015611707575f80fd5b505af1158015611719573d5f803e3d5ffd5b505050507fa397b0d38fe748a8c29cce53eab5736ef0c29c156e7a9586ae8b88a8557b4145866001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561177a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061179e9190614fe7565b604080516001600160601b0392831681528a831660208201528d8316818301528c83166060820152918b166080830152519081900360a00190a18260600151610c10575f6117f46001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038d1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611841573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611865919061503a565b90506118738689838d613f09565b505050505050505092915050565b5f73__$1d92393fa9ccd763988368ce8a1cb90d26$__63dda777d3600f6118a6611b87565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865af41580156118e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061058091906152d8565b6040516355205f0f60e01b81526001600160601b03821660048201525f908190819061199890879073__$3bac17678db7ae928afa209f2f44deec9c$__906355205f0f90602401602060405180830381865af415801561196f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611993919061560a565b613fc1565b604051632255341b60e11b81526004810182905290915073__$3bac17678db7ae928afa209f2f44deec9c$__90634c41dd969073__$bf7bc340cbb9229ef1de2c568356e67902$__906344aa683690602401602060405180830381865af4158015611a05573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a29919061560a565b6040518263ffffffff1660e01b8152600401611a4791815260200190565b602060405180830381865af4158015611a62573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a869190614fe7565b925073__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd96611aac8784613fc1565b604051632255341b60e11b8152600481019190915273__$bf7bc340cbb9229ef1de2c568356e67902$__906344aa683690602401602060405180830381865af4158015611afb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b1f919061560a565b6040518263ffffffff1660e01b8152600401611b3d91815260200190565b602060405180830381865af4158015611b58573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7c9190614fe7565b915050935093915050565b604051632392b61b60e21b8152600360048201525f9073__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af4158015611bd7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105809190615621565b33611c046125e7565b6001600160a01b0316816001600160a01b031614611c3f5760405162d1953b60e31b81526001600160a01b03821660048201526024016108dd565b816001600160a01b03163b5f03611c74576040516361798f2f60e11b81526001600160a01b03831660048201526024016108dd565b611c7d82613fd5565b5050565b5f808080611c9086600c6137ae565b6040516302d764c760e21b81526001600160601b03871660048201526001600160a01b03881690630b5d931c906024015f60405180830381865afa158015611cda573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d01919081019061546f565b60a001516040516357f80bbf60e01b81526001600160601b03821660048201529094505f906001600160a01b038916906357f80bbf9060240160e060405180830381865afa158015611d55573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d799190615205565b905080608001519150611d958160a001518260c001518861190d565b9599909850949650909450505050565b5f80611db033610f4e565b611dbb86600c6137ae565b611dc68560156137ae565b611dd184601f6137ae565b5f80611e3d8a6001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e36919061503a565b8987611c81565b600254604051634adcf90960e01b81529398509196509294509192506001600160a01b0390911690634adcf90990611e7f908d908b908b9089906004016151c4565b5f604051808303815f87803b158015611e96575f80fd5b505af1158015611ea8573d5f803e3d5ffd5b5050505060045f9054906101000a90046001600160a01b03166001600160a01b031663ea48ce9b8b6001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f0b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f2f9190614fe7565b8b876040518463ffffffff1660e01b8152600401611f4f93929190615298565b6020604051808303815f875af1158015611f6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f8f9190614fe7565b50801561208c575f611fa96001546001600160a01b031690565b60405163bf8e179760e01b81526001600160601b03851660048201526001600160a01b03919091169063bf8e179790602401602060405180830381865afa158015611ff6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061201a919061503a565b604051634deed57960e01b81526001600160601b03808b166004830152808a166024830152871660448201529091506001600160a01b03821690634deed579906064015f604051808303815f87803b158015612074575f80fd5b505af1158015612086573d5f803e3d5ffd5b50505050505b5050965096945050505050565b5f805f80516020615ba883398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015612105573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612129919061563c565b156121b4576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa15801561218a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121ae919061503a565b91505090565b54600160601b90046001600160a01b0316919050565b5f806121d4613865565b915091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612215573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612239919061503a565b6040516357f80bbf60e01b81526001600160601b03851660048201529091506001600160a01b038216906357f80bbf9060240160e060405180830381865afa158015612287573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122ab9190615205565b606001516122d75760405163664958ad60e01b81526001600160601b03841660048201526024016108dd565b5f6122ea6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03861660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612337573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061235b919061503a565b90507f67e4007a2396f32c2c58b0546d5dc80e8097a965b3de4127c33f3610864416bd84828760405161239093929190615298565b60405180910390a1610df882858388613f09565b5f80516020615bc883398151915280545f9190600160a01b900460ff166123cb575f6121ae565b638fb3603760e01b91505090565b5f806123e3613865565b915091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612424573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612448919061503a565b6040516357f80bbf60e01b81526001600160601b03851660048201529091505f906001600160a01b038316906357f80bbf9060240160e060405180830381865afa158015612498573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124bc9190615205565b80516001600160601b038716825260408051631a99b41b60e31b8152905192935090916001600160a01b0386169163d4cda0d89160048083019260209291908290030181865afa158015612512573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612536919061503a565b6001600160a01b03166328802681868460ff6040518463ffffffff1660e01b815260040161256693929190615655565b5f604051808303815f87803b15801561257d575f80fd5b505af115801561258f573d5f803e3d5ffd5b5050604080516001600160601b03898116825285811660208301528a168183015290517f59c52d680289bf3ed1eaf8c98c2385d021cbc74043dd1ed596d6383f63235ffc9350908190036060019150a1505050505050565b5f80516020615bc8833981519152546001600160a01b031690565b61260d81601f6137ae565b5f80612617613865565b600254604051632aa6b2cb60e21b81526001600160a01b0380841660048301526001600160601b03881660248301529395509193505f92839291169063aa9acb2c9060440160408051808303815f875af1158015612677573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061269b91906155dd565b9150915060035f9054906101000a90046001600160a01b03166001600160a01b03166389fad8a2846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126fe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612722919061503a565b8661272d8686613e75565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015612774573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127989190614fe7565b6040518563ffffffff1660e01b81526004016127b794939291906151c4565b5f604051808303815f87803b1580156127ce575f80fd5b505af11580156127e0573d5f803e3d5ffd5b505050507f64c75a4392ba38fee1b5a44b61e3dd0cae424d2d43eb2b0c99772efe31e1c042836001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612841573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128659190614fe7565b604080516001600160601b03928316815282881660208201529188169082015260600160405180910390a161289a8282613e75565b6040516330b8415f60e01b81526001600160601b03909116600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af41580156128f1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612915919061563c565b15610df8575f836001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612957573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061297b919061503a565b60405163f0ea17c360e01b81526001600160601b03871660048201526001600160a01b03919091169063f0ea17c3906024015f60405180830381865afa1580156129c7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526129ee91908101906156cd565b905080604001516001600160a01b03166354f0d84c82604001516001600160a01b031663132996046040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a67919061503a565b6001546001600160a01b0316604051631c5da14d60e11b81526001600160601b038b1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612ac0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ae4919061503a565b612aee8787613e75565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526001600160601b031660448201526064015f604051808303815f87803b158015612b43575f80fd5b505af1158015612b55573d5f803e3d5ffd5b50505050505050505050565b612b6a33610f4e565b612b758360156137ae565b60208201515f612b8d6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa158015612bd9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612c0091908101906153b6565b6020015190505f876001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c67919061503a565b905060035f9054906101000a90046001600160a01b03166001600160a01b03166389fad8a282848773__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015612cd6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cfa9190614fe7565b6040518563ffffffff1660e01b8152600401612d1994939291906151c4565b5f604051808303815f87803b158015612d30575f80fd5b505af1158015612d42573d5f803e3d5ffd5b5050505060035f9054906101000a90046001600160a01b03166001600160a01b031663e618053f82858773__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015612db3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dd79190614fe7565b6040518563ffffffff1660e01b8152600401612df694939291906151c4565b5f604051808303815f87803b158015612e0d575f80fd5b505af1158015612e1f573d5f803e3d5ffd5b5050600254602088015160405163ad328d9f60e01b81526001600160a01b03909216935063ad328d9f9250612e5c918c918b918a906004016151c4565b5f604051808303815f87803b158015612e73575f80fd5b505af1158015612e85573d5f803e3d5ffd5b5050505060045f9054906101000a90046001600160a01b03166001600160a01b031663d44f8a4b896001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ee8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f0c9190614fe7565b89876040518463ffffffff1660e01b8152600401612f2c93929190615298565b6020604051808303815f875af1158015612f48573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f6c9190614fe7565b505050505050505050565b612f828360156137ae565b5f80612f8c613865565b915091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fcd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ff1919061503a565b90505f6130066001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03861660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa158015613052573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261307991908101906153b6565b6020015160405163bd7d9d8560e01b81526001600160601b03891660048201529091505f906001600160a01b0384169063bd7d9d85906024015f60405180830381865afa1580156130cc573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526130f391908101906157ac565b9050613102815f015183613924565b1561313e578051604051636083e75360e01b81526001600160601b03808b166004830152918216602482015290831660448201526064016108dd565b604080516001600160601b038a8116825261ffff8a16602083015288168183015290517f6a2b4f9e8a4bb9038617a047352d25c5ac3c64c4aaba95e576b978a91b6666fb9181900360600190a16040516302d764c760e21b81526001600160601b03831660048201526001600160a01b03841690630b5d931c906024015f60405180830381865afa1580156131d5573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526131fc919081019061546f565b51156132fa575f6132156001546001600160a01b031690565b60405163bf8e179760e01b81526001600160601b03851660048201526001600160a01b03919091169063bf8e179790602401602060405180830381865afa158015613262573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613286919061503a565b6040516370f90b7d60e11b81526001600160601b03808c16600483015261ffff8b166024830152891660448201529091506001600160a01b0382169063e1f216fa906064015f604051808303815f87803b1580156132e2575f80fd5b505af11580156132f4573d5f803e3d5ffd5b50505050505b5050505050505050565b61330d33610f4e565b61331882601f6137ae565b5f61332b6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03851660048201529091505f906001600160a01b0383169063a48f42e0906024015f60405180830381865afa15801561337a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526133a191908101906153b6565b6020015160405163c52721a360e01b81526001600160a01b03841660048201526001600160601b0382166024820152600160448201529091505f9073__$fb599632d08395912d9d70eb2f0f93b5e2$__9063c52721a3906064015f60405180830381865af4158015613415573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261343c919081019061593f565b9150505f8190505f6134578660e00151876101600151613e75565b90505f61346e876101000151886101800151613e75565b90505f876060015190505f846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134d9919061503a565b6003549091506001600160a01b031663d56cd3d582896134f98688613e75565b886040518563ffffffff1660e01b815260040161351994939291906151c4565b5f604051808303815f87803b158015613530575f80fd5b505af1158015613542573d5f803e3d5ffd5b50506003546040516325e451d360e01b81526001600160a01b0390911692506325e451d3915061357c9084908e90879089906004016151c4565b5f604051808303815f87803b158015613593575f80fd5b505af11580156135a5573d5f803e3d5ffd5b5050505050505050505050505050565b5f805f80516020615ba883398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015613621573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613645919061563c565b156136715780546040516301ab8b6760e21b81526001600160601b0390911660048201526024016108dd565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa1580156136c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e7919061563c565b61370f5760405163b9304b0d60e01b81526001600160a01b03841660048201526024016108dd565b6001546001600160a01b0316604051632f2a35f760e11b81526001600160a01b0385811660048301529190911690635e546bee90602401602060405180830381865afa158015613761573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137859190614fe7565b81546bffffffffffffffffffffffff19166001600160601b039190911690811790915592915050565b6001546001600160a01b0316604051635b12715d60e11b81526001600160601b038416600482015260ff831660248201526001600160a01b03919091169063b624e2ba90604401602060405180830381865afa158015613810573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613834919061563c565b611c7d5760405163d711af7560e01b81526001600160601b038316600482015260ff821660248201526044016108dd565b5f805f8073__$fb599632d08395912d9d70eb2f0f93b5e2$__635c990ed36138956001546001600160a01b031690565b33600f6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260ff166044820152600160648201526084015f60405180830381865af41580156138f1573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613918919081019061593f565b90519590945092505050565b6040516399009c5160e01b81526001600160601b038084166004830152821660248201525f9073__$94a2c899be079b00d952d0d84fffaa5c34$__906399009c51906044015b602060405180830381865af4158015613985573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139a9919061563c565b9392505050565b60405163f0ea17c360e01b81526001600160601b03841660048201525f906001600160a01b0386169063f0ea17c3906024015f60405180830381865afa1580156139fc573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613a2391908101906156cd565b905080604001516001600160a01b03166354f0d84c82604001516001600160a01b031663132996046040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a78573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a9c919061503a565b6040516001600160e01b031960e084901b1681526001600160a01b03918216600482015290861660248201526001600160601b03851660448201526064015b5f604051808303815f87803b158015613af2575f80fd5b505af1158015612f6c573d5f803e3d5ffd5b6101dc614035565b5f80516020615bc88339815191525f80613b44613b276125e7565b8730613b3660045f8a8c615982565b613b3f916159a9565b61406d565b91509150816110c05763ffffffff811615613bdf57825460ff60a01b1916600160a01b178355613b726125e7565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b8152600401613ba1939291906159e1565b5f604051808303815f87803b158015613bb8575f80fd5b505af1158015613bca573d5f803e3d5ffd5b5050845460ff60a01b19168555506110c09050565b60405162d1953b60e31b81526001600160a01b03871660048201526024016108dd565b6040516363cf551160e11b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063c79eaa22906044015b602060405180830381865af4158015613c63573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139a99190614fe7565b5f80516020615be88339815191528054600160401b810460ff1615906001600160401b03165f81158015613cb85750825b90505f826001600160401b03166001148015613cd35750303b155b905081158015613ce1575080155b15613cff5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315613d2957845460ff60401b1916600160401b1785555b5f8087806020019051810190613d3f9190615a20565b91509150613d4e82828b614175565b613d58601f6142ba565b600280546001600160a01b0319166001600160a01b0392909216919091179055613d82600b6142ba565b600380546001600160a01b0319166001600160a01b03928316179055600154166001600160a01b0316630e9ed68b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ddd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e01919061503a565b600480546001600160a01b0319166001600160a01b0392909216919091179055613e31631b5e575560e01b614351565b505083156111bb57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020016111b2565b60405163274acb3560e01b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb3590604401613c48565b604051632601631360e21b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__906398058c4c9060440161396a565b60405163f0ea17c360e01b81526001600160601b03841660048201525f906001600160a01b0386169063f0ea17c3906024015f60405180830381865afa158015613f55573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613f7c91908101906156cd565b60408082015190516340cda00760e11b81526001600160a01b0386811660048301526001600160601b038616602483015292935091169063819b400e90604401613adb565b5f6139a98383670de0b6b3a764000061437d565b5f80516020615bc883398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b5f80516020615be883398151915254600160401b900460ff1661406b57604051631afcd79f60e31b815260040160405180910390fd5b565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516140db9190615a4d565b5f60405180830381855afa9150503d805f8114614113576040519150601f19603f3d011682016040523d82523d5f602084013e614118565b606091505b5091509150811561416a57604081511061414a57808060200190518101906141409190615a63565b909450925061416a565b602081511061416a5780806020019051810190614167919061563c565b93505b505094509492505050565b61417d614035565b614185614439565b6001600160a01b038216156141a25761419d82614449565b614219565b5f6141ad60026142ba565b9050614217816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141ee573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614212919061503a565b614449565b505b61429583846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015614259573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061427d9190614fe7565b60085f8560405180602001604052805f81525061445d565b6142a5634a531f3360e01b614351565b6142b563daf9067160e01b614351565b505050565b5f6142cd6001546001600160a01b031690565b6001600160a01b031663d39e6043836142e4611b87565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015614327573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061434b919061503a565b92915050565b614359614035565b6001600160e01b0319165f908152602081905260409020805460ff19166001179055565b5f80805f19858709858702925082811083820303915050805f036143b4578382816143aa576143aa615a95565b04925050506139a9565b8084116143d357604051629540d960e61b815260040160405180910390fd5b5f84868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203025f889003889004909101858311909403939093029303949094049190911702949350505050565b614441614035565b61406b6144f8565b614451614035565b61445a81614526565b50565b614465614035565b61446f8683614537565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3016132fa8382615aed565b614500614035565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61452e614035565b61445a81613fd5565b61453f614035565b614548826145ad565b614550614679565b6001600160a01b0381166145775760405163f17ef42d60e01b815260040160405180910390fd5b5f80516020615ba883398151915280546001600160601b0316600160601b6001600160a01b039093169290920291909117905550565b6145b5614035565b604051633334d16b60e01b81526001600160a01b038216600482015273__$fb599632d08395912d9d70eb2f0f93b5e2$__90633334d16b90602401602060405180830381865af415801561460b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061462f919061563c565b6146575760405163fdeac91f60e01b81526001600160a01b03821660048201526024016108dd565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b614681614035565b6301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b5f602082840312156146ce575f80fd5b81356001600160e01b0319811681146139a9575f80fd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081526001600160601b0382511660208201526001600160601b03602083015116604082015260ff60408301511660608201525f606083015161475b608084018215159052565b5060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e08084015261479f6101008401826146e5565b949350505050565b6001600160601b038116811461445a575f80fd5b80356147c6816147a7565b919050565b5f80604083850312156147dc575f80fd5b82356147e7816147a7565b915060208301356147f7816147a7565b809150509250929050565b5f60208284031215614812575f80fd5b81356139a9816147a7565b634e487b7160e01b5f52604160045260245ffd5b60405161020081016001600160401b03811182821017156148545761485461481d565b60405290565b60405161024081016001600160401b03811182821017156148545761485461481d565b60405160c081016001600160401b03811182821017156148545761485461481d565b60405160e081016001600160401b03811182821017156148545761485461481d565b6040516101e081016001600160401b03811182821017156148545761485461481d565b604051608081016001600160401b03811182821017156148545761485461481d565b604051601f8201601f191681016001600160401b038111828210171561492e5761492e61481d565b604052919050565b5f6001600160401b0382111561494e5761494e61481d565b50601f01601f191660200190565b5f82601f83011261496b575f80fd5b813561497e61497982614936565b614906565b818152846020838601011115614992575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156149be575f80fd5b81356001600160401b038111156149d3575f80fd5b61479f8482850161495c565b6001600160a01b038116811461445a575f80fd5b6001600160c01b03198116811461445a575f80fd5b80356147c6816149f3565b64ffffffffff8116811461445a575f80fd5b80356147c681614a13565b61ffff8116811461445a575f80fd5b80356147c681614a30565b5f6102008284031215614a5b575f80fd5b614a63614831565b9050614a6e826147bb565b8152614a7c602083016147bb565b6020820152614a8d60408301614a08565b6040820152614a9e60608301614a08565b6060820152614aaf608083016147bb565b6080820152614ac060a083016147bb565b60a0820152614ad160c08301614a25565b60c082015260e08201356001600160401b03811115614aee575f80fd5b614afa8482850161495c565b60e0830152506101008201356001600160401b03811115614b19575f80fd5b614b258482850161495c565b61010083015250614b396101208301614a3f565b610120820152614b4c6101408301614a3f565b610140820152614b5f61016083016147bb565b610160820152614b7261018083016147bb565b610180820152614b856101a08301614a25565b6101a0820152614b986101c08301614a25565b6101c0820152614bab6101e08301614a25565b6101e082015292915050565b5f805f8060808587031215614bca575f80fd5b8435614bd5816149df565b93506020850135614be5816149df565b92506040850135614bf5816147a7565b915060608501356001600160401b03811115614c0f575f80fd5b614c1b87828801614a4a565b91505092959194509250565b5f8060408385031215614c38575f80fd5b8235614c43816149df565b915060208301356001600160401b03811115614c5d575f80fd5b614c698582860161495c565b9150509250929050565b5f805f60608486031215614c85575f80fd5b83359250602084013591506040840135614c9e816147a7565b809150509250925092565b5f60208284031215614cb9575f80fd5b81356139a9816149df565b5f805f60608486031215614cd6575f80fd5b8335614ce1816149df565b92506020840135614cf1816147a7565b91506040840135614c9e816147a7565b5f805f805f8060c08789031215614d16575f80fd5b8635614d21816149df565b95506020870135614d31816149df565b94506040870135614d41816147a7565b93506060870135614d51816147a7565b92506080870135614d61816147a7565b915060a0870135614d71816147a7565b809150509295509295509295565b5f805f805f60a08688031215614d93575f80fd5b8535614d9e816149df565b94506020860135614dae816149df565b93506040860135614dbe816147a7565b925060608601356001600160401b03811115614dd8575f80fd5b614de488828901614a4a565b9250506080860135614df5816147a7565b809150509295509295909350565b5f805f60608486031215614e15575f80fd5b8335614e20816147a7565b92506020840135614cf181614a30565b5f80828403610260811215614e43575f80fd5b8335614e4e816147a7565b9250610240601f1982011215614e62575f80fd5b50614e6b61485a565b614e77602085016147bb565b8152614e85604085016147bb565b6020820152614e96606085016147bb565b6040820152614ea7608085016147bb565b6060820152614eb860a085016147bb565b6080820152614ec960c085016147bb565b60a0820152614eda60e085016147bb565b60c0820152614eec61010085016147bb565b60e0820152614efe61012085016147bb565b610100820152614f1161014085016147bb565b610120820152614f2461016085016147bb565b610140820152614f3761018085016147bb565b610160820152614f4a6101a085016147bb565b610180820152614f5d6101c085016147bb565b6101a0820152614f706101e085016147bb565b6101c0820152614f8361020085016147bb565b6101e0820152614f9661022085016147bb565b610200820152614fa961024085016147bb565b610220820152809150509250929050565b5f60208284031215614fca575f80fd5b815162ffffff811681146139a9575f80fd5b80516147c6816147a7565b5f60208284031215614ff7575f80fd5b81516139a9816147a7565b600181811c9082168061501657607f821691505b60208210810361503457634e487b7160e01b5f52602260045260245ffd5b50919050565b5f6020828403121561504a575f80fd5b81516139a9816149df565b5f60408284031215615065575f80fd5b604080519081016001600160401b03811182821017156150875761508761481d565b604052825181526020928301519281019290925250919050565b5f6150ae61497984614936565b90508281528383830111156150c1575f80fd5b8282602083015e5f602084830101529392505050565b5f82601f8301126150e6575f80fd5b6139a9838351602085016150a1565b80516147c681614a13565b5f60208284031215615110575f80fd5b81516001600160401b03811115615125575f80fd5b820160e08185031215615136575f80fd5b61513e61487d565b8151615149816147a7565b81526151588560208401615055565b602082015260608201516001600160401b03811115615175575f80fd5b615181868285016150d7565b604083015250608082015161519581614a13565b60608201526151a660a083016150f5565b60808201526151b760c083016150f5565b60a0820152949350505050565b6001600160a01b039490941684526001600160601b039283166020850152908216604084015216606082015260800190565b805180151581146147c6575f80fd5b5f60e0828403128015615216575f80fd5b5061521f61489f565b825161522a816147a7565b8152615238602084016151f6565b6020820152615249604084016151f6565b604082015261525a606084016151f6565b606082015261526b608084016151f6565b608082015260a0838101519082015260c0928301519281019290925250919050565b80516147c6816149df565b6001600160601b0393841681526001600160a01b03929092166020830152909116604082015260600190565b6001600160401b038116811461445a575f80fd5b5f602082840312156152e8575f80fd5b81516139a9816152c4565b60ff8116811461445a575f80fd5b80516147c6816152f3565b5f60e0828403121561531c575f80fd5b61532461489f565b905061532f82614fdc565b815261533d60208301614fdc565b602082015261534e60408301615301565b604082015261535f606083016151f6565b60608201526153706080830161528d565b608082015261538160a0830161528d565b60a082015260c08201516001600160401b0381111561539e575f80fd5b6153aa848285016150d7565b60c08301525092915050565b5f602082840312156153c6575f80fd5b81516001600160401b038111156153db575f80fd5b61479f8482850161530c565b5f82601f8301126153f6575f80fd5b81516001600160401b0381111561540f5761540f61481d565b8060051b61541f60208201614906565b9182526020818501810192908101908684111561543a575f80fd5b6020860192505b83831015615465578251615454816147a7565b825260209283019290910190615441565b9695505050505050565b5f6020828403121561547f575f80fd5b81516001600160401b03811115615494575f80fd5b82016102c081850312156154a6575f80fd5b6154ae6148c1565b6154b7826151f6565b81526154c5602083016151f6565b60208201526154d6604083016151f6565b60408201526154e760608301615301565b60608201526154f860808301615301565b608082015261550960a08301614fdc565b60a082015261551a60c08301614fdc565b60c082015260e08201516001600160401b03811115615537575f80fd5b615543868285016153e7565b60e083015250615557856101008401615055565b61010082015261556b856101408401615055565b61012082015261557f856101808401615055565b610140820152615593856101c08401615055565b6101608201526155a7856102008401615055565b6101808201526155bb856102408401615055565b6101a08201526155cf856102808401615055565b6101c0820152949350505050565b5f80604083850312156155ee575f80fd5b82516155f9816147a7565b60208401519092506147f7816147a7565b5f6020828403121561561a575f80fd5b5051919050565b5f60208284031215615631575f80fd5b81516139a9816152f3565b5f6020828403121561564c575f80fd5b6139a9826151f6565b5f610120820190506001600160601b03851682526001600160601b0384511660208301526020840151151560408301526040840151151560608301526060840151151560808301526080840151151560a083015260a084015160c083015260c084015160e083015261479f61010083018460ff169052565b5f602082840312156156dd575f80fd5b81516001600160401b038111156156f2575f80fd5b820160808185031215615703575f80fd5b61570b6148e4565b81516001600160401b03811115615720575f80fd5b8201601f81018613615730575f80fd5b61573f868251602084016150a1565b82525061574e6020830161528d565b602082015261575f6040830161528d565b604082015260608201516001600160401b0381111561577c575f80fd5b615788868285016150d7565b606083015250949350505050565b80516147c6816149f3565b80516147c681614a30565b5f602082840312156157bc575f80fd5b81516001600160401b038111156157d1575f80fd5b820161020081850312156157e3575f80fd5b6157eb614831565b6157f482614fdc565b815261580260208301614fdc565b602082015261581360408301615796565b604082015261582460608301615796565b606082015261583560808301614fdc565b608082015261584660a08301614fdc565b60a082015261585760c083016150f5565b60c082015260e08201516001600160401b03811115615874575f80fd5b615880868285016150d7565b60e0830152506101008201516001600160401b0381111561589f575f80fd5b6158ab868285016150d7565b610100830152506158bf61012083016157a1565b6101208201526158d261014083016157a1565b6101408201526158e56101608301614fdc565b6101608201526158f86101808301614fdc565b61018082015261590b6101a083016150f5565b6101a082015261591e6101c083016150f5565b6101c08201526159316101e083016150f5565b6101e0820152949350505050565b5f8060408385031215615950575f80fd5b82516001600160401b03811115615965575f80fd5b6159718582860161530c565b92505060208301516147f7816149df565b5f8085851115615990575f80fd5b8386111561599c575f80fd5b5050820193919092039150565b80356001600160e01b031981169060048410156159da576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f8060408385031215615a31575f80fd5b8251615a3c816149df565b60208401519092506147f7816149df565b5f82518060208501845e5f920191825250919050565b5f8060408385031215615a74575f80fd5b615a7d836151f6565b9150602083015163ffffffff811681146147f7575f80fd5b634e487b7160e01b5f52601260045260245ffd5b601f8211156142b557805f5260205f20601f840160051c81016020851015615ace5750805b601f840160051c820191505b81811015610df8575f8155600101615ada565b81516001600160401b03811115615b0657615b0661481d565b615b1a81615b148454615002565b84615aa9565b6020601f821160018114615b4c575f8315615b355750848201515b5f19600385901b1c1916600184901b178455610df8565b5f84815260208120601f198516915b82811015615b7b5787850151825560209485019460019092019101615b5b565b5084821015615b9857868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220d096a1faacaefefdf31e7713588244e5238fc8189244ca2596d6380a3a44b80664736f6c634300081a0033",
1499
+ "bytecode": "0x6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b615fc4806100d65f395ff3fe608060405234801561000f575f80fd5b50600436106101d1575f3560e01c80636c741e78116100fe5780638fb360371161009e578063bf7e214f1161006e578063bf7e214f1461046a578063d0d63b0914610472578063e1f216fa14610485578063fb3bcd1f14610498575f80fd5b80638fb360371461041b578063ada9652e1461043c578063b68d180914610450578063bca99e3914610457575f80fd5b80637a9e5e4b116100d95780637a9e5e4b146103da57806384d1f7cf146103ed578063893d20e8146104005780638e4a508e14610408575f80fd5b80636c741e781461038d578063750787f5146103ad57806376b707b7146103c0575f80fd5b806326889b091161017457806354e507791161014457806354e50779146103255780635ab1bd5314610338578063644c45e01461035d5780636c1e9dff1461037a575f80fd5b806326889b09146102d7578063329c71c0146102ea578063329d6e74146102ff57806349bb9e4b14610312575f80fd5b8063125510a3116101af578063125510a314610247578063138461e01461027a5780631eff4b221461029a57806322f3e2d4146102cf575f80fd5b806301ffc9a7146101d55780630d8e6e2c146102165780630fec111c14610232575b5f80fd5b6102016101e3366004614acb565b6001600160e01b0319165f9081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b61021e6104ab565b60405162ffffff909116815260200161020d565b61023a610532565b60405161020d9190614b20565b61025a610255366004614c09565b6106ec565b604080516001600160601b0393841681529290911660208301520161020d565b610282610daf565b6040516001600160601b03909116815260200161020d565b6102c17f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b60405190815260200161020d565b610201610db9565b6102826102e5366004614cad565b610e30565b6102fd6102f8366004614ce4565b6111fd565b005b6102fd61030d366004614e6e565b611449565b6102fd610320366004614e9f565b611593565b610282610333366004614cad565b61168f565b6001546001600160a01b03165b6040516001600160a01b03909116815260200161020d565b5f80516020615f2f833981519152546001600160601b0316610282565b610282610388366004614cad565b611ddb565b61039561220a565b6040516001600160401b03909116815260200161020d565b6102fd6103bb366004614f25565b612296565b6103c86125a8565b60405160ff909116815260200161020d565b6102fd6103e83660046150de565b612610565b61025a6103fb3660046150f9565b612696565b610345612a8c565b6102fd610416366004614ce4565b612bbd565b610423612dd1565b6040516001600160e01b0319909116815260200161020d565b6102c15f80516020615f2f83398151915281565b600f6103c8565b6102fd610465366004614ce4565b612e06565b61034561301d565b6102fd610480366004614ce4565b613038565b6102fd610493366004615177565b613517565b6102fd6104a63660046151bf565b6138a7565b604051632efe011360e01b8152600360048201525f60248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af4158015610509573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052d9190615349565b905090565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820152907f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156105de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106029190615376565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a00161064a612a8c565b6001600160a01b0316815260200182600101805461066790615391565b80601f016020809104026020016040519081016040528092919081815260200182805461069390615391565b80156106de5780601f106106b5576101008083540402835291602001916106de565b820191905f5260205f20905b8154815290600101906020018083116106c157829003601f168201915b505050505081525091505090565b5f806106fa335b5f36613b91565b610705876015613c8f565b5f6107186001546001600160a01b031690565b60405163677d3feb60e11b81526001600160601b03891660048201526001600160a01b03919091169063cefa7fd690602401602060405180830381865afa158015610765573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107899190615376565b905060025f9054906101000a90046001600160a01b03166001600160a01b03166389fad8a28b838873__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156107f8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061081c9190615376565b6040518563ffffffff1660e01b815260040161083b94939291906153c9565b5f604051808303815f87803b158015610852575f80fd5b505af1158015610864573d5f803e3d5ffd5b5050505060025f9054906101000a90046001600160a01b03166001600160a01b031663899cc04c8b898873__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156108d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f99190615376565b6040518563ffffffff1660e01b815260040161091894939291906153c9565b5f604051808303815f87803b15801561092f575f80fd5b505af1158015610941573d5f803e3d5ffd5b505060035460405163ad328d9f60e01b81526001600160a01b03909116925063ad328d9f915061097b908d908c908c908b906004016153c9565b5f604051808303815f87803b158015610992575f80fd5b505af11580156109a4573d5f803e3d5ffd5b505060405163a310e2a360e01b81526001600160601b03841660048201525f92506001600160a01b038e16915063a310e2a390602401602060405180830381865afa1580156109f5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1991906153fb565b905060055f9054906101000a90046001600160a01b03166001600160a01b031663d44f8a4b8d6001600160a01b0316637e7986696040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a7a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9e9190615376565b836001600160a01b03166382bfefc86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ada573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610afe91906153fb565b896040518463ffffffff1660e01b8152600401610b1d93929190615416565b6020604051808303815f875af1158015610b39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5d9190615376565b5073__$19db5f0436f9beab06d91aaebdafaf50ff$__63c9e90bf2610b8a6001546001600160a01b031690565b8e848e8e8d8d8d6040518963ffffffff1660e01b8152600401610c059897969594939291906001600160a01b039889168152968816602088015294871660408701526001600160601b039384166060870152918316608086015264ffffffffff1660a08501521660c083015290911660e08201526101000190565b6040805180830381865af4158015610c1f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c439190615442565b6040516330b8415f60e01b81526001600160601b0382166004820152919550935073__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af4158015610c9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc2919061547e565b15610d2957600254604051631bb297cd60e31b81526001600160a01b039091169063dd94be6890610cfb908e908e908890600401615497565b5f604051808303815f87803b158015610d12575f80fd5b505af1158015610d24573d5f803e3d5ffd5b505050505b604080516001600160601b0384811682528a811660208301528b81168284015264ffffffffff8a1660608301528681166080830152851660a08201526001600160a01b03871660c082015290517f28706c9692bea807fac7a4f471049774c7ef8746d3b527027de7918be6914ac89181900360e00190a150509850989650505050505050565b5f61052d30613dc3565b5f610dc261301d565b60405163a166aa8960e01b81523060048201526001600160a01b03919091169063a166aa8990602401602060405180830381865afa158015610e06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2a919061547e565b15905090565b5f610e3a336106f3565b5f805f8073__$19db5f0436f9beab06d91aaebdafaf50ff$__631b04bdc8610e6a6001546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523360248201526001600160601b038a16604482015260640161016060405180830381865af4158015610ec2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ee69190615558565b50600354604051631696791160e11b815294985092965090945092505f916001600160a01b0390911690632d2cf22290610f289087908c908c90600401615497565b6020604051808303815f875af1158015610f44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f689190615376565b905080955060025f9054906101000a90046001600160a01b03166001600160a01b03166389fad8a285848473__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610fda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ffe9190615376565b6040518563ffffffff1660e01b815260040161101d94939291906153c9565b5f604051808303815f87803b158015611034575f80fd5b505af1158015611046573d5f803e3d5ffd5b505050507f1486849121d5ae771349472444bdddfe08862a6644665b5fd7ed4cf14a51db7883838a848a6040516110819594939291906155c6565b60405180910390a16040516357f80bbf60e01b81526001600160601b03831660048201526001600160a01b038616906357f80bbf9060240160e060405180830381865afa1580156110d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f891906155f8565b60a001516111f2575f6111136001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038b1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611160573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061118491906153fb565b60405163e073590160e01b815290915073__$19db5f0436f9beab06d91aaebdafaf50ff$__9063e0735901906111c4908990879086908d9060040161561d565b5f6040518083038186803b1580156111da575f80fd5b505af41580156111ec573d5f803e3d5ffd5b50505050505b505050505092915050565b611206336106f3565b5f80611210614019565b915091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611251573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061127591906153fb565b6040516357f80bbf60e01b81526001600160601b03851660048201529091506001600160a01b038216906357f80bbf9060240160e060405180830381865afa1580156112c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e791906155f8565b60a001516113185760405163664958ad60e01b81526001600160601b03841660048201526024015b60405180910390fd5b5f61132b6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03861660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611378573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139c91906153fb565b90507ff93784364e35bd9d02fb31e12793254279ee0381ed65b4fa39ee297b22fdd79a8482876040516113d193929190615416565b60405180910390a160405163e073590160e01b815273__$19db5f0436f9beab06d91aaebdafaf50ff$__9063e073590190611416908590889086908b9060040161561d565b5f6040518083038186803b15801561142c575f80fd5b505af415801561143e573d5f803e3d5ffd5b505050505050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c61146b6104ab565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af41580156114a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114cd9190615664565b5f80516020615f6f8339815191528054600160401b900460ff16806114ff575080546001600160401b03808416911610155b1561151d5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611547836140ba565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f80516020615f6f8339815191528054600160401b810460ff1615906001600160401b03165f811580156115c45750825b90505f826001600160401b031660011480156115df5750303b155b9050811580156115ed575080155b1561160b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561163557845460ff60401b1916600160401b1785555b61163f87876140db565b831561168657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b5f611699336106f3565b6116a4836016613c8f565b5f806116ae614019565b915091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ef573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061171391906153fb565b9050849350836001600160601b031673__$3bac17678db7ae928afa209f2f44deec9c$__63262b32d2909173__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af4158015611785573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117a99190615376565b6040516001600160e01b031960e085901b1681526001600160601b03928316600482015291166024820152604401602060405180830381865af41580156117f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611816919061547e565b1561189157604051630232ca4960e01b81526001600160601b03871660048201526001600160a01b03821690630232ca4990602401602060405180830381865afa158015611866573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061188a9190615376565b93506119ad565b604051630232ca4960e01b81526001600160601b038716600482015261190b9085906001600160a01b03841690630232ca4990602401602060405180830381865afa1580156118e2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119069190615376565b6142f3565b156119ad57604051630232ca4960e01b81526001600160601b038716600482015284906001600160a01b03831690630232ca4990602401602060405180830381865afa15801561195d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119819190615376565b604051637a2a246360e01b81526001600160601b0392831660048201529116602482015260440161130f565b5f826001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ea573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a0e91906153fb565b905060025f9054906101000a90046001600160a01b03166001600160a01b031663899cc04c828973__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015611a7c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa09190615376565b896040518563ffffffff1660e01b8152600401611ac094939291906153c9565b5f604051808303815f87803b158015611ad7575f80fd5b505af1158015611ae9573d5f803e3d5ffd5b5050505060025f9054906101000a90046001600160a01b03166001600160a01b03166389fad8a282868873__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015611b5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7e9190615376565b6040518563ffffffff1660e01b8152600401611b9d94939291906153c9565b5f604051808303815f87803b158015611bb4575f80fd5b505af1158015611bc6573d5f803e3d5ffd5b50505050505f611bde6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03891660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611c2b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c4f91906153fb565b60405163a310e2a360e01b81526001600160601b03861660048201529091505f906001600160a01b0384169063a310e2a390602401602060405180830381865afa158015611c9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cc391906153fb565b90505f816001600160a01b03166382bfefc86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d02573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d2691906153fb565b604080516001600160601b038c811682526001600160a01b0387811660208401528416828401528a16606082015290519192507f5570b1fde7a6e4fe77febc49a50067a02fef8b1b067f94740877b4f7d2239d8f919081900360800190a16040516333f6af9b60e11b81526001600160a01b038316906367ed5f3690611db29086908b9060040161567f565b5f604051808303815f87803b158015611dc9575f80fd5b505af11580156111ec573d5f803e3d5ffd5b5f611de5336106f3565b5f805f805f73__$19db5f0436f9beab06d91aaebdafaf50ff$__631b04bdc8611e166001546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523360248201526001600160601b038b16604482015260640161016060405180830381865af4158015611e6e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e929190615558565b6040516308a390bb60e21b81526001600160601b0383166004820152949950929750909550935091505f906001600160a01b0387169063228e42ec90602401602060405180830381865afa158015611eec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f109190615376565b9050611f26611f1f828a61437f565b83516142f3565b15611f6a57815160405163b806175d60e01b81526001600160601b03808616600483015291821660248201528183166044820152908916606482015260840161130f565b505f73__$19db5f0436f9beab06d91aaebdafaf50ff$__63d775bd0a611f986001546001600160a01b031690565b88868c6040518563ffffffff1660e01b8152600401611fba94939291906156a1565b6040805180830381865af4158015611fd4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ff89190615442565b60025460405163d56cd3d560e01b81529199509192506001600160a01b039091169063d56cd3d59061203490889087908c9087906004016153c9565b5f604051808303815f87803b15801561204b575f80fd5b505af115801561205d573d5f803e3d5ffd5b505060035460405163c548949d60e01b81526001600160a01b03909116925063c548949d915061209790899089908e908d906004016156a1565b5f604051808303815f87803b1580156120ae575f80fd5b505af11580156120c0573d5f803e3d5ffd5b505050507fa397b0d38fe748a8c29cce53eab5736ef0c29c156e7a9586ae8b88a8557b414584848b8b8b6040516120fb9594939291906155c6565b60405180910390a18160a001516121fe575f61211f6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038c1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa15801561216c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061219091906153fb565b60405163810fbd7560e01b815290915073__$19db5f0436f9beab06d91aaebdafaf50ff$__9063810fbd75906121d0908a90889086908f9060040161561d565b5f6040518083038186803b1580156121e6575f80fd5b505af41580156121f8573d5f803e3d5ffd5b50505050505b50505050505092915050565b5f73__$1d92393fa9ccd763988368ce8a1cb90d26$__63645ceefe600f61222f6125a8565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865af4158015612272573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052d9190615664565b61229f336106f3565b6122aa826015613c8f565b5f6122be8260600151836101000151614404565b905060035f9054906101000a90046001600160a01b03166001600160a01b031663ad328d9f856001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561231f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061234391906153fb565b858560200151856040518563ffffffff1660e01b815260040161236994939291906153c9565b5f604051808303815f87803b158015612380575f80fd5b505af1158015612392573d5f803e3d5ffd5b505050505f846001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123f791906153fb565b905060055f9054906101000a90046001600160a01b03166001600160a01b031663d44f8a4b826001600160a01b0316637e7986696040518163ffffffff1660e01b8152600401602060405180830381865afa158015612458573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061247c9190615376565b855160405163037efc5960e61b81526001600160601b0390911660048201526001600160a01b0385169063dfbf164090602401602060405180830381865afa1580156124ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124ee91906153fb565b856040518463ffffffff1660e01b815260040161250d93929190615416565b6020604051808303815f875af1158015612529573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061254d9190615376565b50602083810151604080516001600160601b0392831681528783169381019390935290841682820152517fbc6be91fd22e69f94bdd1976de7eee45121482e27cc577bc10329f836be76a4f9181900360600190a15050505050565b5f6125b161301d565b6001600160a01b03166376b707b76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ec573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052d91906156ee565b3361261961301d565b6001600160a01b0316816001600160a01b0316146126545760405162d1953b60e31b81526001600160a01b038216600482015260240161130f565b816001600160a01b03163b5f03612689576040516361798f2f60e11b81526001600160a01b038316600482015260240161130f565b6126928261444e565b5050565b5f806126a1336106f3565b6126ac86600c613c8f565b6126b7856015613c8f565b6126c2846016613c8f565b5f8073__$19db5f0436f9beab06d91aaebdafaf50ff$__6381c0eb6c8b6001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561271a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061273e91906153fb565b8a886040518463ffffffff1660e01b815260040161275e93929190615497565b608060405180830381865af4158015612779573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061279d9190615709565b600354604051634adcf90960e01b81529398509196509294509192506001600160a01b0390911690634adcf909906127df908d908b908b9089906004016153c9565b5f604051808303815f87803b1580156127f6575f80fd5b505af1158015612808573d5f803e3d5ffd5b5050505060055f9054906101000a90046001600160a01b03166001600160a01b031663ea48ce9b8b6001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561286b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061288f9190615376565b8b876040518463ffffffff1660e01b81526004016128af93929190615416565b6020604051808303815f875af11580156128cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128ef9190615376565b508015612a40575f6129096001546001600160a01b031690565b60405163bf8e179760e01b81526001600160601b03851660048201526001600160a01b03919091169063bf8e179790602401602060405180830381865afa158015612956573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061297a91906153fb565b604051634deed57960e01b81526001600160601b03808b166004830152808a166024830152871660448201529091506001600160a01b03821690634deed579906064015f604051808303815f87803b1580156129d4575f80fd5b505af11580156129e6573d5f803e3d5ffd5b5050604080516001600160601b0387811682528b811660208301528c8116828401528916606082015290517f6c23de2cbade351ab10fe6b009f74e634e44d95ace4e5048cd0eecf9060265c89350908190036080019150a1505b7fb5fc4a79e60dffb5ff6cc29b173a75c6b222e41bbe851a33d9b383c08dc091c98287898787604051612a779594939291906155c6565b60405180910390a15050965096945050505050565b5f805f80516020615f2f83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015612af8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b1c919061547e565b15612ba7576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612b7d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ba191906153fb565b91505090565b54600160601b90046001600160a01b0316919050565b612bc6336106f3565b5f80612bd0614019565b915091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c3591906153fb565b6040516357f80bbf60e01b81526001600160601b03851660048201529091506001600160a01b038216906357f80bbf9060240160e060405180830381865afa158015612c83573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ca791906155f8565b60a00151612cd35760405163664958ad60e01b81526001600160601b038416600482015260240161130f565b5f612ce66001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03861660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612d33573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d5791906153fb565b90507f67e4007a2396f32c2c58b0546d5dc80e8097a965b3de4127c33f3610864416bd848287604051612d8c93929190615416565b60405180910390a160405163810fbd7560e01b815273__$19db5f0436f9beab06d91aaebdafaf50ff$__9063810fbd7590611416908590889086908b9060040161561d565b5f80516020615f4f83398151915280545f9190600160a01b900460ff16612df8575f612ba1565b638fb3603760e01b91505090565b612e0f336106f3565b5f80612e19614019565b915091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e7e91906153fb565b6040516357f80bbf60e01b81526001600160601b03851660048201529091505f906001600160a01b038316906357f80bbf9060240160e060405180830381865afa158015612ece573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ef291906155f8565b80516001600160601b038716825260408051631a99b41b60e31b8152905192935090916001600160a01b0386169163d4cda0d89160048083019260209291908290030181865afa158015612f48573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f6c91906153fb565b6001600160a01b03166396f4df2f868460ff6040518463ffffffff1660e01b8152600401612f9c93929190615762565b5f604051808303815f87803b158015612fb3575f80fd5b505af1158015612fc5573d5f803e3d5ffd5b5050604080516001600160601b03898116825285811660208301528a168183015290517f59c52d680289bf3ed1eaf8c98c2385d021cbc74043dd1ed596d6383f63235ffc9350908190036060019150a1505050505050565b5f80516020615f4f833981519152546001600160a01b031690565b613041336106f3565b61304c816016613c8f565b5f80613056614019565b600354604051632aa6b2cb60e21b81529294509092505f9182916001600160a01b03169063aa9acb2c90613090908690899060040161567f565b60408051808303815f875af11580156130ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130cf9190615442565b9150915060025f9054906101000a90046001600160a01b03166001600160a01b03166389fad8a2846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015613132573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061315691906153fb565b86613161868661437f565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156131a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131cc9190615376565b6040518563ffffffff1660e01b81526004016131eb94939291906153c9565b5f604051808303815f87803b158015613202575f80fd5b505af1158015613214573d5f803e3d5ffd5b505050507f64c75a4392ba38fee1b5a44b61e3dd0cae424d2d43eb2b0c99772efe31e1c042836001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015613275573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132999190615376565b604080516001600160601b03928316815282881660208201529188169082015260600160405180910390a16132ce828261437f565b6040516330b8415f60e01b81526001600160601b03909116600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af4158015613325573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613349919061547e565b15613510575f836001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561338b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133af91906153fb565b60405163f0ea17c360e01b81526001600160601b03871660048201526001600160a01b03919091169063f0ea17c3906024015f60405180830381865afa1580156133fb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526134229190810190615847565b905080602001516001600160a01b03166367ed5f366134496001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038a1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015613496573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ba91906153fb565b6134c4868661437f565b6040518363ffffffff1660e01b81526004016134e192919061567f565b5f604051808303815f87803b1580156134f8575f80fd5b505af115801561350a573d5f803e3d5ffd5b50505050505b5050505050565b613520336106f3565b61352b836015613c8f565b5f80613535614019565b915091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015613576573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061359a91906153fb565b90505f6135af6001546001600160a01b031690565b60405163677d3feb60e11b81526001600160601b03861660048201526001600160a01b03919091169063cefa7fd690602401602060405180830381865afa1580156135fc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136209190615376565b60405163bd7d9d8560e01b81526001600160601b03891660048201529091505f906001600160a01b0384169063bd7d9d85906024015f60405180830381865afa15801561366f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136969190810190615922565b90506136a5815f0151836144ae565b156136e1578051604051636083e75360e01b81526001600160601b03808b1660048301529182166024820152908316604482015260640161130f565b604080516001600160601b038a8116825261ffff8a16602083015288168183015290517f6a2b4f9e8a4bb9038617a047352d25c5ac3c64c4aaba95e576b978a91b6666fb9181900360600190a16040516302d764c760e21b81526001600160601b03831660048201526001600160a01b03841690630b5d931c906024015f60405180830381865afa158015613778573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261379f9190810190615b3d565b511561389d575f6137b86001546001600160a01b031690565b60405163bf8e179760e01b81526001600160601b03851660048201526001600160a01b03919091169063bf8e179790602401602060405180830381865afa158015613805573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061382991906153fb565b6040516370f90b7d60e11b81526001600160601b03808c16600483015261ffff8b166024830152891660448201529091506001600160a01b0382169063e1f216fa906064015f604051808303815f87803b158015613885575f80fd5b505af1158015613897573d5f803e3d5ffd5b50505050505b5050505050505050565b6138b0336106f3565b6138bb826016613c8f565b5f6138ce6001546001600160a01b031690565b60405163677d3feb60e11b81526001600160601b03851660048201529091505f906001600160a01b0383169063cefa7fd690602401602060405180830381865afa15801561391e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139429190615376565b60405163c52721a360e01b81526001600160a01b03841660048201526001600160601b0382166024820152600160448201529091505f9073__$fb599632d08395912d9d70eb2f0f93b5e2$__9063c52721a3906064015f60405180830381865af41580156139b2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526139d99190810190615c1f565b9150505f8190505f6139f48660e0015187610160015161437f565b90505f613a0b87610100015188610180015161437f565b90505f876060015190505f846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a52573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a7691906153fb565b6002549091506001600160a01b031663d56cd3d58289613a96868861437f565b886040518563ffffffff1660e01b8152600401613ab694939291906153c9565b5f604051808303815f87803b158015613acd575f80fd5b505af1158015613adf573d5f803e3d5ffd5b50506002546040516317bb009960e21b81526001600160a01b039091169250635eec02649150613b199084908e90879089906004016153c9565b5f604051808303815f87803b158015613b30575f80fd5b505af1158015613b42573d5f803e3d5ffd5b505050507fe576d34ae9e41588783e58480f9c2d6ab599d21d76f09a165251fbaf831706f6878b848688604051613b7d9594939291906155c6565b60405180910390a150505050505050505050565b5f80516020615f4f8339815191525f80613bc9613bac61301d565b8730613bbb60045f8a8c615d01565b613bc491615d28565b6144f8565b9150915081613c875763ffffffff811615613c6457825460ff60a01b1916600160a01b178355613bf761301d565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b8152600401613c2693929190615d60565b5f604051808303815f87803b158015613c3d575f80fd5b505af1158015613c4f573d5f803e3d5ffd5b5050845460ff60a01b1916855550613c879050565b60405162d1953b60e31b81526001600160a01b038716600482015260240161130f565b505050505050565b60405163037c8cb160e51b815260ff8216600482015273__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636f91962090602401602060405180830381865af4158015613cdf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d03919061547e565b80613d9157506001546001600160a01b0316604051635b12715d60e11b81526001600160601b038416600482015260ff831660248201526001600160a01b03919091169063b624e2ba90604401602060405180830381865afa158015613d6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d8f919061547e565b155b156126925760405163d711af7560e01b81526001600160601b038316600482015260ff8216602482015260440161130f565b5f805f80516020615f2f83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015613e2f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e53919061547e565b15613e7f5780546040516301ab8b6760e21b81526001600160601b03909116600482015260240161130f565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa158015613ed1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ef5919061547e565b613f1d5760405163b9304b0d60e01b81526001600160a01b038416600482015260240161130f565b6001546001600160a01b0316604051632f2a35f760e11b81526001600160a01b0385811660048301529190911690635e546bee90602401602060405180830381865afa158015613f6f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f939190615376565b81546bffffffffffffffffffffffff19166001600160601b039190911690811782557f88857b75cbef7f257c9d5a473e28aaf6a91cc28f717f60f2cda3bcf5623d7b5490613fdf612a8c565b604080516001600160601b0390931683526001600160a01b0390911660208301520160405180910390a1546001600160601b031692915050565b5f8073__$19db5f0436f9beab06d91aaebdafaf50ff$__6339b8cee86140476001546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523360248201526044016040805180830381865af415801561408e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906140b29190615d9f565b915091509091565b6140c2614600565b60405163502ec37160e01b815260040160405180910390fd5b5f80516020615f6f8339815191528054600160401b810460ff1615906001600160401b03165f8115801561410c5750825b90505f826001600160401b031660011480156141275750303b155b905081158015614135575080155b156141535760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561417d57845460ff60401b1916600160401b1785555b5f80878060200190518101906141939190615dcc565b915091506141a282828b614638565b6141ac60286146da565b600280546001600160a01b0319166001600160a01b03929092169190911790556141d660166146da565b600380546001600160a01b0319166001600160a01b0392909216919091179055614200600b6146da565b600480546001600160a01b0319166001600160a01b03928316179055600154166001600160a01b0316630e9ed68b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561425b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061427f91906153fb565b600580546001600160a01b0319166001600160a01b03929092169190911790556142af6337903e8d60e01b614771565b5050831561168657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200161167d565b604051632601631360e21b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__906398058c4c906044015b602060405180830381865af4158015614354573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614378919061547e565b9392505050565b60405163274acb3560e01b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb35906044015b602060405180830381865af41580156143e0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143789190615376565b6040516363cf551160e11b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063c79eaa22906044016143c5565b5f80516020615f4f83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b6040516399009c5160e01b81526001600160601b038084166004830152821660248201525f9073__$94a2c899be079b00d952d0d84fffaa5c34$__906399009c5190604401614339565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516145669190615de8565b5f60405180830381855afa9150503d805f811461459e576040519150601f19603f3d011682016040523d82523d5f602084013e6145a3565b606091505b509150915081156145f55760408151106145d557808060200190518101906145cb9190615dfe565b90945092506145f5565b60208151106145f557808060200190518101906145f2919061547e565b93505b505094509492505050565b5f80516020615f6f83398151915254600160401b900460ff1661463657604051631afcd79f60e31b815260040160405180910390fd5b565b614640614600565b6146486147a4565b6146c58383846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015614689573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906146ad9190615376565b60085f8660405180602001604052805f8152506147b4565b6146d563daf9067160e01b614771565b505050565b5f6146ed6001546001600160a01b031690565b6001600160a01b031663d39e6043836147046125a8565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015614747573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061476b91906153fb565b92915050565b614779614600565b6147a1816001600160e01b0319165f908152602081905260409020805460ff19166001179055565b50565b6147ac614600565b6146366148f1565b6147bc614600565b604051632330f24760e01b81526001600160a01b038816600482015273__$fb599632d08395912d9d70eb2f0f93b5e2$__90632330f24790602401602060405180830381865af4158015614812573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614836919061547e565b61485e5760405163cf6935e560e01b81526001600160a01b038816600482015260240161130f565b6148678761491f565b6148718683614930565b5f7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b861515021781559050600181016148e08382615e74565b5061389d634a531f3360e01b614771565b6148f9614600565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b614927614600565b6147a1816149a6565b614938614600565b6149406149b7565b614949826149ff565b6001600160a01b0381166149705760405163f17ef42d60e01b815260040160405180910390fd5b5f80516020615f2f83398151915280546001600160601b0316600160601b6001600160a01b039093169290920291909117905550565b6149ae614600565b6147a18161444e565b6149bf614600565b6146366301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b614a07614600565b604051633334d16b60e01b81526001600160a01b038216600482015273__$fb599632d08395912d9d70eb2f0f93b5e2$__90633334d16b90602401602060405180830381865af4158015614a5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614a81919061547e565b614aa95760405163fdeac91f60e01b81526001600160a01b038216600482015260240161130f565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f60208284031215614adb575f80fd5b81356001600160e01b031981168114614378575f80fd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081526001600160601b0382511660208201526001600160601b03602083015116604082015260ff60408301511660608201525f6060830151614b68608084018215159052565b5060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e080840152614bac610100840182614af2565b949350505050565b6001600160a01b03811681146147a1575f80fd5b6001600160601b03811681146147a1575f80fd5b8035614be781614bc8565b919050565b64ffffffffff811681146147a1575f80fd5b8035614be781614bec565b5f805f805f805f80610100898b031215614c21575f80fd5b8835614c2c81614bb4565b97506020890135614c3c81614bb4565b96506040890135614c4c81614bc8565b95506060890135614c5c81614bc8565b94506080890135614c6c81614bc8565b935060a0890135614c7c81614bec565b925060c0890135614c8c81614bc8565b915060e0890135614c9c81614bb4565b809150509295985092959890939650565b5f8060408385031215614cbe575f80fd5b8235614cc981614bc8565b91506020830135614cd981614bc8565b809150509250929050565b5f60208284031215614cf4575f80fd5b813561437881614bc8565b634e487b7160e01b5f52604160045260245ffd5b60405161020081016001600160401b0381118282101715614d3657614d36614cff565b60405290565b60405161024081016001600160401b0381118282101715614d3657614d36614cff565b60405160e081016001600160401b0381118282101715614d3657614d36614cff565b604051606081016001600160401b0381118282101715614d3657614d36614cff565b60405161010081016001600160401b0381118282101715614d3657614d36614cff565b604051601f8201601f191681016001600160401b0381118282101715614dee57614dee614cff565b604052919050565b5f6001600160401b03821115614e0e57614e0e614cff565b50601f01601f191660200190565b5f82601f830112614e2b575f80fd5b8135614e3e614e3982614df6565b614dc6565b818152846020838601011115614e52575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215614e7e575f80fd5b81356001600160401b03811115614e93575f80fd5b614bac84828501614e1c565b5f8060408385031215614eb0575f80fd5b8235614ebb81614bb4565b915060208301356001600160401b03811115614ed5575f80fd5b614ee185828601614e1c565b9150509250929050565b6001600160c01b0319811681146147a1575f80fd5b8035614be781614eeb565b61ffff811681146147a1575f80fd5b8035614be781614f0b565b5f805f60608486031215614f37575f80fd5b8335614f4281614bb4565b92506020840135614f5281614bc8565b915060408401356001600160401b03811115614f6c575f80fd5b84016102008187031215614f7e575f80fd5b614f86614d13565b614f8f82614bdc565b8152614f9d60208301614bdc565b6020820152614fae60408301614f00565b6040820152614fbf60608301614bdc565b6060820152614fd060808301614bdc565b6080820152614fe160a08301614f00565b60a0820152614ff260c08301614f1a565b60c082015261500360e08301614f1a565b60e08201526150156101008301614bdc565b6101008201526150286101208301614bdc565b61012082015261503b6101408301614bfe565b61014082015261504e6101608301614bfe565b6101608201526150616101808301614bfe565b6101808201526150746101a08301614bfe565b6101a08201526101c08201356001600160401b03811115615093575f80fd5b61509f88828501614e1c565b6101c0830152506101e08201356001600160401b038111156150bf575f80fd5b6150cb88828501614e1c565b6101e08301525080925050509250925092565b5f602082840312156150ee575f80fd5b813561437881614bb4565b5f805f805f8060c0878903121561510e575f80fd5b863561511981614bb4565b9550602087013561512981614bb4565b9450604087013561513981614bc8565b9350606087013561514981614bc8565b9250608087013561515981614bc8565b915060a087013561516981614bc8565b809150509295509295509295565b5f805f60608486031215615189575f80fd5b833561519481614bc8565b925060208401356151a481614f0b565b915060408401356151b481614bc8565b809150509250925092565b5f808284036102608112156151d2575f80fd5b83356151dd81614bc8565b9250610240601f19820112156151f1575f80fd5b506151fa614d3c565b61520660208501614bdc565b815261521460408501614bdc565b602082015261522560608501614bdc565b604082015261523660808501614bdc565b606082015261524760a08501614bdc565b608082015261525860c08501614bdc565b60a082015261526960e08501614bdc565b60c082015261527b6101008501614bdc565b60e082015261528d6101208501614bdc565b6101008201526152a06101408501614bdc565b6101208201526152b36101608501614bdc565b6101408201526152c66101808501614bdc565b6101608201526152d96101a08501614bdc565b6101808201526152ec6101c08501614bdc565b6101a08201526152ff6101e08501614bdc565b6101c08201526153126102008501614bdc565b6101e08201526153256102208501614bdc565b6102008201526153386102408501614bdc565b610220820152809150509250929050565b5f60208284031215615359575f80fd5b815162ffffff81168114614378575f80fd5b8051614be781614bc8565b5f60208284031215615386575f80fd5b815161437881614bc8565b600181811c908216806153a557607f821691505b6020821081036153c357634e487b7160e01b5f52602260045260245ffd5b50919050565b6001600160a01b039490941684526001600160601b039283166020850152908216604084015216606082015260800190565b5f6020828403121561540b575f80fd5b815161437881614bb4565b6001600160601b0393841681526001600160a01b03929092166020830152909116604082015260600190565b5f8060408385031215615453575f80fd5b825161545e81614bc8565b6020840151909250614cd981614bc8565b80518015158114614be7575f80fd5b5f6020828403121561548e575f80fd5b6143788261546f565b6001600160a01b039390931683526001600160601b03918216602084015216604082015260600190565b5f60e082840312156154d1575f80fd5b6154d9614d5f565b905081516154e681614bc8565b815260208201516154f681614bb4565b6020820152604082015161550981614bb4565b604082015261551a6060830161546f565b606082015261552b6080830161546f565b608082015261553c60a0830161546f565b60a082015261554d60c0830161546f565b60c082015292915050565b5f805f805f610160868803121561556d575f80fd5b855161557881614bb4565b602087015190955061558981614bb4565b604087015190945061559a81614bc8565b60608701519093506155ab81614bc8565b91506155ba87608088016154c1565b90509295509295909350565b6001600160601b0395861681529385166020850152918416604084015283166060830152909116608082015260a00190565b5f60e08284031215615608575f80fd5b61437883836154c1565b8051614be781614bb4565b6001600160a01b0394851681526001600160601b0393841660208201529190931660408201529116606082015260800190565b6001600160401b03811681146147a1575f80fd5b5f60208284031215615674575f80fd5b815161437881615650565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0394851681529290931660208301526001600160601b039081166040830152909116606082015260800190565b60ff811681146147a1575f80fd5b8051614be7816156d5565b5f602082840312156156fe575f80fd5b8151614378816156d5565b5f805f806080858703121561571c575f80fd5b845161572781614bc8565b602086015190945061573881614bc8565b604086015190935061574981614bc8565b91506157576060860161546f565b905092959194509250565b5f610120820190506001600160601b03851682526001600160601b03845116602083015260018060a01b03602085015116604083015260018060a01b03604085015116606083015260608401511515608083015260808401516157c960a084018215159052565b5060a0840151151560c083810191909152840151151560e083015260ff8316610100830152614bac565b5f615800614e3984614df6565b9050828152838383011115615813575f80fd5b8282602083015e5f602084830101529392505050565b5f82601f830112615838575f80fd5b614378838351602085016157f3565b5f60208284031215615857575f80fd5b81516001600160401b0381111561586c575f80fd5b82016060818503121561587d575f80fd5b615885614d81565b81516001600160401b0381111561589a575f80fd5b8201601f810186136158aa575f80fd5b6158b9868251602084016157f3565b82525060208201516158ca81614bb4565b602082015260408201516001600160401b038111156158e7575f80fd5b6158f386828501615829565b604083015250949350505050565b8051614be781614eeb565b8051614be781614f0b565b8051614be781614bec565b5f60208284031215615932575f80fd5b81516001600160401b03811115615947575f80fd5b82016102008185031215615959575f80fd5b615961614d13565b61596a8261536b565b81526159786020830161536b565b602082015261598960408301615901565b604082015261599a6060830161536b565b60608201526159ab6080830161536b565b60808201526159bc60a08301615901565b60a08201526159cd60c0830161590c565b60c08201526159de60e0830161590c565b60e08201526159f0610100830161536b565b610100820152615a03610120830161536b565b610120820152615a166101408301615917565b610140820152615a296101608301615917565b610160820152615a3c6101808301615917565b610180820152615a4f6101a08301615917565b6101a08201526101c08201516001600160401b03811115615a6e575f80fd5b615a7a86828501615829565b6101c0830152506101e08201516001600160401b03811115615a9a575f80fd5b615aa686828501615829565b6101e083015250949350505050565b5f82601f830112615ac4575f80fd5b81516001600160401b03811115615add57615add614cff565b8060051b615aed60208201614dc6565b91825260208185018101929081019086841115615b08575f80fd5b6020860192505b83831015615b33578251615b2281614bc8565b825260209283019290910190615b0f565b9695505050505050565b5f60208284031215615b4d575f80fd5b81516001600160401b03811115615b62575f80fd5b82016101008185031215615b74575f80fd5b615b7c614da3565b615b858261546f565b8152615b936020830161546f565b6020820152615ba46040830161546f565b6040820152615bb5606083016156e3565b6060820152615bc6608083016156e3565b6080820152615bd760a0830161536b565b60a0820152615be860c0830161536b565b60c082015260e08201516001600160401b03811115615c05575f80fd5b615c1186828501615ab5565b60e083015250949350505050565b5f8060408385031215615c30575f80fd5b82516001600160401b03811115615c45575f80fd5b830160e08186031215615c56575f80fd5b615c5e614d5f565b615c678261536b565b8152615c756020830161536b565b6020820152615c86604083016156e3565b6040820152615c976060830161546f565b6060820152615ca860808301615612565b6080820152615cb960a08301615612565b60a082015260c08201516001600160401b03811115615cd6575f80fd5b615ce287828501615829565b60c0830152509250615cf8905060208401615612565b90509250929050565b5f8085851115615d0f575f80fd5b83861115615d1b575f80fd5b5050820193919092039150565b80356001600160e01b03198116906004841015615d59576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f8060408385031215615db0575f80fd5b8251615dbb81614bc8565b6020840151909250614cd981614bb4565b5f8060408385031215615ddd575f80fd5b8251615dbb81614bb4565b5f82518060208501845e5f920191825250919050565b5f8060408385031215615e0f575f80fd5b615e188361546f565b9150602083015163ffffffff81168114614cd9575f80fd5b601f8211156146d557805f5260205f20601f840160051c81016020851015615e555750805b601f840160051c820191505b81811015613510575f8155600101615e61565b81516001600160401b03811115615e8d57615e8d614cff565b615ea181615e9b8454615391565b84615e30565b6020601f821160018114615ed3575f8315615ebc5750848201515b5f19600385901b1c1916600184901b178455613510565b5f84815260208120601f198516915b82811015615f025787850151825560209485019460019092019101615ee2565b5084821015615f1f57868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220ec7a803172d38e84656c8b499429e1d33a67b9e25649cdf5e109fa9ba2e64b9c64736f6c634300081a0033",
1500
+ "deployedBytecode": "0x608060405234801561000f575f80fd5b50600436106101d1575f3560e01c80636c741e78116100fe5780638fb360371161009e578063bf7e214f1161006e578063bf7e214f1461046a578063d0d63b0914610472578063e1f216fa14610485578063fb3bcd1f14610498575f80fd5b80638fb360371461041b578063ada9652e1461043c578063b68d180914610450578063bca99e3914610457575f80fd5b80637a9e5e4b116100d95780637a9e5e4b146103da57806384d1f7cf146103ed578063893d20e8146104005780638e4a508e14610408575f80fd5b80636c741e781461038d578063750787f5146103ad57806376b707b7146103c0575f80fd5b806326889b091161017457806354e507791161014457806354e50779146103255780635ab1bd5314610338578063644c45e01461035d5780636c1e9dff1461037a575f80fd5b806326889b09146102d7578063329c71c0146102ea578063329d6e74146102ff57806349bb9e4b14610312575f80fd5b8063125510a3116101af578063125510a314610247578063138461e01461027a5780631eff4b221461029a57806322f3e2d4146102cf575f80fd5b806301ffc9a7146101d55780630d8e6e2c146102165780630fec111c14610232575b5f80fd5b6102016101e3366004614acb565b6001600160e01b0319165f9081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b61021e6104ab565b60405162ffffff909116815260200161020d565b61023a610532565b60405161020d9190614b20565b61025a610255366004614c09565b6106ec565b604080516001600160601b0393841681529290911660208301520161020d565b610282610daf565b6040516001600160601b03909116815260200161020d565b6102c17f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b60405190815260200161020d565b610201610db9565b6102826102e5366004614cad565b610e30565b6102fd6102f8366004614ce4565b6111fd565b005b6102fd61030d366004614e6e565b611449565b6102fd610320366004614e9f565b611593565b610282610333366004614cad565b61168f565b6001546001600160a01b03165b6040516001600160a01b03909116815260200161020d565b5f80516020615f2f833981519152546001600160601b0316610282565b610282610388366004614cad565b611ddb565b61039561220a565b6040516001600160401b03909116815260200161020d565b6102fd6103bb366004614f25565b612296565b6103c86125a8565b60405160ff909116815260200161020d565b6102fd6103e83660046150de565b612610565b61025a6103fb3660046150f9565b612696565b610345612a8c565b6102fd610416366004614ce4565b612bbd565b610423612dd1565b6040516001600160e01b0319909116815260200161020d565b6102c15f80516020615f2f83398151915281565b600f6103c8565b6102fd610465366004614ce4565b612e06565b61034561301d565b6102fd610480366004614ce4565b613038565b6102fd610493366004615177565b613517565b6102fd6104a63660046151bf565b6138a7565b604051632efe011360e01b8152600360048201525f60248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af4158015610509573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052d9190615349565b905090565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820152907f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156105de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106029190615376565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a00161064a612a8c565b6001600160a01b0316815260200182600101805461066790615391565b80601f016020809104026020016040519081016040528092919081815260200182805461069390615391565b80156106de5780601f106106b5576101008083540402835291602001916106de565b820191905f5260205f20905b8154815290600101906020018083116106c157829003601f168201915b505050505081525091505090565b5f806106fa335b5f36613b91565b610705876015613c8f565b5f6107186001546001600160a01b031690565b60405163677d3feb60e11b81526001600160601b03891660048201526001600160a01b03919091169063cefa7fd690602401602060405180830381865afa158015610765573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107899190615376565b905060025f9054906101000a90046001600160a01b03166001600160a01b03166389fad8a28b838873__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156107f8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061081c9190615376565b6040518563ffffffff1660e01b815260040161083b94939291906153c9565b5f604051808303815f87803b158015610852575f80fd5b505af1158015610864573d5f803e3d5ffd5b5050505060025f9054906101000a90046001600160a01b03166001600160a01b031663899cc04c8b898873__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156108d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f99190615376565b6040518563ffffffff1660e01b815260040161091894939291906153c9565b5f604051808303815f87803b15801561092f575f80fd5b505af1158015610941573d5f803e3d5ffd5b505060035460405163ad328d9f60e01b81526001600160a01b03909116925063ad328d9f915061097b908d908c908c908b906004016153c9565b5f604051808303815f87803b158015610992575f80fd5b505af11580156109a4573d5f803e3d5ffd5b505060405163a310e2a360e01b81526001600160601b03841660048201525f92506001600160a01b038e16915063a310e2a390602401602060405180830381865afa1580156109f5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1991906153fb565b905060055f9054906101000a90046001600160a01b03166001600160a01b031663d44f8a4b8d6001600160a01b0316637e7986696040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a7a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9e9190615376565b836001600160a01b03166382bfefc86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ada573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610afe91906153fb565b896040518463ffffffff1660e01b8152600401610b1d93929190615416565b6020604051808303815f875af1158015610b39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5d9190615376565b5073__$19db5f0436f9beab06d91aaebdafaf50ff$__63c9e90bf2610b8a6001546001600160a01b031690565b8e848e8e8d8d8d6040518963ffffffff1660e01b8152600401610c059897969594939291906001600160a01b039889168152968816602088015294871660408701526001600160601b039384166060870152918316608086015264ffffffffff1660a08501521660c083015290911660e08201526101000190565b6040805180830381865af4158015610c1f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c439190615442565b6040516330b8415f60e01b81526001600160601b0382166004820152919550935073__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af4158015610c9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc2919061547e565b15610d2957600254604051631bb297cd60e31b81526001600160a01b039091169063dd94be6890610cfb908e908e908890600401615497565b5f604051808303815f87803b158015610d12575f80fd5b505af1158015610d24573d5f803e3d5ffd5b505050505b604080516001600160601b0384811682528a811660208301528b81168284015264ffffffffff8a1660608301528681166080830152851660a08201526001600160a01b03871660c082015290517f28706c9692bea807fac7a4f471049774c7ef8746d3b527027de7918be6914ac89181900360e00190a150509850989650505050505050565b5f61052d30613dc3565b5f610dc261301d565b60405163a166aa8960e01b81523060048201526001600160a01b03919091169063a166aa8990602401602060405180830381865afa158015610e06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2a919061547e565b15905090565b5f610e3a336106f3565b5f805f8073__$19db5f0436f9beab06d91aaebdafaf50ff$__631b04bdc8610e6a6001546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523360248201526001600160601b038a16604482015260640161016060405180830381865af4158015610ec2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ee69190615558565b50600354604051631696791160e11b815294985092965090945092505f916001600160a01b0390911690632d2cf22290610f289087908c908c90600401615497565b6020604051808303815f875af1158015610f44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f689190615376565b905080955060025f9054906101000a90046001600160a01b03166001600160a01b03166389fad8a285848473__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610fda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ffe9190615376565b6040518563ffffffff1660e01b815260040161101d94939291906153c9565b5f604051808303815f87803b158015611034575f80fd5b505af1158015611046573d5f803e3d5ffd5b505050507f1486849121d5ae771349472444bdddfe08862a6644665b5fd7ed4cf14a51db7883838a848a6040516110819594939291906155c6565b60405180910390a16040516357f80bbf60e01b81526001600160601b03831660048201526001600160a01b038616906357f80bbf9060240160e060405180830381865afa1580156110d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f891906155f8565b60a001516111f2575f6111136001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038b1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611160573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061118491906153fb565b60405163e073590160e01b815290915073__$19db5f0436f9beab06d91aaebdafaf50ff$__9063e0735901906111c4908990879086908d9060040161561d565b5f6040518083038186803b1580156111da575f80fd5b505af41580156111ec573d5f803e3d5ffd5b50505050505b505050505092915050565b611206336106f3565b5f80611210614019565b915091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611251573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061127591906153fb565b6040516357f80bbf60e01b81526001600160601b03851660048201529091506001600160a01b038216906357f80bbf9060240160e060405180830381865afa1580156112c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e791906155f8565b60a001516113185760405163664958ad60e01b81526001600160601b03841660048201526024015b60405180910390fd5b5f61132b6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03861660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611378573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139c91906153fb565b90507ff93784364e35bd9d02fb31e12793254279ee0381ed65b4fa39ee297b22fdd79a8482876040516113d193929190615416565b60405180910390a160405163e073590160e01b815273__$19db5f0436f9beab06d91aaebdafaf50ff$__9063e073590190611416908590889086908b9060040161561d565b5f6040518083038186803b15801561142c575f80fd5b505af415801561143e573d5f803e3d5ffd5b505050505050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c61146b6104ab565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af41580156114a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114cd9190615664565b5f80516020615f6f8339815191528054600160401b900460ff16806114ff575080546001600160401b03808416911610155b1561151d5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611547836140ba565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f80516020615f6f8339815191528054600160401b810460ff1615906001600160401b03165f811580156115c45750825b90505f826001600160401b031660011480156115df5750303b155b9050811580156115ed575080155b1561160b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561163557845460ff60401b1916600160401b1785555b61163f87876140db565b831561168657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b5f611699336106f3565b6116a4836016613c8f565b5f806116ae614019565b915091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ef573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061171391906153fb565b9050849350836001600160601b031673__$3bac17678db7ae928afa209f2f44deec9c$__63262b32d2909173__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af4158015611785573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117a99190615376565b6040516001600160e01b031960e085901b1681526001600160601b03928316600482015291166024820152604401602060405180830381865af41580156117f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611816919061547e565b1561189157604051630232ca4960e01b81526001600160601b03871660048201526001600160a01b03821690630232ca4990602401602060405180830381865afa158015611866573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061188a9190615376565b93506119ad565b604051630232ca4960e01b81526001600160601b038716600482015261190b9085906001600160a01b03841690630232ca4990602401602060405180830381865afa1580156118e2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119069190615376565b6142f3565b156119ad57604051630232ca4960e01b81526001600160601b038716600482015284906001600160a01b03831690630232ca4990602401602060405180830381865afa15801561195d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119819190615376565b604051637a2a246360e01b81526001600160601b0392831660048201529116602482015260440161130f565b5f826001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ea573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a0e91906153fb565b905060025f9054906101000a90046001600160a01b03166001600160a01b031663899cc04c828973__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015611a7c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa09190615376565b896040518563ffffffff1660e01b8152600401611ac094939291906153c9565b5f604051808303815f87803b158015611ad7575f80fd5b505af1158015611ae9573d5f803e3d5ffd5b5050505060025f9054906101000a90046001600160a01b03166001600160a01b03166389fad8a282868873__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015611b5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7e9190615376565b6040518563ffffffff1660e01b8152600401611b9d94939291906153c9565b5f604051808303815f87803b158015611bb4575f80fd5b505af1158015611bc6573d5f803e3d5ffd5b50505050505f611bde6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03891660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611c2b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c4f91906153fb565b60405163a310e2a360e01b81526001600160601b03861660048201529091505f906001600160a01b0384169063a310e2a390602401602060405180830381865afa158015611c9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cc391906153fb565b90505f816001600160a01b03166382bfefc86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d02573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d2691906153fb565b604080516001600160601b038c811682526001600160a01b0387811660208401528416828401528a16606082015290519192507f5570b1fde7a6e4fe77febc49a50067a02fef8b1b067f94740877b4f7d2239d8f919081900360800190a16040516333f6af9b60e11b81526001600160a01b038316906367ed5f3690611db29086908b9060040161567f565b5f604051808303815f87803b158015611dc9575f80fd5b505af11580156111ec573d5f803e3d5ffd5b5f611de5336106f3565b5f805f805f73__$19db5f0436f9beab06d91aaebdafaf50ff$__631b04bdc8611e166001546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523360248201526001600160601b038b16604482015260640161016060405180830381865af4158015611e6e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e929190615558565b6040516308a390bb60e21b81526001600160601b0383166004820152949950929750909550935091505f906001600160a01b0387169063228e42ec90602401602060405180830381865afa158015611eec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f109190615376565b9050611f26611f1f828a61437f565b83516142f3565b15611f6a57815160405163b806175d60e01b81526001600160601b03808616600483015291821660248201528183166044820152908916606482015260840161130f565b505f73__$19db5f0436f9beab06d91aaebdafaf50ff$__63d775bd0a611f986001546001600160a01b031690565b88868c6040518563ffffffff1660e01b8152600401611fba94939291906156a1565b6040805180830381865af4158015611fd4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ff89190615442565b60025460405163d56cd3d560e01b81529199509192506001600160a01b039091169063d56cd3d59061203490889087908c9087906004016153c9565b5f604051808303815f87803b15801561204b575f80fd5b505af115801561205d573d5f803e3d5ffd5b505060035460405163c548949d60e01b81526001600160a01b03909116925063c548949d915061209790899089908e908d906004016156a1565b5f604051808303815f87803b1580156120ae575f80fd5b505af11580156120c0573d5f803e3d5ffd5b505050507fa397b0d38fe748a8c29cce53eab5736ef0c29c156e7a9586ae8b88a8557b414584848b8b8b6040516120fb9594939291906155c6565b60405180910390a18160a001516121fe575f61211f6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038c1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa15801561216c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061219091906153fb565b60405163810fbd7560e01b815290915073__$19db5f0436f9beab06d91aaebdafaf50ff$__9063810fbd75906121d0908a90889086908f9060040161561d565b5f6040518083038186803b1580156121e6575f80fd5b505af41580156121f8573d5f803e3d5ffd5b50505050505b50505050505092915050565b5f73__$1d92393fa9ccd763988368ce8a1cb90d26$__63645ceefe600f61222f6125a8565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865af4158015612272573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052d9190615664565b61229f336106f3565b6122aa826015613c8f565b5f6122be8260600151836101000151614404565b905060035f9054906101000a90046001600160a01b03166001600160a01b031663ad328d9f856001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561231f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061234391906153fb565b858560200151856040518563ffffffff1660e01b815260040161236994939291906153c9565b5f604051808303815f87803b158015612380575f80fd5b505af1158015612392573d5f803e3d5ffd5b505050505f846001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123f791906153fb565b905060055f9054906101000a90046001600160a01b03166001600160a01b031663d44f8a4b826001600160a01b0316637e7986696040518163ffffffff1660e01b8152600401602060405180830381865afa158015612458573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061247c9190615376565b855160405163037efc5960e61b81526001600160601b0390911660048201526001600160a01b0385169063dfbf164090602401602060405180830381865afa1580156124ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124ee91906153fb565b856040518463ffffffff1660e01b815260040161250d93929190615416565b6020604051808303815f875af1158015612529573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061254d9190615376565b50602083810151604080516001600160601b0392831681528783169381019390935290841682820152517fbc6be91fd22e69f94bdd1976de7eee45121482e27cc577bc10329f836be76a4f9181900360600190a15050505050565b5f6125b161301d565b6001600160a01b03166376b707b76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ec573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052d91906156ee565b3361261961301d565b6001600160a01b0316816001600160a01b0316146126545760405162d1953b60e31b81526001600160a01b038216600482015260240161130f565b816001600160a01b03163b5f03612689576040516361798f2f60e11b81526001600160a01b038316600482015260240161130f565b6126928261444e565b5050565b5f806126a1336106f3565b6126ac86600c613c8f565b6126b7856015613c8f565b6126c2846016613c8f565b5f8073__$19db5f0436f9beab06d91aaebdafaf50ff$__6381c0eb6c8b6001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561271a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061273e91906153fb565b8a886040518463ffffffff1660e01b815260040161275e93929190615497565b608060405180830381865af4158015612779573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061279d9190615709565b600354604051634adcf90960e01b81529398509196509294509192506001600160a01b0390911690634adcf909906127df908d908b908b9089906004016153c9565b5f604051808303815f87803b1580156127f6575f80fd5b505af1158015612808573d5f803e3d5ffd5b5050505060055f9054906101000a90046001600160a01b03166001600160a01b031663ea48ce9b8b6001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561286b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061288f9190615376565b8b876040518463ffffffff1660e01b81526004016128af93929190615416565b6020604051808303815f875af11580156128cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128ef9190615376565b508015612a40575f6129096001546001600160a01b031690565b60405163bf8e179760e01b81526001600160601b03851660048201526001600160a01b03919091169063bf8e179790602401602060405180830381865afa158015612956573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061297a91906153fb565b604051634deed57960e01b81526001600160601b03808b166004830152808a166024830152871660448201529091506001600160a01b03821690634deed579906064015f604051808303815f87803b1580156129d4575f80fd5b505af11580156129e6573d5f803e3d5ffd5b5050604080516001600160601b0387811682528b811660208301528c8116828401528916606082015290517f6c23de2cbade351ab10fe6b009f74e634e44d95ace4e5048cd0eecf9060265c89350908190036080019150a1505b7fb5fc4a79e60dffb5ff6cc29b173a75c6b222e41bbe851a33d9b383c08dc091c98287898787604051612a779594939291906155c6565b60405180910390a15050965096945050505050565b5f805f80516020615f2f83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015612af8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b1c919061547e565b15612ba7576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612b7d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ba191906153fb565b91505090565b54600160601b90046001600160a01b0316919050565b612bc6336106f3565b5f80612bd0614019565b915091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c3591906153fb565b6040516357f80bbf60e01b81526001600160601b03851660048201529091506001600160a01b038216906357f80bbf9060240160e060405180830381865afa158015612c83573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ca791906155f8565b60a00151612cd35760405163664958ad60e01b81526001600160601b038416600482015260240161130f565b5f612ce66001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03861660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612d33573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d5791906153fb565b90507f67e4007a2396f32c2c58b0546d5dc80e8097a965b3de4127c33f3610864416bd848287604051612d8c93929190615416565b60405180910390a160405163810fbd7560e01b815273__$19db5f0436f9beab06d91aaebdafaf50ff$__9063810fbd7590611416908590889086908b9060040161561d565b5f80516020615f4f83398151915280545f9190600160a01b900460ff16612df8575f612ba1565b638fb3603760e01b91505090565b612e0f336106f3565b5f80612e19614019565b915091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e7e91906153fb565b6040516357f80bbf60e01b81526001600160601b03851660048201529091505f906001600160a01b038316906357f80bbf9060240160e060405180830381865afa158015612ece573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ef291906155f8565b80516001600160601b038716825260408051631a99b41b60e31b8152905192935090916001600160a01b0386169163d4cda0d89160048083019260209291908290030181865afa158015612f48573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f6c91906153fb565b6001600160a01b03166396f4df2f868460ff6040518463ffffffff1660e01b8152600401612f9c93929190615762565b5f604051808303815f87803b158015612fb3575f80fd5b505af1158015612fc5573d5f803e3d5ffd5b5050604080516001600160601b03898116825285811660208301528a168183015290517f59c52d680289bf3ed1eaf8c98c2385d021cbc74043dd1ed596d6383f63235ffc9350908190036060019150a1505050505050565b5f80516020615f4f833981519152546001600160a01b031690565b613041336106f3565b61304c816016613c8f565b5f80613056614019565b600354604051632aa6b2cb60e21b81529294509092505f9182916001600160a01b03169063aa9acb2c90613090908690899060040161567f565b60408051808303815f875af11580156130ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130cf9190615442565b9150915060025f9054906101000a90046001600160a01b03166001600160a01b03166389fad8a2846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015613132573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061315691906153fb565b86613161868661437f565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156131a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131cc9190615376565b6040518563ffffffff1660e01b81526004016131eb94939291906153c9565b5f604051808303815f87803b158015613202575f80fd5b505af1158015613214573d5f803e3d5ffd5b505050507f64c75a4392ba38fee1b5a44b61e3dd0cae424d2d43eb2b0c99772efe31e1c042836001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015613275573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132999190615376565b604080516001600160601b03928316815282881660208201529188169082015260600160405180910390a16132ce828261437f565b6040516330b8415f60e01b81526001600160601b03909116600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af4158015613325573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613349919061547e565b15613510575f836001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561338b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133af91906153fb565b60405163f0ea17c360e01b81526001600160601b03871660048201526001600160a01b03919091169063f0ea17c3906024015f60405180830381865afa1580156133fb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526134229190810190615847565b905080602001516001600160a01b03166367ed5f366134496001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038a1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015613496573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ba91906153fb565b6134c4868661437f565b6040518363ffffffff1660e01b81526004016134e192919061567f565b5f604051808303815f87803b1580156134f8575f80fd5b505af115801561350a573d5f803e3d5ffd5b50505050505b5050505050565b613520336106f3565b61352b836015613c8f565b5f80613535614019565b915091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015613576573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061359a91906153fb565b90505f6135af6001546001600160a01b031690565b60405163677d3feb60e11b81526001600160601b03861660048201526001600160a01b03919091169063cefa7fd690602401602060405180830381865afa1580156135fc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136209190615376565b60405163bd7d9d8560e01b81526001600160601b03891660048201529091505f906001600160a01b0384169063bd7d9d85906024015f60405180830381865afa15801561366f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136969190810190615922565b90506136a5815f0151836144ae565b156136e1578051604051636083e75360e01b81526001600160601b03808b1660048301529182166024820152908316604482015260640161130f565b604080516001600160601b038a8116825261ffff8a16602083015288168183015290517f6a2b4f9e8a4bb9038617a047352d25c5ac3c64c4aaba95e576b978a91b6666fb9181900360600190a16040516302d764c760e21b81526001600160601b03831660048201526001600160a01b03841690630b5d931c906024015f60405180830381865afa158015613778573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261379f9190810190615b3d565b511561389d575f6137b86001546001600160a01b031690565b60405163bf8e179760e01b81526001600160601b03851660048201526001600160a01b03919091169063bf8e179790602401602060405180830381865afa158015613805573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061382991906153fb565b6040516370f90b7d60e11b81526001600160601b03808c16600483015261ffff8b166024830152891660448201529091506001600160a01b0382169063e1f216fa906064015f604051808303815f87803b158015613885575f80fd5b505af1158015613897573d5f803e3d5ffd5b50505050505b5050505050505050565b6138b0336106f3565b6138bb826016613c8f565b5f6138ce6001546001600160a01b031690565b60405163677d3feb60e11b81526001600160601b03851660048201529091505f906001600160a01b0383169063cefa7fd690602401602060405180830381865afa15801561391e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139429190615376565b60405163c52721a360e01b81526001600160a01b03841660048201526001600160601b0382166024820152600160448201529091505f9073__$fb599632d08395912d9d70eb2f0f93b5e2$__9063c52721a3906064015f60405180830381865af41580156139b2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526139d99190810190615c1f565b9150505f8190505f6139f48660e0015187610160015161437f565b90505f613a0b87610100015188610180015161437f565b90505f876060015190505f846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a52573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a7691906153fb565b6002549091506001600160a01b031663d56cd3d58289613a96868861437f565b886040518563ffffffff1660e01b8152600401613ab694939291906153c9565b5f604051808303815f87803b158015613acd575f80fd5b505af1158015613adf573d5f803e3d5ffd5b50506002546040516317bb009960e21b81526001600160a01b039091169250635eec02649150613b199084908e90879089906004016153c9565b5f604051808303815f87803b158015613b30575f80fd5b505af1158015613b42573d5f803e3d5ffd5b505050507fe576d34ae9e41588783e58480f9c2d6ab599d21d76f09a165251fbaf831706f6878b848688604051613b7d9594939291906155c6565b60405180910390a150505050505050505050565b5f80516020615f4f8339815191525f80613bc9613bac61301d565b8730613bbb60045f8a8c615d01565b613bc491615d28565b6144f8565b9150915081613c875763ffffffff811615613c6457825460ff60a01b1916600160a01b178355613bf761301d565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b8152600401613c2693929190615d60565b5f604051808303815f87803b158015613c3d575f80fd5b505af1158015613c4f573d5f803e3d5ffd5b5050845460ff60a01b1916855550613c879050565b60405162d1953b60e31b81526001600160a01b038716600482015260240161130f565b505050505050565b60405163037c8cb160e51b815260ff8216600482015273__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636f91962090602401602060405180830381865af4158015613cdf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d03919061547e565b80613d9157506001546001600160a01b0316604051635b12715d60e11b81526001600160601b038416600482015260ff831660248201526001600160a01b03919091169063b624e2ba90604401602060405180830381865afa158015613d6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d8f919061547e565b155b156126925760405163d711af7560e01b81526001600160601b038316600482015260ff8216602482015260440161130f565b5f805f80516020615f2f83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015613e2f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e53919061547e565b15613e7f5780546040516301ab8b6760e21b81526001600160601b03909116600482015260240161130f565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa158015613ed1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ef5919061547e565b613f1d5760405163b9304b0d60e01b81526001600160a01b038416600482015260240161130f565b6001546001600160a01b0316604051632f2a35f760e11b81526001600160a01b0385811660048301529190911690635e546bee90602401602060405180830381865afa158015613f6f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f939190615376565b81546bffffffffffffffffffffffff19166001600160601b039190911690811782557f88857b75cbef7f257c9d5a473e28aaf6a91cc28f717f60f2cda3bcf5623d7b5490613fdf612a8c565b604080516001600160601b0390931683526001600160a01b0390911660208301520160405180910390a1546001600160601b031692915050565b5f8073__$19db5f0436f9beab06d91aaebdafaf50ff$__6339b8cee86140476001546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523360248201526044016040805180830381865af415801561408e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906140b29190615d9f565b915091509091565b6140c2614600565b60405163502ec37160e01b815260040160405180910390fd5b5f80516020615f6f8339815191528054600160401b810460ff1615906001600160401b03165f8115801561410c5750825b90505f826001600160401b031660011480156141275750303b155b905081158015614135575080155b156141535760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561417d57845460ff60401b1916600160401b1785555b5f80878060200190518101906141939190615dcc565b915091506141a282828b614638565b6141ac60286146da565b600280546001600160a01b0319166001600160a01b03929092169190911790556141d660166146da565b600380546001600160a01b0319166001600160a01b0392909216919091179055614200600b6146da565b600480546001600160a01b0319166001600160a01b03928316179055600154166001600160a01b0316630e9ed68b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561425b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061427f91906153fb565b600580546001600160a01b0319166001600160a01b03929092169190911790556142af6337903e8d60e01b614771565b5050831561168657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200161167d565b604051632601631360e21b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__906398058c4c906044015b602060405180830381865af4158015614354573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614378919061547e565b9392505050565b60405163274acb3560e01b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb35906044015b602060405180830381865af41580156143e0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143789190615376565b6040516363cf551160e11b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063c79eaa22906044016143c5565b5f80516020615f4f83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b6040516399009c5160e01b81526001600160601b038084166004830152821660248201525f9073__$94a2c899be079b00d952d0d84fffaa5c34$__906399009c5190604401614339565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516145669190615de8565b5f60405180830381855afa9150503d805f811461459e576040519150601f19603f3d011682016040523d82523d5f602084013e6145a3565b606091505b509150915081156145f55760408151106145d557808060200190518101906145cb9190615dfe565b90945092506145f5565b60208151106145f557808060200190518101906145f2919061547e565b93505b505094509492505050565b5f80516020615f6f83398151915254600160401b900460ff1661463657604051631afcd79f60e31b815260040160405180910390fd5b565b614640614600565b6146486147a4565b6146c58383846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015614689573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906146ad9190615376565b60085f8660405180602001604052805f8152506147b4565b6146d563daf9067160e01b614771565b505050565b5f6146ed6001546001600160a01b031690565b6001600160a01b031663d39e6043836147046125a8565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015614747573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061476b91906153fb565b92915050565b614779614600565b6147a1816001600160e01b0319165f908152602081905260409020805460ff19166001179055565b50565b6147ac614600565b6146366148f1565b6147bc614600565b604051632330f24760e01b81526001600160a01b038816600482015273__$fb599632d08395912d9d70eb2f0f93b5e2$__90632330f24790602401602060405180830381865af4158015614812573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614836919061547e565b61485e5760405163cf6935e560e01b81526001600160a01b038816600482015260240161130f565b6148678761491f565b6148718683614930565b5f7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b861515021781559050600181016148e08382615e74565b5061389d634a531f3360e01b614771565b6148f9614600565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b614927614600565b6147a1816149a6565b614938614600565b6149406149b7565b614949826149ff565b6001600160a01b0381166149705760405163f17ef42d60e01b815260040160405180910390fd5b5f80516020615f2f83398151915280546001600160601b0316600160601b6001600160a01b039093169290920291909117905550565b6149ae614600565b6147a18161444e565b6149bf614600565b6146366301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b614a07614600565b604051633334d16b60e01b81526001600160a01b038216600482015273__$fb599632d08395912d9d70eb2f0f93b5e2$__90633334d16b90602401602060405180830381865af4158015614a5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614a81919061547e565b614aa95760405163fdeac91f60e01b81526001600160a01b038216600482015260240161130f565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f60208284031215614adb575f80fd5b81356001600160e01b031981168114614378575f80fd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081526001600160601b0382511660208201526001600160601b03602083015116604082015260ff60408301511660608201525f6060830151614b68608084018215159052565b5060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e080840152614bac610100840182614af2565b949350505050565b6001600160a01b03811681146147a1575f80fd5b6001600160601b03811681146147a1575f80fd5b8035614be781614bc8565b919050565b64ffffffffff811681146147a1575f80fd5b8035614be781614bec565b5f805f805f805f80610100898b031215614c21575f80fd5b8835614c2c81614bb4565b97506020890135614c3c81614bb4565b96506040890135614c4c81614bc8565b95506060890135614c5c81614bc8565b94506080890135614c6c81614bc8565b935060a0890135614c7c81614bec565b925060c0890135614c8c81614bc8565b915060e0890135614c9c81614bb4565b809150509295985092959890939650565b5f8060408385031215614cbe575f80fd5b8235614cc981614bc8565b91506020830135614cd981614bc8565b809150509250929050565b5f60208284031215614cf4575f80fd5b813561437881614bc8565b634e487b7160e01b5f52604160045260245ffd5b60405161020081016001600160401b0381118282101715614d3657614d36614cff565b60405290565b60405161024081016001600160401b0381118282101715614d3657614d36614cff565b60405160e081016001600160401b0381118282101715614d3657614d36614cff565b604051606081016001600160401b0381118282101715614d3657614d36614cff565b60405161010081016001600160401b0381118282101715614d3657614d36614cff565b604051601f8201601f191681016001600160401b0381118282101715614dee57614dee614cff565b604052919050565b5f6001600160401b03821115614e0e57614e0e614cff565b50601f01601f191660200190565b5f82601f830112614e2b575f80fd5b8135614e3e614e3982614df6565b614dc6565b818152846020838601011115614e52575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215614e7e575f80fd5b81356001600160401b03811115614e93575f80fd5b614bac84828501614e1c565b5f8060408385031215614eb0575f80fd5b8235614ebb81614bb4565b915060208301356001600160401b03811115614ed5575f80fd5b614ee185828601614e1c565b9150509250929050565b6001600160c01b0319811681146147a1575f80fd5b8035614be781614eeb565b61ffff811681146147a1575f80fd5b8035614be781614f0b565b5f805f60608486031215614f37575f80fd5b8335614f4281614bb4565b92506020840135614f5281614bc8565b915060408401356001600160401b03811115614f6c575f80fd5b84016102008187031215614f7e575f80fd5b614f86614d13565b614f8f82614bdc565b8152614f9d60208301614bdc565b6020820152614fae60408301614f00565b6040820152614fbf60608301614bdc565b6060820152614fd060808301614bdc565b6080820152614fe160a08301614f00565b60a0820152614ff260c08301614f1a565b60c082015261500360e08301614f1a565b60e08201526150156101008301614bdc565b6101008201526150286101208301614bdc565b61012082015261503b6101408301614bfe565b61014082015261504e6101608301614bfe565b6101608201526150616101808301614bfe565b6101808201526150746101a08301614bfe565b6101a08201526101c08201356001600160401b03811115615093575f80fd5b61509f88828501614e1c565b6101c0830152506101e08201356001600160401b038111156150bf575f80fd5b6150cb88828501614e1c565b6101e08301525080925050509250925092565b5f602082840312156150ee575f80fd5b813561437881614bb4565b5f805f805f8060c0878903121561510e575f80fd5b863561511981614bb4565b9550602087013561512981614bb4565b9450604087013561513981614bc8565b9350606087013561514981614bc8565b9250608087013561515981614bc8565b915060a087013561516981614bc8565b809150509295509295509295565b5f805f60608486031215615189575f80fd5b833561519481614bc8565b925060208401356151a481614f0b565b915060408401356151b481614bc8565b809150509250925092565b5f808284036102608112156151d2575f80fd5b83356151dd81614bc8565b9250610240601f19820112156151f1575f80fd5b506151fa614d3c565b61520660208501614bdc565b815261521460408501614bdc565b602082015261522560608501614bdc565b604082015261523660808501614bdc565b606082015261524760a08501614bdc565b608082015261525860c08501614bdc565b60a082015261526960e08501614bdc565b60c082015261527b6101008501614bdc565b60e082015261528d6101208501614bdc565b6101008201526152a06101408501614bdc565b6101208201526152b36101608501614bdc565b6101408201526152c66101808501614bdc565b6101608201526152d96101a08501614bdc565b6101808201526152ec6101c08501614bdc565b6101a08201526152ff6101e08501614bdc565b6101c08201526153126102008501614bdc565b6101e08201526153256102208501614bdc565b6102008201526153386102408501614bdc565b610220820152809150509250929050565b5f60208284031215615359575f80fd5b815162ffffff81168114614378575f80fd5b8051614be781614bc8565b5f60208284031215615386575f80fd5b815161437881614bc8565b600181811c908216806153a557607f821691505b6020821081036153c357634e487b7160e01b5f52602260045260245ffd5b50919050565b6001600160a01b039490941684526001600160601b039283166020850152908216604084015216606082015260800190565b5f6020828403121561540b575f80fd5b815161437881614bb4565b6001600160601b0393841681526001600160a01b03929092166020830152909116604082015260600190565b5f8060408385031215615453575f80fd5b825161545e81614bc8565b6020840151909250614cd981614bc8565b80518015158114614be7575f80fd5b5f6020828403121561548e575f80fd5b6143788261546f565b6001600160a01b039390931683526001600160601b03918216602084015216604082015260600190565b5f60e082840312156154d1575f80fd5b6154d9614d5f565b905081516154e681614bc8565b815260208201516154f681614bb4565b6020820152604082015161550981614bb4565b604082015261551a6060830161546f565b606082015261552b6080830161546f565b608082015261553c60a0830161546f565b60a082015261554d60c0830161546f565b60c082015292915050565b5f805f805f610160868803121561556d575f80fd5b855161557881614bb4565b602087015190955061558981614bb4565b604087015190945061559a81614bc8565b60608701519093506155ab81614bc8565b91506155ba87608088016154c1565b90509295509295909350565b6001600160601b0395861681529385166020850152918416604084015283166060830152909116608082015260a00190565b5f60e08284031215615608575f80fd5b61437883836154c1565b8051614be781614bb4565b6001600160a01b0394851681526001600160601b0393841660208201529190931660408201529116606082015260800190565b6001600160401b03811681146147a1575f80fd5b5f60208284031215615674575f80fd5b815161437881615650565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0394851681529290931660208301526001600160601b039081166040830152909116606082015260800190565b60ff811681146147a1575f80fd5b8051614be7816156d5565b5f602082840312156156fe575f80fd5b8151614378816156d5565b5f805f806080858703121561571c575f80fd5b845161572781614bc8565b602086015190945061573881614bc8565b604086015190935061574981614bc8565b91506157576060860161546f565b905092959194509250565b5f610120820190506001600160601b03851682526001600160601b03845116602083015260018060a01b03602085015116604083015260018060a01b03604085015116606083015260608401511515608083015260808401516157c960a084018215159052565b5060a0840151151560c083810191909152840151151560e083015260ff8316610100830152614bac565b5f615800614e3984614df6565b9050828152838383011115615813575f80fd5b8282602083015e5f602084830101529392505050565b5f82601f830112615838575f80fd5b614378838351602085016157f3565b5f60208284031215615857575f80fd5b81516001600160401b0381111561586c575f80fd5b82016060818503121561587d575f80fd5b615885614d81565b81516001600160401b0381111561589a575f80fd5b8201601f810186136158aa575f80fd5b6158b9868251602084016157f3565b82525060208201516158ca81614bb4565b602082015260408201516001600160401b038111156158e7575f80fd5b6158f386828501615829565b604083015250949350505050565b8051614be781614eeb565b8051614be781614f0b565b8051614be781614bec565b5f60208284031215615932575f80fd5b81516001600160401b03811115615947575f80fd5b82016102008185031215615959575f80fd5b615961614d13565b61596a8261536b565b81526159786020830161536b565b602082015261598960408301615901565b604082015261599a6060830161536b565b60608201526159ab6080830161536b565b60808201526159bc60a08301615901565b60a08201526159cd60c0830161590c565b60c08201526159de60e0830161590c565b60e08201526159f0610100830161536b565b610100820152615a03610120830161536b565b610120820152615a166101408301615917565b610140820152615a296101608301615917565b610160820152615a3c6101808301615917565b610180820152615a4f6101a08301615917565b6101a08201526101c08201516001600160401b03811115615a6e575f80fd5b615a7a86828501615829565b6101c0830152506101e08201516001600160401b03811115615a9a575f80fd5b615aa686828501615829565b6101e083015250949350505050565b5f82601f830112615ac4575f80fd5b81516001600160401b03811115615add57615add614cff565b8060051b615aed60208201614dc6565b91825260208185018101929081019086841115615b08575f80fd5b6020860192505b83831015615b33578251615b2281614bc8565b825260209283019290910190615b0f565b9695505050505050565b5f60208284031215615b4d575f80fd5b81516001600160401b03811115615b62575f80fd5b82016101008185031215615b74575f80fd5b615b7c614da3565b615b858261546f565b8152615b936020830161546f565b6020820152615ba46040830161546f565b6040820152615bb5606083016156e3565b6060820152615bc6608083016156e3565b6080820152615bd760a0830161536b565b60a0820152615be860c0830161536b565b60c082015260e08201516001600160401b03811115615c05575f80fd5b615c1186828501615ab5565b60e083015250949350505050565b5f8060408385031215615c30575f80fd5b82516001600160401b03811115615c45575f80fd5b830160e08186031215615c56575f80fd5b615c5e614d5f565b615c678261536b565b8152615c756020830161536b565b6020820152615c86604083016156e3565b6040820152615c976060830161546f565b6060820152615ca860808301615612565b6080820152615cb960a08301615612565b60a082015260c08201516001600160401b03811115615cd6575f80fd5b615ce287828501615829565b60c0830152509250615cf8905060208401615612565b90509250929050565b5f8085851115615d0f575f80fd5b83861115615d1b575f80fd5b5050820193919092039150565b80356001600160e01b03198116906004841015615d59576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f8060408385031215615db0575f80fd5b8251615dbb81614bc8565b6020840151909250614cd981614bb4565b5f8060408385031215615ddd575f80fd5b8251615dbb81614bb4565b5f82518060208501845e5f920191825250919050565b5f8060408385031215615e0f575f80fd5b615e188361546f565b9150602083015163ffffffff81168114614cd9575f80fd5b601f8211156146d557805f5260205f20601f840160051c81016020851015615e555750805b601f840160051c820191505b81811015613510575f8155600101615e61565b81516001600160401b03811115615e8d57615e8d614cff565b615ea181615e9b8454615391565b84615e30565b6020601f821160018114615ed3575f8315615ebc5750848201515b5f19600385901b1c1916600184901b178455613510565b5f84815260208120601f198516915b82811015615f025787850151825560209485019460019092019101615ee2565b5084821015615f1f57868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220ec7a803172d38e84656c8b499429e1d33a67b9e25649cdf5e109fa9ba2e64b9c64736f6c634300081a0033",
1355
1501
  "linkReferences": {
1502
+ "contracts/pool/PoolLib.sol": {
1503
+ "PoolLib": [
1504
+ {
1505
+ "length": 20,
1506
+ "start": 3126
1507
+ },
1508
+ {
1509
+ "length": 20,
1510
+ "start": 3862
1511
+ },
1512
+ {
1513
+ "length": 20,
1514
+ "start": 4716
1515
+ },
1516
+ {
1517
+ "length": 20,
1518
+ "start": 5310
1519
+ },
1520
+ {
1521
+ "length": 20,
1522
+ "start": 7874
1523
+ },
1524
+ {
1525
+ "length": 20,
1526
+ "start": 8260
1527
+ },
1528
+ {
1529
+ "length": 20,
1530
+ "start": 8824
1531
+ },
1532
+ {
1533
+ "length": 20,
1534
+ "start": 10140
1535
+ },
1536
+ {
1537
+ "length": 20,
1538
+ "start": 11897
1539
+ },
1540
+ {
1541
+ "length": 20,
1542
+ "start": 16627
1543
+ }
1544
+ ]
1545
+ },
1356
1546
  "contracts/shared/ContractLib.sol": {
1357
1547
  "ContractLib": [
1358
1548
  {
1359
1549
  "length": 20,
1360
- "start": 13492
1550
+ "start": 14929
1361
1551
  },
1362
1552
  {
1363
1553
  "length": 20,
1364
- "start": 14657
1554
+ "start": 18608
1365
1555
  },
1366
1556
  {
1367
1557
  "length": 20,
1368
- "start": 18089
1558
+ "start": 19195
1369
1559
  }
1370
1560
  ]
1371
1561
  },
@@ -1373,55 +1563,55 @@
1373
1563
  "AmountLib": [
1374
1564
  {
1375
1565
  "length": 20,
1376
- "start": 2669
1566
+ "start": 2185
1377
1567
  },
1378
1568
  {
1379
1569
  "length": 20,
1380
- "start": 6669
1570
+ "start": 2406
1381
1571
  },
1382
1572
  {
1383
1573
  "length": 20,
1384
- "start": 6791
1574
+ "start": 3388
1385
1575
  },
1386
1576
  {
1387
1577
  "length": 20,
1388
- "start": 7008
1578
+ "start": 4203
1389
1579
  },
1390
1580
  {
1391
1581
  "length": 20,
1392
- "start": 10245
1582
+ "start": 6138
1393
1583
  },
1394
1584
  {
1395
1585
  "length": 20,
1396
- "start": 10639
1586
+ "start": 6166
1397
1587
  },
1398
1588
  {
1399
1589
  "length": 20,
1400
- "start": 11623
1590
+ "start": 6925
1401
1591
  },
1402
1592
  {
1403
1593
  "length": 20,
1404
- "start": 11844
1594
+ "start": 7147
1405
1595
  },
1406
1596
  {
1407
1597
  "length": 20,
1408
- "start": 15616
1598
+ "start": 12857
1409
1599
  },
1410
1600
  {
1411
1601
  "length": 20,
1412
- "start": 16243
1602
+ "start": 13251
1413
1603
  },
1414
1604
  {
1415
1605
  "length": 20,
1416
- "start": 16317
1417
- }
1418
- ]
1419
- },
1420
- "contracts/type/Fee.sol": {
1421
- "FeeLib": [
1606
+ "start": 17393
1607
+ },
1608
+ {
1609
+ "length": 20,
1610
+ "start": 17533
1611
+ },
1422
1612
  {
1423
1613
  "length": 20,
1424
- "start": 5703
1614
+ "start": 17666
1425
1615
  }
1426
1616
  ]
1427
1617
  },
@@ -1429,19 +1619,27 @@
1429
1619
  "NftIdLib": [
1430
1620
  {
1431
1621
  "length": 20,
1432
- "start": 1734
1622
+ "start": 1647
1433
1623
  },
1434
1624
  {
1435
1625
  "length": 20,
1436
- "start": 8611
1626
+ "start": 11158
1437
1627
  },
1438
1628
  {
1439
1629
  "length": 20,
1440
- "start": 14015
1630
+ "start": 16077
1441
1631
  },
1442
1632
  {
1443
1633
  "length": 20,
1444
- "start": 14882
1634
+ "start": 17836
1635
+ }
1636
+ ]
1637
+ },
1638
+ "contracts/type/ObjectType.sol": {
1639
+ "ObjectTypeLib": [
1640
+ {
1641
+ "length": 20,
1642
+ "start": 15741
1445
1643
  }
1446
1644
  ]
1447
1645
  },
@@ -1449,55 +1647,81 @@
1449
1647
  "RoleIdLib": [
1450
1648
  {
1451
1649
  "length": 20,
1452
- "start": 6490
1650
+ "start": 8931
1453
1651
  }
1454
1652
  ]
1455
1653
  },
1456
- "contracts/type/UFixed.sol": {
1457
- "UFixedLib": [
1654
+ "contracts/type/Version.sol": {
1655
+ "VersionLib": [
1458
1656
  {
1459
1657
  "length": 20,
1460
- "start": 6819
1658
+ "start": 1447
1461
1659
  },
1462
1660
  {
1463
1661
  "length": 20,
1464
- "start": 7065
1662
+ "start": 5409
1465
1663
  }
1466
1664
  ]
1467
- },
1468
- "contracts/type/Version.sol": {
1469
- "VersionLib": [
1665
+ }
1666
+ },
1667
+ "deployedLinkReferences": {
1668
+ "contracts/pool/PoolLib.sol": {
1669
+ "PoolLib": [
1470
1670
  {
1471
1671
  "length": 20,
1472
- "start": 1530
1672
+ "start": 2912
1473
1673
  },
1474
1674
  {
1475
1675
  "length": 20,
1476
- "start": 3799
1477
- }
1478
- ],
1479
- "VersionPartLib": [
1676
+ "start": 3648
1677
+ },
1678
+ {
1679
+ "length": 20,
1680
+ "start": 4502
1681
+ },
1682
+ {
1683
+ "length": 20,
1684
+ "start": 5096
1685
+ },
1686
+ {
1687
+ "length": 20,
1688
+ "start": 7660
1689
+ },
1690
+ {
1691
+ "length": 20,
1692
+ "start": 8046
1693
+ },
1694
+ {
1695
+ "length": 20,
1696
+ "start": 8610
1697
+ },
1698
+ {
1699
+ "length": 20,
1700
+ "start": 9926
1701
+ },
1702
+ {
1703
+ "length": 20,
1704
+ "start": 11683
1705
+ },
1480
1706
  {
1481
1707
  "length": 20,
1482
- "start": 7285
1708
+ "start": 16413
1483
1709
  }
1484
1710
  ]
1485
- }
1486
- },
1487
- "deployedLinkReferences": {
1711
+ },
1488
1712
  "contracts/shared/ContractLib.sol": {
1489
1713
  "ContractLib": [
1490
1714
  {
1491
1715
  "length": 20,
1492
- "start": 13278
1716
+ "start": 14715
1493
1717
  },
1494
1718
  {
1495
1719
  "length": 20,
1496
- "start": 14443
1720
+ "start": 18394
1497
1721
  },
1498
1722
  {
1499
1723
  "length": 20,
1500
- "start": 17875
1724
+ "start": 18981
1501
1725
  }
1502
1726
  ]
1503
1727
  },
@@ -1505,55 +1729,55 @@
1505
1729
  "AmountLib": [
1506
1730
  {
1507
1731
  "length": 20,
1508
- "start": 2455
1732
+ "start": 1971
1509
1733
  },
1510
1734
  {
1511
1735
  "length": 20,
1512
- "start": 6455
1736
+ "start": 2192
1513
1737
  },
1514
1738
  {
1515
1739
  "length": 20,
1516
- "start": 6577
1740
+ "start": 3174
1517
1741
  },
1518
1742
  {
1519
1743
  "length": 20,
1520
- "start": 6794
1744
+ "start": 3989
1521
1745
  },
1522
1746
  {
1523
1747
  "length": 20,
1524
- "start": 10031
1748
+ "start": 5924
1525
1749
  },
1526
1750
  {
1527
1751
  "length": 20,
1528
- "start": 10425
1752
+ "start": 5952
1529
1753
  },
1530
1754
  {
1531
1755
  "length": 20,
1532
- "start": 11409
1756
+ "start": 6711
1533
1757
  },
1534
1758
  {
1535
1759
  "length": 20,
1536
- "start": 11630
1760
+ "start": 6933
1537
1761
  },
1538
1762
  {
1539
1763
  "length": 20,
1540
- "start": 15402
1764
+ "start": 12643
1541
1765
  },
1542
1766
  {
1543
1767
  "length": 20,
1544
- "start": 16029
1768
+ "start": 13037
1545
1769
  },
1546
1770
  {
1547
1771
  "length": 20,
1548
- "start": 16103
1549
- }
1550
- ]
1551
- },
1552
- "contracts/type/Fee.sol": {
1553
- "FeeLib": [
1772
+ "start": 17179
1773
+ },
1774
+ {
1775
+ "length": 20,
1776
+ "start": 17319
1777
+ },
1554
1778
  {
1555
1779
  "length": 20,
1556
- "start": 5489
1780
+ "start": 17452
1557
1781
  }
1558
1782
  ]
1559
1783
  },
@@ -1561,39 +1785,35 @@
1561
1785
  "NftIdLib": [
1562
1786
  {
1563
1787
  "length": 20,
1564
- "start": 1520
1788
+ "start": 1433
1565
1789
  },
1566
1790
  {
1567
1791
  "length": 20,
1568
- "start": 8397
1792
+ "start": 10944
1569
1793
  },
1570
1794
  {
1571
1795
  "length": 20,
1572
- "start": 13801
1796
+ "start": 15863
1573
1797
  },
1574
1798
  {
1575
1799
  "length": 20,
1576
- "start": 14668
1800
+ "start": 17622
1577
1801
  }
1578
1802
  ]
1579
1803
  },
1580
- "contracts/type/RoleId.sol": {
1581
- "RoleIdLib": [
1804
+ "contracts/type/ObjectType.sol": {
1805
+ "ObjectTypeLib": [
1582
1806
  {
1583
1807
  "length": 20,
1584
- "start": 6276
1808
+ "start": 15527
1585
1809
  }
1586
1810
  ]
1587
1811
  },
1588
- "contracts/type/UFixed.sol": {
1589
- "UFixedLib": [
1590
- {
1591
- "length": 20,
1592
- "start": 6605
1593
- },
1812
+ "contracts/type/RoleId.sol": {
1813
+ "RoleIdLib": [
1594
1814
  {
1595
1815
  "length": 20,
1596
- "start": 6851
1816
+ "start": 8717
1597
1817
  }
1598
1818
  ]
1599
1819
  },
@@ -1601,17 +1821,11 @@
1601
1821
  "VersionLib": [
1602
1822
  {
1603
1823
  "length": 20,
1604
- "start": 1316
1824
+ "start": 1233
1605
1825
  },
1606
1826
  {
1607
1827
  "length": 20,
1608
- "start": 3585
1609
- }
1610
- ],
1611
- "VersionPartLib": [
1612
- {
1613
- "length": 20,
1614
- "start": 7071
1828
+ "start": 5195
1615
1829
  }
1616
1830
  ]
1617
1831
  }