@etherisc/gif-next 0.0.2-fd4931b-974 → 0.0.2-fd9539f-062

Sign up to get free protection for your applications and to get access to all the features.
Files changed (432) hide show
  1. package/README.md +20 -3
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +19 -13
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +115 -80
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +86 -59
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +11 -5
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +20 -1
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +32 -101
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +83 -71
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +121 -12
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +105 -85
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +1 -1
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +125 -29
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +195 -64
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +206 -49
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +79 -36
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +248 -118
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  35. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  36. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  38. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  39. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +2 -71
  40. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  41. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  42. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  47. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  48. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  49. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  50. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +10 -0
  51. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  52. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  53. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  54. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  55. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  56. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  57. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  58. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  59. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  60. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  61. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  62. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +91 -48
  63. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  64. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +74 -43
  65. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  66. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +20 -1
  67. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  68. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +11 -5
  69. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  70. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +35 -1
  71. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  72. package/artifacts/contracts/pool/Pool.sol/Pool.json +18 -12
  73. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  74. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +84 -42
  75. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  76. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +63 -40
  77. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  78. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +79 -36
  79. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  80. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +68 -37
  81. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  82. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +119 -68
  83. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  84. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +88 -53
  85. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  86. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +20 -1
  87. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  88. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +20 -1
  89. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  90. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +20 -1
  91. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  92. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +20 -1
  93. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  94. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +11 -5
  95. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  96. package/artifacts/contracts/product/IProductService.sol/IProductService.json +20 -1
  97. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  98. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +97 -46
  99. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  100. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +77 -42
  101. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  102. package/artifacts/contracts/product/PricingService.sol/PricingService.json +105 -62
  103. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  104. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +81 -50
  105. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  106. package/artifacts/contracts/product/Product.sol/Product.json +18 -12
  107. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  108. package/artifacts/contracts/product/ProductService.sol/ProductService.json +61 -26
  109. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +59 -32
  111. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  112. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  113. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  114. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +82 -45
  115. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  116. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -1
  117. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  118. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +129 -0
  119. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  120. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  121. package/artifacts/contracts/registry/Registry.sol/Registry.json +254 -97
  122. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  123. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1901 -0
  124. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  125. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -15
  126. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +51 -35
  128. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  129. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +288 -182
  130. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  131. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +171 -0
  132. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  133. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +187 -0
  134. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  135. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +46 -177
  136. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  137. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
  138. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  139. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  140. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  141. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
  142. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  143. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
  144. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  145. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
  146. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
  148. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  149. package/artifacts/contracts/shared/Component.sol/Component.json +18 -12
  150. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  151. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +119 -69
  152. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  153. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +85 -54
  154. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  155. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +20 -1
  156. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  157. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  158. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  159. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
  160. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  162. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  163. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  164. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  165. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +11 -5
  166. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  167. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +27 -1
  168. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  169. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +11 -5
  170. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  171. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +0 -10
  172. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  173. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  174. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -1
  175. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  176. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  177. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -1
  178. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  180. package/artifacts/contracts/shared/IService.sol/IService.json +20 -1
  181. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  182. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  183. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  184. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  185. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +18 -12
  186. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  187. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +10 -20
  188. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  189. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +6 -6
  190. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +1 -1
  191. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +27 -35
  192. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  193. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +13 -7
  194. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  195. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  196. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  197. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +35 -16
  198. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  199. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +15 -9
  200. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  201. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  202. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  203. package/artifacts/contracts/shared/Service.sol/Service.json +20 -1
  204. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  205. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
  206. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  207. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  208. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  209. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  210. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +247 -579
  211. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  212. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +471 -62
  213. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  214. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  215. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  216. package/artifacts/contracts/staking/Staking.sol/Staking.json +303 -798
  217. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  218. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +81 -164
  219. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  220. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +368 -39
  221. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  222. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +503 -120
  223. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  224. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +67 -43
  225. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  226. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2261 -0
  227. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  228. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +281 -18
  229. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  230. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  231. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  232. package/artifacts/contracts/type/Amount.sol/AmountLib.json +68 -4
  233. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  234. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +40 -2
  235. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  236. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  237. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  238. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  239. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  240. package/artifacts/contracts/type/Fee.sol/FeeLib.json +12 -12
  241. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  242. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  243. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  244. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +28 -4
  245. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  246. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  247. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +96 -2
  249. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  251. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  253. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  254. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  255. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  257. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +114 -4
  259. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +52 -2
  261. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  262. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  263. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  264. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  265. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  267. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  268. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  269. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +17 -4
  271. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  273. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +2 -2
  275. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  277. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +2 -2
  279. package/contracts/distribution/Distribution.sol +2 -4
  280. package/contracts/distribution/DistributionService.sol +5 -6
  281. package/contracts/distribution/DistributionServiceManager.sol +1 -13
  282. package/contracts/distribution/IDistributionComponent.sol +1 -1
  283. package/contracts/distribution/IDistributionService.sol +1 -1
  284. package/contracts/instance/BundleManager.sol +1 -1
  285. package/contracts/instance/IInstance.sol +22 -12
  286. package/contracts/instance/IInstanceService.sol +27 -13
  287. package/contracts/instance/Instance.sol +85 -50
  288. package/contracts/instance/InstanceAdmin.sol +331 -0
  289. package/contracts/instance/InstanceAuthorizationsLib.sol +193 -152
  290. package/contracts/instance/InstanceReader.sol +33 -7
  291. package/contracts/instance/InstanceService.sol +120 -48
  292. package/contracts/instance/InstanceServiceManager.sol +1 -1
  293. package/contracts/instance/InstanceStore.sol +30 -21
  294. package/contracts/instance/base/BalanceStore.sol +12 -7
  295. package/contracts/instance/base/Cloneable.sol +3 -26
  296. package/contracts/instance/base/ObjectCounter.sol +21 -0
  297. package/contracts/instance/base/ObjectManager.sol +2 -4
  298. package/contracts/instance/module/IAccess.sol +3 -11
  299. package/contracts/instance/module/IBundle.sol +1 -1
  300. package/contracts/instance/module/IComponents.sol +1 -1
  301. package/contracts/instance/module/IDistribution.sol +1 -1
  302. package/contracts/instance/module/IPolicy.sol +1 -1
  303. package/contracts/instance/module/IRisk.sol +1 -1
  304. package/contracts/mock/Dip.sol +1 -1
  305. package/contracts/oracle/IOracle.sol +20 -0
  306. package/contracts/oracle/IOracleComponent.sol +32 -0
  307. package/contracts/oracle/IOracleService.sol +65 -0
  308. package/contracts/oracle/Oracle.sol +145 -0
  309. package/contracts/oracle/OracleService.sol +278 -0
  310. package/contracts/oracle/OracleServiceManager.sol +42 -0
  311. package/contracts/pool/BundleService.sol +20 -20
  312. package/contracts/pool/BundleServiceManager.sol +1 -1
  313. package/contracts/pool/IBundleService.sol +1 -1
  314. package/contracts/pool/IPoolComponent.sol +1 -1
  315. package/contracts/pool/IPoolService.sol +4 -1
  316. package/contracts/pool/Pool.sol +1 -1
  317. package/contracts/pool/PoolService.sol +38 -10
  318. package/contracts/pool/PoolServiceManager.sol +1 -1
  319. package/contracts/product/ApplicationService.sol +6 -6
  320. package/contracts/product/ApplicationServiceManager.sol +1 -1
  321. package/contracts/product/ClaimService.sol +12 -7
  322. package/contracts/product/ClaimServiceManager.sol +1 -1
  323. package/contracts/product/IApplicationService.sol +1 -1
  324. package/contracts/product/IClaimService.sol +7 -1
  325. package/contracts/product/IPolicyService.sol +1 -1
  326. package/contracts/product/IPricingService.sol +1 -1
  327. package/contracts/product/IProductComponent.sol +1 -1
  328. package/contracts/product/IProductService.sol +1 -1
  329. package/contracts/product/PolicyService.sol +9 -7
  330. package/contracts/product/PolicyServiceManager.sol +1 -1
  331. package/contracts/product/PricingService.sol +8 -9
  332. package/contracts/product/PricingServiceManager.sol +1 -1
  333. package/contracts/product/Product.sol +1 -1
  334. package/contracts/product/ProductService.sol +6 -6
  335. package/contracts/product/ProductServiceManager.sol +1 -1
  336. package/contracts/registry/ChainNft.sol +2 -1
  337. package/contracts/registry/IRegistry.sol +21 -15
  338. package/contracts/registry/IRegistryService.sol +2 -1
  339. package/contracts/registry/IServiceAuthorization.sol +35 -0
  340. package/contracts/registry/ITransferInterceptor.sol +1 -1
  341. package/contracts/registry/Registry.sol +86 -67
  342. package/contracts/registry/RegistryAdmin.sol +333 -0
  343. package/contracts/registry/RegistryService.sol +9 -71
  344. package/contracts/registry/RegistryServiceManager.sol +2 -21
  345. package/contracts/registry/ReleaseManager.sol +219 -222
  346. package/contracts/registry/ServiceAuthorization.sol +86 -0
  347. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  348. package/contracts/registry/TokenRegistry.sol +57 -61
  349. package/contracts/shared/AccessAdmin.sol +759 -0
  350. package/contracts/shared/AccessManagerCustom.sol +741 -0
  351. package/contracts/shared/AccessManagerExtended.sol +481 -0
  352. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  353. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  354. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  355. package/contracts/shared/Component.sol +9 -14
  356. package/contracts/shared/ComponentService.sol +40 -18
  357. package/contracts/shared/ComponentServiceManager.sol +1 -1
  358. package/contracts/shared/ComponentVerifyingService.sol +14 -8
  359. package/contracts/shared/ERC165.sol +1 -1
  360. package/contracts/shared/IAccessAdmin.sol +168 -0
  361. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  362. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  363. package/contracts/shared/IComponent.sol +4 -8
  364. package/contracts/shared/IComponentService.sol +12 -1
  365. package/contracts/shared/IInstanceLinkedComponent.sol +1 -1
  366. package/contracts/shared/IKeyValueStore.sol +2 -2
  367. package/contracts/shared/ILifecycle.sol +1 -1
  368. package/contracts/shared/INftOwnable.sol +2 -2
  369. package/contracts/shared/IPolicyHolder.sol +1 -1
  370. package/contracts/shared/IRegisterable.sol +1 -1
  371. package/contracts/shared/IRegistryLinked.sol +1 -1
  372. package/contracts/shared/IService.sol +8 -1
  373. package/contracts/shared/IVersionable.sol +1 -1
  374. package/contracts/shared/InitializableCustom.sol +177 -0
  375. package/contracts/shared/InstanceLinkedComponent.sol +2 -3
  376. package/contracts/shared/KeyValueStore.sol +2 -5
  377. package/contracts/shared/Lifecycle.sol +12 -3
  378. package/contracts/shared/NftIdSetManager.sol +3 -7
  379. package/contracts/shared/NftOwnable.sol +3 -14
  380. package/contracts/shared/PolicyHolder.sol +3 -2
  381. package/contracts/shared/ProxyManager.sol +7 -3
  382. package/contracts/shared/Registerable.sol +1 -1
  383. package/contracts/shared/RegistryLinked.sol +1 -1
  384. package/contracts/shared/Service.sol +28 -22
  385. package/contracts/shared/TokenHandler.sol +1 -1
  386. package/contracts/shared/UpgradableProxyWithAdmin.sol +1 -1
  387. package/contracts/shared/Versionable.sol +1 -1
  388. package/contracts/staking/IStaking.sol +94 -39
  389. package/contracts/staking/IStakingService.sol +71 -40
  390. package/contracts/staking/StakeManagerLib.sol +231 -0
  391. package/contracts/staking/Staking.sol +303 -138
  392. package/contracts/staking/StakingManager.sol +23 -21
  393. package/contracts/staking/StakingReader.sol +120 -25
  394. package/contracts/staking/StakingService.sol +194 -77
  395. package/contracts/staking/StakingServiceManager.sol +3 -3
  396. package/contracts/staking/StakingStore.sol +613 -0
  397. package/contracts/staking/TargetManagerLib.sol +77 -11
  398. package/contracts/type/AddressSet.sol +1 -1
  399. package/contracts/type/Amount.sol +16 -2
  400. package/contracts/type/Blocknumber.sol +14 -2
  401. package/contracts/type/ClaimId.sol +1 -1
  402. package/contracts/type/DistributorType.sol +1 -1
  403. package/contracts/type/Fee.sol +1 -1
  404. package/contracts/type/Key32.sol +1 -1
  405. package/contracts/type/NftId.sol +9 -9
  406. package/contracts/type/NftIdSet.sol +1 -1
  407. package/contracts/type/ObjectType.sol +140 -68
  408. package/contracts/type/PayoutId.sol +1 -1
  409. package/contracts/type/Referral.sol +1 -1
  410. package/contracts/type/RequestId.sol +75 -0
  411. package/contracts/type/RiskId.sol +1 -1
  412. package/contracts/type/RoleId.sol +79 -21
  413. package/contracts/type/Seconds.sol +19 -1
  414. package/contracts/type/Selector.sol +102 -0
  415. package/contracts/type/StateId.sol +13 -1
  416. package/contracts/type/String.sol +53 -0
  417. package/contracts/type/Timestamp.sol +7 -3
  418. package/contracts/type/UFixed.sol +1 -1
  419. package/contracts/type/Version.sol +1 -1
  420. package/package.json +6 -3
  421. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  422. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  423. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  424. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -298
  425. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  426. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  427. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  428. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  429. package/contracts/instance/InstanceAccessManager.sol +0 -543
  430. package/contracts/registry/RegistryAccessManager.sol +0 -167
  431. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  432. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
@@ -4,7 +4,13 @@
4
4
  "sourceName": "contracts/registry/Registry.sol",
5
5
  "abi": [
6
6
  {
7
- "inputs": [],
7
+ "inputs": [
8
+ {
9
+ "internalType": "contract RegistryAdmin",
10
+ "name": "admin",
11
+ "type": "address"
12
+ }
13
+ ],
8
14
  "stateMutability": "nonpayable",
9
15
  "type": "constructor"
10
16
  },
@@ -88,32 +94,33 @@
88
94
  "type": "error"
89
95
  },
90
96
  {
91
- "inputs": [
92
- {
93
- "internalType": "address",
94
- "name": "stakingAddress",
95
- "type": "address"
96
- }
97
- ],
98
- "name": "StakingAlreadyRegistered",
97
+ "inputs": [],
98
+ "name": "InvalidInitialization",
99
99
  "type": "error"
100
100
  },
101
101
  {
102
- "inputs": [
103
- {
104
- "internalType": "address",
105
- "name": "tokenRegistry",
106
- "type": "address"
107
- }
108
- ],
109
- "name": "TokenRegistryAlreadySet",
102
+ "inputs": [],
103
+ "name": "InvalidInitializationCaller",
110
104
  "type": "error"
111
105
  },
112
106
  {
113
107
  "inputs": [],
114
- "name": "TokenRegistryZero",
108
+ "name": "NotInitializing",
115
109
  "type": "error"
116
110
  },
111
+ {
112
+ "anonymous": false,
113
+ "inputs": [
114
+ {
115
+ "indexed": false,
116
+ "internalType": "uint64",
117
+ "name": "version",
118
+ "type": "uint64"
119
+ }
120
+ ],
121
+ "name": "Initialized",
122
+ "type": "event"
123
+ },
117
124
  {
118
125
  "anonymous": false,
119
126
  "inputs": [
@@ -228,6 +235,123 @@
228
235
  "stateMutability": "view",
229
236
  "type": "function"
230
237
  },
238
+ {
239
+ "inputs": [],
240
+ "name": "_admin",
241
+ "outputs": [
242
+ {
243
+ "internalType": "contract RegistryAdmin",
244
+ "name": "",
245
+ "type": "address"
246
+ }
247
+ ],
248
+ "stateMutability": "view",
249
+ "type": "function"
250
+ },
251
+ {
252
+ "inputs": [],
253
+ "name": "_chainNft",
254
+ "outputs": [
255
+ {
256
+ "internalType": "contract ChainNft",
257
+ "name": "",
258
+ "type": "address"
259
+ }
260
+ ],
261
+ "stateMutability": "view",
262
+ "type": "function"
263
+ },
264
+ {
265
+ "inputs": [],
266
+ "name": "_protocolNftId",
267
+ "outputs": [
268
+ {
269
+ "internalType": "NftId",
270
+ "name": "",
271
+ "type": "uint96"
272
+ }
273
+ ],
274
+ "stateMutability": "view",
275
+ "type": "function"
276
+ },
277
+ {
278
+ "inputs": [],
279
+ "name": "_registryNftId",
280
+ "outputs": [
281
+ {
282
+ "internalType": "NftId",
283
+ "name": "",
284
+ "type": "uint96"
285
+ }
286
+ ],
287
+ "stateMutability": "view",
288
+ "type": "function"
289
+ },
290
+ {
291
+ "inputs": [],
292
+ "name": "_releaseManager",
293
+ "outputs": [
294
+ {
295
+ "internalType": "contract ReleaseManager",
296
+ "name": "",
297
+ "type": "address"
298
+ }
299
+ ],
300
+ "stateMutability": "view",
301
+ "type": "function"
302
+ },
303
+ {
304
+ "inputs": [],
305
+ "name": "_stakingAddress",
306
+ "outputs": [
307
+ {
308
+ "internalType": "address",
309
+ "name": "",
310
+ "type": "address"
311
+ }
312
+ ],
313
+ "stateMutability": "view",
314
+ "type": "function"
315
+ },
316
+ {
317
+ "inputs": [],
318
+ "name": "_stakingNftId",
319
+ "outputs": [
320
+ {
321
+ "internalType": "NftId",
322
+ "name": "",
323
+ "type": "uint96"
324
+ }
325
+ ],
326
+ "stateMutability": "view",
327
+ "type": "function"
328
+ },
329
+ {
330
+ "inputs": [],
331
+ "name": "_tokenRegistryAddress",
332
+ "outputs": [
333
+ {
334
+ "internalType": "address",
335
+ "name": "",
336
+ "type": "address"
337
+ }
338
+ ],
339
+ "stateMutability": "view",
340
+ "type": "function"
341
+ },
342
+ {
343
+ "inputs": [],
344
+ "name": "getAuthority",
345
+ "outputs": [
346
+ {
347
+ "internalType": "address",
348
+ "name": "",
349
+ "type": "address"
350
+ }
351
+ ],
352
+ "stateMutability": "view",
353
+ "type": "function"
354
+ },
231
355
  {
232
356
  "inputs": [],
233
357
  "name": "getChainNftAddress",
@@ -450,6 +574,32 @@
450
574
  "stateMutability": "view",
451
575
  "type": "function"
452
576
  },
577
+ {
578
+ "inputs": [],
579
+ "name": "getProtocolNftId",
580
+ "outputs": [
581
+ {
582
+ "internalType": "NftId",
583
+ "name": "nftId",
584
+ "type": "uint96"
585
+ }
586
+ ],
587
+ "stateMutability": "view",
588
+ "type": "function"
589
+ },
590
+ {
591
+ "inputs": [],
592
+ "name": "getRegistryAdminAddress",
593
+ "outputs": [
594
+ {
595
+ "internalType": "address",
596
+ "name": "",
597
+ "type": "address"
598
+ }
599
+ ],
600
+ "stateMutability": "view",
601
+ "type": "function"
602
+ },
453
603
  {
454
604
  "inputs": [
455
605
  {
@@ -486,21 +636,41 @@
486
636
  "name": "version",
487
637
  "type": "uint8"
488
638
  },
639
+ {
640
+ "internalType": "bytes32",
641
+ "name": "salt",
642
+ "type": "bytes32"
643
+ },
489
644
  {
490
645
  "internalType": "address[]",
491
646
  "name": "addresses",
492
647
  "type": "address[]"
493
648
  },
649
+ {
650
+ "internalType": "string[]",
651
+ "name": "names",
652
+ "type": "string[]"
653
+ },
494
654
  {
495
655
  "internalType": "RoleId[][]",
496
656
  "name": "serviceRoles",
497
657
  "type": "uint64[][]"
498
658
  },
659
+ {
660
+ "internalType": "string[][]",
661
+ "name": "serviceRoleNames",
662
+ "type": "string[][]"
663
+ },
499
664
  {
500
665
  "internalType": "RoleId[][]",
501
666
  "name": "functionRoles",
502
667
  "type": "uint64[][]"
503
668
  },
669
+ {
670
+ "internalType": "string[][]",
671
+ "name": "functionRoleNames",
672
+ "type": "string[][]"
673
+ },
504
674
  {
505
675
  "internalType": "bytes4[][][]",
506
676
  "name": "selectors",
@@ -515,6 +685,11 @@
515
685
  "internalType": "Timestamp",
516
686
  "name": "activatedAt",
517
687
  "type": "uint40"
688
+ },
689
+ {
690
+ "internalType": "Timestamp",
691
+ "name": "disabledAt",
692
+ "type": "uint40"
518
693
  }
519
694
  ],
520
695
  "internalType": "struct IRegistry.ReleaseInfo",
@@ -592,11 +767,34 @@
592
767
  "inputs": [
593
768
  {
594
769
  "internalType": "address",
595
- "name": "object",
770
+ "name": "releaseManager",
771
+ "type": "address"
772
+ },
773
+ {
774
+ "internalType": "address",
775
+ "name": "tokenRegistry",
776
+ "type": "address"
777
+ },
778
+ {
779
+ "internalType": "address",
780
+ "name": "staking",
596
781
  "type": "address"
597
782
  }
598
783
  ],
599
- "name": "isRegistered",
784
+ "name": "initialize",
785
+ "outputs": [],
786
+ "stateMutability": "nonpayable",
787
+ "type": "function"
788
+ },
789
+ {
790
+ "inputs": [
791
+ {
792
+ "internalType": "VersionPart",
793
+ "name": "version",
794
+ "type": "uint8"
795
+ }
796
+ ],
797
+ "name": "isActiveRelease",
600
798
  "outputs": [
601
799
  {
602
800
  "internalType": "bool",
@@ -610,9 +808,9 @@
610
808
  {
611
809
  "inputs": [
612
810
  {
613
- "internalType": "NftId",
614
- "name": "nftId",
615
- "type": "uint96"
811
+ "internalType": "address",
812
+ "name": "object",
813
+ "type": "address"
616
814
  }
617
815
  ],
618
816
  "name": "isRegistered",
@@ -629,12 +827,12 @@
629
827
  {
630
828
  "inputs": [
631
829
  {
632
- "internalType": "address",
633
- "name": "object",
634
- "type": "address"
830
+ "internalType": "NftId",
831
+ "name": "nftId",
832
+ "type": "uint96"
635
833
  }
636
834
  ],
637
- "name": "isRegisteredComponent",
835
+ "name": "isRegistered",
638
836
  "outputs": [
639
837
  {
640
838
  "internalType": "bool",
@@ -653,7 +851,7 @@
653
851
  "type": "address"
654
852
  }
655
853
  ],
656
- "name": "isRegisteredService",
854
+ "name": "isRegisteredComponent",
657
855
  "outputs": [
658
856
  {
659
857
  "internalType": "bool",
@@ -667,12 +865,12 @@
667
865
  {
668
866
  "inputs": [
669
867
  {
670
- "internalType": "VersionPart",
671
- "name": "version",
672
- "type": "uint8"
868
+ "internalType": "address",
869
+ "name": "object",
870
+ "type": "address"
673
871
  }
674
872
  ],
675
- "name": "isValidRelease",
873
+ "name": "isRegisteredService",
676
874
  "outputs": [
677
875
  {
678
876
  "internalType": "bool",
@@ -843,30 +1041,6 @@
843
1041
  "stateMutability": "nonpayable",
844
1042
  "type": "function"
845
1043
  },
846
- {
847
- "inputs": [
848
- {
849
- "internalType": "address",
850
- "name": "stakingAddress",
851
- "type": "address"
852
- },
853
- {
854
- "internalType": "address",
855
- "name": "stakingOwner",
856
- "type": "address"
857
- }
858
- ],
859
- "name": "registerStaking",
860
- "outputs": [
861
- {
862
- "internalType": "NftId",
863
- "name": "stakingNftId",
864
- "type": "uint96"
865
- }
866
- ],
867
- "stateMutability": "nonpayable",
868
- "type": "function"
869
- },
870
1044
  {
871
1045
  "inputs": [
872
1046
  {
@@ -923,19 +1097,6 @@
923
1097
  "stateMutability": "nonpayable",
924
1098
  "type": "function"
925
1099
  },
926
- {
927
- "inputs": [
928
- {
929
- "internalType": "address",
930
- "name": "tokenRegistry",
931
- "type": "address"
932
- }
933
- ],
934
- "name": "setTokenRegistry",
935
- "outputs": [],
936
- "stateMutability": "nonpayable",
937
- "type": "function"
938
- },
939
1100
  {
940
1101
  "inputs": [
941
1102
  {
@@ -956,62 +1117,58 @@
956
1117
  "type": "function"
957
1118
  }
958
1119
  ],
959
- "bytecode": "0x60e06040523480156200001157600080fd5b503360c05260405130906200002690620011d9565b6001600160a01b039091168152602001604051809103906000f08015801562000053573d6000803e3d6000fd5b506001600160a01b031660a0526200006a62000090565b6200007462000382565b6001600160601b03166080526200008a6200086d565b620013a0565b600060a0516001600160a01b031663598e28926040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f99190620011e7565b60405163efac97cf60e01b81526004810182905290915060009073__$94a2c899be079b00d952d0d84fffaa5c34$__9063efac97cf90602401602060405180830381865af415801562000150573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000176919062001201565b90506040518060e00160405280826001600160601b0316815260200173__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015620001dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000202919062001201565b6001600160601b03168152602001600a5b60ff908116825260006020808401829052604080850183905260016060808701829052825180850184528581526080978801526001600160601b03808a1686528585529483902088518154958a0151948a0151928a01511515600160c81b0260ff60c81b1993909816600160c01b029290921661ffff60c01b199487166c01000000000000000000000000026001600160c01b031990961692909616919091179390931791909116929092179290921782559183015191810180546001600160a01b039384166001600160a01b03199182161790915560a08401516002830180549190941691161790915560c08201516003820190620003149082620012d4565b505060a0516040516340c10f1960e01b815260016004820152602481018590526001600160a01b0390911691506340c10f1990604401600060405180830381600087803b1580156200036557600080fd5b505af11580156200037a573d6000803e3d6000fd5b505050505050565b60008060a0516001600160a01b0316630559ea4760026040518263ffffffff1660e01b8152600401620003b791815260200190565b602060405180830381865afa158015620003d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fb9190620011e7565b60405163efac97cf60e01b81526004810182905290915073__$94a2c899be079b00d952d0d84fffaa5c34$__9063efac97cf90602401602060405180830381865af41580156200044f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000475919062001201565b9150600060a0516001600160a01b0316632e85b1f36040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e09190620011e7565b8214620005dd57620004f162000fc7565b73__$94a2c899be079b00d952d0d84fffaa5c34$__63efac97cf60a0516001600160a01b0316632e85b1f36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200054c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005729190620011e7565b6040518263ffffffff1660e01b81526004016200059191815260200190565b602060405180830381865af4158015620005af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005d5919062001201565b9050620006c4565b73__$94a2c899be079b00d952d0d84fffaa5c34$__63efac97cf60a0516001600160a01b031663598e28926040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000638573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200065e9190620011e7565b6040518263ffffffff1660e01b81526004016200067d91815260200190565b602060405180830381865af41580156200069b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006c1919062001201565b90505b6040805160e0810182526001600160601b03858116808352848216602080850191825260288587019081526000606087018181523060808901908152600160a08a018181528b518088018d5285815260c08c019081529885529584905299909220885181549651945192511515600160c81b0260ff60c81b1960ff909416600160c01b029390931661ffff60c01b19958a166c01000000000000000000000000026001600160c01b03199098169190991617959095179290921695909517178255925194810180546001600160a01b039687166001600160a01b03199182161790915592516002820180549190961693169290921790935591519091906003820190620007d29082620012d4565b50503060009081526001602081905260409182902080546001600160601b0319166001600160601b03881617905560a05191516340c10f1960e01b81526004810191909152602481018590526001600160a01b0390911691506340c10f1990604401600060405180830381600087803b1580156200084f57600080fd5b505af115801562000864573d6000803e3d6000fd5b50505050505090565b600360209081527ff787d5ff306ee7ea1d7b35b5cacd5a837646921c113945dbc3a3b6329ce400338054600160ff1991821681179092557f01c8d1bf01472944f62fa726559c57c955f3535856e865cee78082252c0dbe6580548216831790557f3ba015d6b845e102ce2f76836007be82508e3543856f2a3c2ff4b56eb46d920e80548216831790557fdd629e5d55690c61d87bb2283f8033a4ed0c9727f0b3cc897e051f7afda800a580548216831790557f0de2b21138735878e0660eef23d1131fad23d66157bfa1c473a82b60c516992680548216831790557f83339eadc78535e76a031a9a544cf6fa252296becf88992d49fad5f832544a3880548216831790557fe372c44748f4c2908ae7c0a1dc553464478b0394f70953faecd55173b039317c80548216831790557f0c91243f75e216cf1d80d738f653c23abf15a7e3590b83c6e4772e2ddcffe53380548216831790557fc3d073881ce0daff4d900012573fe3b8d5b283519b2f509e59d1b978e7cf0fc580548216831790557fb0b6d2d73fcb69de4c434c711239319c2c669ebf6407f36fc258ff9f98f803fa80548216831790557fa093975c0a88af8b2bf4799c5b4be14d42fc326c2a331b9f3fb3caecbaa5104f80548216831790557fa4b6f6c87384a4c75064343ffd6646b01b98a7d0701dec60343872fe39d788948054821683179055605060009081527fe7defe1a9ee2663e7f593684ebe15b56452e1fa833a7efa12070ad6443b108198054909216909217905560a05160408051630559ea4760e01b815260026004820152905192936001600160a01b0390921692630559ea47926024808401939192918290030181865afa15801562000aea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b109190620011e7565b905060a0516001600160a01b0316632e85b1f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000b53573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b799190620011e7565b810362000bd65760286000527f2b634da6ab875d88498f503820d9b51f6eb10d3d2f378c32aef2289b509f3def6020527fac621d26042dfe10310b72d8951561de271dc6107fd5a2425e402b562f352a6e805460ff191660011790555b7f660fb3ca8607bfed7d8cb37f84121cb75b09f064d778ef290faa2cba4e9d1a0c805460ff191660019081179091556032600090815260046020527feaa72e3626d79eea854e214b64a34b95d0c9348f5b8df0b074d774f7dba83c659062000c3c602890565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019060049062000c70604690565b60ff1660ff168152602001908152602001600020600062000c96620011c060201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019060049062000cca606e90565b60ff1660ff168152602001908152602001600020600062000cf0620011c560201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019060049062000d24607890565b60ff1660ff168152602001908152602001600020600062000d4a620011c560201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019060049062000d7e608290565b60ff1660ff168152602001908152602001600020600062000da4620011c560201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019060049062000dd8608c90565b60ff1660ff168152602001908152602001600020600062000dfe620011c560201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019060059062000e32607a90565b60ff1660ff168152602001908152602001600020600062000e58620011d460201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019060059062000e8c60d390565b60ff1660ff168152602001908152602001600020600062000eb2620011ca60201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019060059062000ee660dc90565b60ff1660ff168152602001908152602001600020600062000f0c620011cf60201b60201c565b60ff1681526020808201929092526040016000908120805460ff191693151593909317909255605082526005905260019060008051602062005f1e8339815191529062000f57600a90565b60ff1681526020808201929092526040016000908120805460ff191693151593909317909255605082526005905260019060008051602062005f1e8339815191529062000fa2604690565b60ff1681526020810191909152604001600020805460ff191691151591909117905550565b600060a0516001600160a01b0316632e85b1f36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200100a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010309190620011e7565b60405163efac97cf60e01b81526004810182905290915060009073__$94a2c899be079b00d952d0d84fffaa5c34$__9063efac97cf90602401602060405180830381865af415801562001087573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010ad919062001201565b90506040518060e00160405280826001600160601b0316815260200173__$94a2c899be079b00d952d0d84fffaa5c34$__63efac97cf60a0516001600160a01b031663598e28926040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200114a9190620011e7565b6040518263ffffffff1660e01b81526004016200116991815260200190565b602060405180830381865af415801562001187573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011ad919062001201565b6001600160601b03168152602001620002135b602890565b604690565b606e90565b608c90565b607890565b611ed4806200404a83390190565b600060208284031215620011fa57600080fd5b5051919050565b6000602082840312156200121457600080fd5b81516001600160601b03811681146200122c57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200125e57607f821691505b6020821081036200127f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620012cf57600081815260208120601f850160051c81016020861015620012ae5750805b601f850160051c820191505b818110156200037a57828155600101620012ba565b505050565b81516001600160401b03811115620012f057620012f062001233565b620013088162001301845462001249565b8462001285565b602080601f831160018114620013405760008415620013275750858301515b600019600386901b1c1916600185901b1785556200037a565b600085815260208120601f198616915b82811015620013715788860151825594840194600190910190840162001350565b5085821015620013905787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c051612bf562001455600039600081816104fe0152818161056c015281816105f5015281816108c001528181610c5001528181610cdb01528181610e73015281816110c0015281816114740152818161162b0152818161170001526117770152600081816102710152818161068c015281816107f1015281816109a10152818161116f015281816113f80152818161194a0152611d29015260008181610331015261129e0152612bf56000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c8063a48f42e01161011a578063d1982d88116100ad578063e285c9c41161007c578063e285c9c4146104c6578063e74d052f146104ce578063f40d7c30146104e1578063f7dd05ba146104e9578063fee11aaf146104fc57600080fd5b8063d1982d8814610424578063d2213b5b14610437578063d272ac1e14610457578063d39e60431461048957600080fd5b8063ae8dfb79116100e9578063ae8dfb79146103e5578063c3c5a547146103ed578063c4c79d8b14610400578063caed98971461041357600080fd5b8063a48f42e014610399578063a52ec529146103ac578063a5df9e4e146103bf578063a7050a56146103d257600080fd5b80632b91e0a911610192578063644c45e011610161578063644c45e01461032f578063839f700c14610369578063893d20e8146103715780638b09a5f01461037957600080fd5b80632b91e0a9146102d157806335a5af92146102e457806338bb429a146102f95780633fe9300e1461030c57600080fd5b8063120726c3116101ce578063120726c31461026f57806314afd79e1461029557806317dc5e2a146102a85780631a848cfb146102bb57600080fd5b806301ffc9a7146102005780630e41142e146102285780630e6d1de9146102425780630e9ed68b1461024a575b600080fd5b61021361020e366004611e35565b610522565b60405190151581526020015b60405180910390f35b610230610568565b60405160ff909116815260200161021f565b6102306105f1565b6007546001600160a01b03165b6040516001600160a01b03909116815260200161021f565b7f0000000000000000000000000000000000000000000000000000000000000000610257565b6102576102a3366004611e77565b610651565b6102136102b6366004611e77565b610783565b6102c36107ed565b60405190815260200161021f565b6102136102df366004611e77565b610871565b6102f76102f2366004611e77565b6108b5565b005b610257610307366004611eb4565b610980565b6103226040518060200160405280600081525081565b60405161021f9190611f17565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160601b03909116815260200161021f565b6102c3600381565b6102576109f4565b61038c610387366004611e77565b6109ff565b60405161021f9190611f2a565b61038c6103a7366004611eb4565b610b63565b6102136103ba366004611fc7565b610c35565b6103516103cd366004612187565b610cc3565b6103516103e03660046121bb565b610e66565b6102c3600281565b6102136103fb366004611e77565b611040565b61035161040e36600461221e565b6110b3565b6006546001600160a01b0316610257565b610351610432366004612187565b61145c565b61044a610445366004611fc7565b6115c9565b60405161021f919061241a565b610351610465366004611e77565b6001600160a01b03166000908152600160205260409020546001600160601b031690565b6102576104973660046124dd565b60ff9081166000908152600260209081526040808320949093168252929092529020546001600160a01b031690565b610257600181565b6102136104dc366004611eb4565b6116a2565b6102306116fc565b6102576104f7366004611fc7565b61175c565b7f0000000000000000000000000000000000000000000000000000000000000000610257565b60006001600160e01b031982166301ffc9a760e01b148061055357506001600160e01b03198216633135064760e11b145b1561056057506001919050565b506000919050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630e41142e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ec9190612516565b905090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630e6d1de96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c8573d6000803e3d6000fd5b6001600160a01b0381811660009081526001602052604080822054905163046e44af60e11b81526001600160601b03909116600482015290917f00000000000000000000000000000000000000000000000000000000000000001690636352211e9073__$94a2c899be079b00d952d0d84fffaa5c34$__906308dc895e906024015b602060405180830381865af41580156106f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107149190612533565b6040516001600160e01b031960e084901b1681526001600160601b0390911660048201526024015b602060405180830381865afa158015610759573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077d9190612550565b92915050565b6001600160a01b0381166000908152600160209081526040808320546001600160601b0390811684529183905280832054600160601b9004909116808352908220546107e690600160c01b900460ff166107db604690565b60ff90811691161490565b9392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ec919061256d565b6001600160a01b0381166000908152600160209081526040808320546001600160601b031683529082905281205461077d90600160c01b900460ff166107db603c90565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108fd5760405162783d2b60e21b815260040160405180910390fd5b6006546001600160a01b031615610937576040516310436c4360e11b81526001600160a01b03821660048201526024015b60405180910390fd5b6001600160a01b03811661095e5760405163702e0b9360e11b815260040160405180910390fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b60405163046e44af60e11b81526001600160601b03821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e9073__$94a2c899be079b00d952d0d84fffaa5c34$__906308dc895e906024016106d3565b60006105ec30610651565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091526001600160a01b038083166000908152600160208181526040808420546001600160601b03908116855284835293819020815160e08101835281548087168252600160601b81049096169381019390935260ff600160c01b8604811692840192909252600160c81b90940416151560608201529082015483166080820152600282015490921660a083015260038101805460c084019190610ada90612586565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0690612586565b8015610b535780601f10610b2857610100808354040283529160200191610b53565b820191906000526020600020905b815481529060010190602001808311610b3657829003601f168201915b5050505050815250509050919050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091526001600160601b0380831660009081526020818152604091829020825160e08101845281548086168252600160601b81049095169281019290925260ff600160c01b8504811693830193909352600160c81b9093049091161515606082015260018201546001600160a01b03908116608083015260028301541660a082015260038201805491929160c084019190610ada90612586565b60405163a52ec52960e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a52ec52990602401602060405180830381865afa158015610c9f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077d91906125c0565b604051639ef6ddc960e01b81523360048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690639ef6ddc990602401602060405180830381865afa158015610d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4e91906125c0565b610d6b57604051639404710360e01b815260040160405180910390fd5b6040828101516020808501516001600160601b031660009081529081905291909120546080840151600160c01b90910460ff16906001600160a01b0316610e035760ff8083166000908152600560209081526040808320858516845290915281205490911615159003610dfe5760405163347a1f9760e21b815260ff80841660048301528216602482015260440161092e565b610e55565b60ff8083166000908152600460209081526040808320858516845290915281205490911615159003610e555760405163347a1f9760e21b815260ff80841660048301528216602482015260440161092e565b610e5e846117ae565b949350505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb05760405162783d2b60e21b815260040160405180910390fd5b608084015160405163037c8cb160e51b815260ff8416600482015273__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636f91962090602401602060405180830381865af4158015610f07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2b91906125c0565b15610f545760405163b580d22160e01b81526001600160a01b038216600482015260240161092e565b60ff8085166000908152600260209081526040808320938716835292905220546001600160a01b031615610fb757604051632a16d08d60e01b81526001600160a01b038216600482015260ff80861660248301528416604482015260640161092e565b60ff848116600090815260026020908152604080832093871683529290522080546001600160a01b0319166001600160a01b038316179055610ff8856117ae565b6040805160ff8088168252861660208201529193507fc4761a4fab07f2d3f242a458f91e31e4ea6128fe5edc599e3436f5f66317e0da910160405180910390a1509392505050565b6001600160a01b0381166000908152600160205260408082205490516330b8415f60e01b81526001600160601b03909116600482015273__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f906024015b602060405180830381865af4158015610c9f573d6000803e3d6000fd5b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110fd5760405162783d2b60e21b815260040160405180910390fd5b6007546001600160a01b0316156111365760075460405163c3408f4b60e01b81526001600160a01b03909116600482015260240161092e565b600780546001600160a01b0319166001600160a01b0385811691909117909155604051630559ea4760e01b8152600360048201526000917f00000000000000000000000000000000000000000000000000000000000000001690630559ea4790602401602060405180830381865afa1580156111b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111da919061256d565b60405163efac97cf60e01b81526004810182905290915073__$94a2c899be079b00d952d0d84fffaa5c34$__9063efac97cf90602401602060405180830381865af415801561122d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112519190612533565b6007546001600160a01b031660009081526001602090815260409182902080546bffffffffffffffffffffffff19166001600160601b03858116918217909255835160e0810185529081527f00000000000000000000000000000000000000000000000000000000000000009091169181019190915291935081016112d4602d90565b60ff9081168252600060208084018290526007546001600160a01b03908116604080870191909152898216606080880191909152815180850183528581526080978801526001600160601b03808b1686528585529482902088518154958a0151938a0151928a01511515600160c81b0260ff60c81b1993909816600160c01b029290921661ffff60c01b19938716600160601b026001600160c01b03199096169290961691909117939093171692909217929092178255918301516001820180549184166001600160a01b031992831617905560a08401516002830180549190941691161790915560c082015160038201906113d0908261262c565b50506040516340c10f1960e01b81526001600160a01b038581166004830152602482018490527f00000000000000000000000000000000000000000000000000000000000000001691506340c10f1990604401600060405180830381600087803b15801561143d57600080fd5b505af1158015611451573d6000803e3d6000fd5b505050505092915050565b604051639ef6ddc960e01b81523360048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690639ef6ddc990602401602060405180830381865afa1580156114c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e791906125c0565b61150457604051639404710360e01b815260040160405180910390fd5b6040808301516020808501516001600160601b031660009081528082528381205460ff80851683526003909352939020549192600160c01b90048116911615611560576040516368f27c4360e11b815260040160405180910390fd5b61156b81600a6107db565b8061157c575061157c8160286107db565b8061158d575061158d81603c6107db565b156115b85760405163347a1f9760e21b815260ff80841660048301528216602482015260440161092e565b6115c1846117ae565b505050919050565b6116136040518060e00160405280600060ff1681526020016060815260200160608152602001606081526020016060815260200160608152602001600064ffffffffff1681525090565b60405163d2213b5b60e01b815260ff831660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d2213b5b90602401600060405180830381865afa15801561167a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261077d9190810190612a5f565b6001600160601b03811660009081526020819052604080822054905163b2466acf60e01b8152600160c01b90910460ff16600482015273__$0d958e68cba84670b8f4a3f2f2686b1c6b$__9063b2466acf90602401611096565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f40d7c306040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c8573d6000803e3d6000fd5b6040516319d1478b60e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906319d1478b9060240161073c565b60408082015160608084015160808086015160a0808801516020808a01516001600160601b0380821660009081528084528b81208c5160e081018e5281548085168252600160601b81049094169581019590955260ff600160c01b840481169d86019d909d52600160c81b909204909b1615159883019890985260018801546001600160a01b039081169683019690965260028801549095169281019290925260038601805495969395919493899392909160c084019161186e90612586565b80601f016020809104026020016040519081016040528092919081815260200182805461189a90612586565b80156118e75780601f106118bc576101008083540402835291602001916118e7565b820191906000526020600020905b8154815290600101906020018083116118ca57829003601f168201915b50505091909252505050604081015160808201519192509060ff8816605014611931576001600160a01b03811661193157604051630bdad98960e11b815260040160405180910390fd5b6000611944888a89876060015186611dc5565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663caa0f92a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ca919061256d565b60405163efac97cf60e01b81526004810182905290915073__$94a2c899be079b00d952d0d84fffaa5c34$__9063efac97cf90602401602060405180830381865af4158015611a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a419190612533565b9a508a8c600001906001600160601b031690816001600160601b0316815250508b6000808d6001600160601b03166001600160601b0316815260200190815260200160002060008201518160000160006101000a8154816001600160601b0302191690836001600160601b03160217905550602082015181600001600c6101000a8154816001600160601b0302191690836001600160601b0316021790555060408201518160000160186101000a81548160ff021916908360ff16021790555060608201518160000160196101000a81548160ff02191690831515021790555060808201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060c0820151816003019081611b90919061262c565b5050506001600160a01b03881615611c99576001600160a01b038816600090815260016020526040908190205490516330b8415f60e01b81526001600160601b03909116600482015273__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015611c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3991906125c0565b15611c6257604051633fa3dceb60e21b81526001600160a01b038916600482015260240161092e565b6001600160a01b038816600090815260016020526040902080546bffffffffffffffffffffffff19166001600160601b038d161790555b604080516001600160601b038d811682528816602082015260ff8c16818301528a151560608201526001600160a01b038a81166080830152891660a082015290517f378868470b980e00aaf3e534a055e641e5fe9dfd8da44b4250edc6ad96e983879181900360c00190a16040805160208101825260008082529151631109bad360e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163221375a691611d61918c91889190600401612b7d565b6020604051808303816000875af1158015611d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da4919061256d565b9050818114611db557611db5612ba9565b5050505050505050505050919050565b6000611dd28560506107db565b15611ddf57506000611e13565b6001600160a01b038416611e02578215611dfa575080611e13565b506000611e13565b8515611e0f575082611e13565b5060005b95945050505050565b6001600160e01b031981168114611e3257600080fd5b50565b600060208284031215611e4757600080fd5b81356107e681611e1c565b6001600160a01b0381168114611e3257600080fd5b8035611e7281611e52565b919050565b600060208284031215611e8957600080fd5b81356107e681611e52565b6001600160601b0381168114611e3257600080fd5b8035611e7281611e94565b600060208284031215611ec657600080fd5b81356107e681611e94565b6000815180845260005b81811015611ef757602081850181015186830182015201611edb565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006107e66020830184611ed1565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a0830151611f9360c08401826001600160a01b03169052565b5060c083015160e080840152610e5e610100840182611ed1565b60ff81168114611e3257600080fd5b8035611e7281611fad565b600060208284031215611fd957600080fd5b81356107e681611fad565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b038111828210171561201c5761201c611fe4565b60405290565b604051601f8201601f191681016001600160401b038111828210171561204a5761204a611fe4565b604052919050565b8015158114611e3257600080fd5b8035611e7281612052565b600082601f83011261207c57600080fd5b81356001600160401b0381111561209557612095611fe4565b6120a8601f8201601f1916602001612022565b8181528460208386010111156120bd57600080fd5b816020850160208301376000918101602001919091529392505050565b600060e082840312156120ec57600080fd5b6120f4611ffa565b90506120ff82611ea9565b815261210d60208301611ea9565b602082015261211e60408301611fbc565b604082015261212f60608301612060565b606082015261214060808301611e67565b608082015261215160a08301611e67565b60a082015260c08201356001600160401b0381111561216f57600080fd5b61217b8482850161206b565b60c08301525092915050565b60006020828403121561219957600080fd5b81356001600160401b038111156121af57600080fd5b610e5e848285016120da565b6000806000606084860312156121d057600080fd5b83356001600160401b038111156121e657600080fd5b6121f2868287016120da565b935050602084013561220381611fad565b9150604084013561221381611fad565b809150509250925092565b6000806040838503121561223157600080fd5b823561223c81611e52565b9150602083013561224c81611e52565b809150509250929050565b600081518084526020808501945080840160005b838110156122905781516001600160a01b03168752958201959082019060010161226b565b509495945050505050565b600081518084526020808501808196508360051b810191508286016000805b86811015612312578385038a52825180518087529087019087870190845b818110156122fd5783516001600160401b0316835292890192918901916001016122d8565b50509a87019a955050918501916001016122ba565b509298975050505050505050565b600081518084526020808501808196506005915083821b810183870160005b868110156123d9578383038a5281518051808552908701908785019080881b8601890160005b828110156123c357878203601f1901845284518051808452908c01908c84019060005b818110156123ae5783516001600160e01b0319168352928e0192918e0191600101612388565b5050958c0195948c0194925050600101612365565b509c89019c95505050918601915060010161233f565b509098975050505050505050565b600081518084526020808501945080840160005b8381101561229057815160ff16875295820195908201906001016123fb565b6020815260ff82511660208201526000602083015160e06040840152612444610100840182612257565b90506040840151601f1980858403016060860152612462838361229b565b9250606086015191508085840301608086015261247f838361229b565b925060808601519150808584030160a086015261249c8383612320565b925060a08601519150808584030160c0860152506124ba82826123e7565b91505060c08401516124d560e085018264ffffffffff169052565b509392505050565b600080604083850312156124f057600080fd5b82356124fb81611fad565b9150602083013561224c81611fad565b8051611e7281611fad565b60006020828403121561252857600080fd5b81516107e681611fad565b60006020828403121561254557600080fd5b81516107e681611e94565b60006020828403121561256257600080fd5b81516107e681611e52565b60006020828403121561257f57600080fd5b5051919050565b600181811c9082168061259a57607f821691505b6020821081036125ba57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156125d257600080fd5b81516107e681612052565b601f82111561262757600081815260208120601f850160051c810160208610156126045750805b601f850160051c820191505b8181101561262357828155600101612610565b5050505b505050565b81516001600160401b0381111561264557612645611fe4565b612659816126538454612586565b846125dd565b602080601f83116001811461268e57600084156126765750858301515b600019600386901b1c1916600185901b178555612623565b600085815260208120601f198616915b828110156126bd5788860151825594840194600190910190840161269e565b50858210156126db5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006001600160401b0382111561270457612704611fe4565b5060051b60200190565b600082601f83011261271f57600080fd5b8151602061273461272f836126eb565b612022565b82815260059290921b8401810191818101908684111561275357600080fd5b8286015b8481101561277757805161276a81611e52565b8352918301918301612757565b509695505050505050565b600082601f83011261279357600080fd5b815160206127a361272f836126eb565b828152600592831b85018201928282019190878511156127c257600080fd5b8387015b8581101561286c5780516001600160401b03808211156127e65760008081fd5b818a0191508a603f8301126127fb5760008081fd5b86820151604061280d61272f836126eb565b82815291861b8401810191898101908e84111561282a5760008081fd5b948201945b8386101561285a5785519250848316831461284a5760008081fd5b828252948a0194908a019061282f565b895250505094860194505084016127c6565b5090979650505050505050565b600082601f83011261288a57600080fd5b815161289861272f826126eb565b8082825260208201915060208360051b8601019250858311156128ba57600080fd5b602085015b838110156129dc5780516001600160401b038111156128dd57600080fd5b8601603f810188136128ee57600080fd5b60208101516128ff61272f826126eb565b81815260059190911b82016040019060208101908a83111561292057600080fd5b604084015b838110156129c65780516001600160401b0381111561294357600080fd5b8501605f81018d1361295457600080fd5b604081015161296561272f826126eb565b81815260059190911b82016060019060208101908f83111561298657600080fd5b6060840193505b828410156129b15783516129a081611e1c565b82526020938401939091019061298d565b86525050602093840193919091019050612925565b50865250506020938401939190910190506128bf565b5095945050505050565b600082601f8301126129f757600080fd5b81516020612a0761272f836126eb565b82815260059290921b84018101918181019086841115612a2657600080fd5b8286015b84811015612777578051612a3d81611fad565b8352918301918301612a2a565b805164ffffffffff81168114611e7257600080fd5b600060208284031215612a7157600080fd5b81516001600160401b0380821115612a8857600080fd5b9083019060e08286031215612a9c57600080fd5b612aa4611ffa565b612aad8361250b565b8152602083015182811115612ac157600080fd5b612acd8782860161270e565b602083015250604083015182811115612ae557600080fd5b612af187828601612782565b604083015250606083015182811115612b0957600080fd5b612b1587828601612782565b606083015250608083015182811115612b2d57600080fd5b612b3987828601612879565b60808301525060a083015182811115612b5157600080fd5b612b5d878286016129e6565b60a083015250612b6f60c08401612a4a565b60c082015295945050505050565b6001600160a01b03848116825283166020820152606060408201819052600090611e1390830184611ed1565b634e487b7160e01b600052600160045260246000fdfea26469706673582212209c863e773f07e3e8c6a21dd57a99cd641de15444173f2fd29ba959260b11004064736f6c6343000814003360806040523480156200001157600080fd5b5060405162001ed438038062001ed483398101604081905262000034916200012e565b60405180606001604052806024815260200162001eb06024913960408051808201909152600681526511125413919560d21b6020820152600062000079838262000205565b50600162000088828262000205565b5050506001600160a01b038116620000b357604051630ae1413f60e11b815260040160405180910390fd5b600c80546001600160a01b0319166001600160a01b03831617905546600d8190556000600e555b80156200010e57600e8054906000620000f383620002e7565b90915550620001069050600a8262000303565b9050620000da565b600e546200011e90600a62000425565b600f555050600460105562000433565b6000602082840312156200014157600080fd5b81516001600160a01b03811681146200015957600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018b57607f821691505b602082108103620001ac57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020057600081815260208120601f850160051c81016020861015620001db5750805b601f850160051c820191505b81811015620001fc57828155600101620001e7565b5050505b505050565b81516001600160401b0381111562000221576200022162000160565b620002398162000232845462000176565b84620001b2565b602080601f831160018114620002715760008415620002585750858301515b600019600386901b1c1916600185901b178555620001fc565b600085815260208120601f198616915b82811015620002a25788860151825594840194600190910190840162000281565b5085821015620002c15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201620002fc57620002fc620002d1565b5060010190565b6000826200032157634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620003675781600019048211156200034b576200034b620002d1565b808516156200035957918102915b93841c93908002906200032b565b509250929050565b60008262000380575060016200041f565b816200038f575060006200041f565b8160018114620003a85760028114620003b357620003d3565b60019150506200041f565b60ff841115620003c757620003c7620002d1565b50506001821b6200041f565b5060208310610133831016604e8410600b8410161715620003f8575081810a6200041f565b62000404838362000326565b80600019048211156200041b576200041b620002d1565b0290505b92915050565b60006200015983836200036f565b611a6d80620004436000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80634f6ccce711610104578063a2309ff8116100a2578063caa0f92a11610071578063caa0f92a146103fa578063e985e9c514610402578063f21de1e814610415578063f76f8d781461042657600080fd5b8063a2309ff8146103c4578063a3f4df7e146103cc578063b88d4fde146103d4578063c87b56dd146103e757600080fd5b806370a08231116100de57806370a0823114610383578063862440e21461039657806395d89b41146103a9578063a22cb465146103b157600080fd5b80634f6ccce714610354578063598e2892146103675780636352211e1461037057600080fd5b806323b872dd1161017c57806340c10f191161014b57806340c10f19146102f057806342842e0e1461030357806342966c68146103165780634f558e791461032957600080fd5b806323b872dd146102985780632e85b1f3146102ab5780632f745c59146102b4578063342ec443146102c757600080fd5b8063081812fc116101b8578063081812fc1461023d578063095ea7b31461026857806318160ddd1461027d578063221375a61461028557600080fd5b806301ffc9a7146101df5780630559ea471461020757806306fdde0314610228575b600080fd5b6101f26101ed366004611471565b61044b565b60405190151581526020015b60405180910390f35b61021a61021536600461148e565b610476565b6040519081526020016101fe565b6102306104ab565b6040516101fe91906114ed565b61025061024b36600461148e565b61053d565b6040516001600160a01b0390911681526020016101fe565b61027b61027636600461151c565b610566565b005b60085461021a565b61021a6102933660046115f2565b610575565b61027b6102a6366004611650565b6106a4565b61021a61083581565b61021a6102c236600461151c565b61074d565b6102506102d536600461148e565b6000908152600a60205260409020546001600160a01b031690565b61027b6102fe36600461151c565b6107b2565b61027b610311366004611650565b6107fe565b61027b61032436600461148e565b610819565b6101f261033736600461148e565b6000908152600260205260409020546001600160a01b0316151590565b61021a61036236600461148e565b610873565b61021a61044d81565b61025061037e36600461148e565b6108cc565b61021a61039136600461168c565b6108d7565b61027b6103a43660046116a7565b61091f565b6102306109ca565b61027b6103bf3660046116ee565b6109d9565b60115461021a565b6102306109e4565b61027b6103e236600461172a565b610a00565b6102306103f536600461148e565b610a1d565b61021a610ac7565b6101f26104103660046117a6565b610ad9565b600c546001600160a01b0316610250565b6102306040518060400160405280600681526020016511125413919560d21b81525081565b60006001600160e01b0319821663780e9d6360e01b1480610470575061047082610b07565b92915050565b6000600e54600d54600f548461048c91906117ef565b6104969190611806565b6104a19060646117ef565b6104709190611806565b6060600080546104ba90611819565b80601f01602080910402602001604051908101604052809291908181526020018280546104e690611819565b80156105335780601f1061050857610100808354040283529160200191610533565b820191906000526020600020905b81548152906001019060200180831161051657829003601f168201915b5050505050905090565b600061054882610b57565b506000828152600460205260409020546001600160a01b0316610470565b610571828233610b90565b5050565b600c546000906001600160a01b031633146105aa576040516399c6cd7160e01b81523360048201526024015b60405180910390fd5b6105b2610b9d565b90506001600160a01b038316156105eb576000818152600a6020526040902080546001600160a01b0319166001600160a01b0385161790555b81511561060c576000818152600b6020526040902061060a83826118a1565b505b6011805490600061061c83611961565b919050555061062b8482610bc4565b6001600160a01b0383161561069d5760405163bb1e0e5960e01b81526001600160a01b0385811660048301526024820183905284169063bb1e0e5990604401600060405180830381600087803b15801561068457600080fd5b505af1158015610698573d6000803e3d6000fd5b505050505b9392505050565b6106af838383610bde565b6000818152600a60205260409020546001600160a01b031615610748576000818152600a6020526040908190205490516373fbfdc360e11b81526001600160a01b0385811660048301528481166024830152604482018490529091169063e7f7fb8690606401600060405180830381600087803b15801561072f57600080fd5b505af1158015610743573d6000803e3d6000fd5b505050505b505050565b6000610758836108d7565b82106107895760405163295f44f760e21b81526001600160a01b0384166004820152602481018390526044016105a1565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b600c546001600160a01b031633146107df576040516399c6cd7160e01b81523360048201526024016105a1565b601180549060006107ef83611961565b91905055506105718282610bc4565b61074883838360405180602001604052806000815250610a00565b600c546001600160a01b03163314610846576040516399c6cd7160e01b81523360048201526024016105a1565b61084f81610b57565b5061085981610c63565b6000818152600b602052604081206108709161140d565b50565b600061087e60085490565b82106108a75760405163295f44f760e21b815260006004820152602481018390526044016105a1565b600882815481106108ba576108ba61197a565b90600052602060002001549050919050565b600061047082610b57565b60006001600160a01b038216610903576040516322718ad960e21b8152600060048201526024016105a1565b506001600160a01b031660009081526003602052604090205490565b600c546001600160a01b0316331461094c576040516399c6cd7160e01b81523360048201526024016105a1565b805160000361096e57604051638e45096160e01b815260040160405180910390fd5b6000828152600b60205260408120805461098790611819565b905011156109a85760405163303822c760e21b815260040160405180910390fd5b6109b182610b57565b506000828152600b6020526040902061074882826118a1565b6060600180546104ba90611819565b610571338383610c9e565b604051806060016040528060248152602001611a146024913981565b610a0b8484846106a4565b610a1784848484610d3d565b50505050565b6060610a2882610b57565b506000828152600b602052604090208054610a4290611819565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6e90611819565b8015610abb5780601f10610a9057610100808354040283529160200191610abb565b820191906000526020600020905b815481529060010190602001808311610a9e57829003601f168201915b50505050509050919050565b6000610ad4601054610476565b905090565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b1480610b3857506001600160e01b03198216635b5e139f60e01b145b8061047057506301ffc9a760e01b6001600160e01b0319831614610470565b6000818152600260205260408120546001600160a01b03168061047057604051637e27328960e01b8152600481018490526024016105a1565b6107488383836001610e66565b6000610baa601054610476565b601080549192506000610bbc83611961565b919050555090565b610571828260405180602001604052806000815250610f6c565b6001600160a01b038216610c0857604051633250574960e11b8152600060048201526024016105a1565b6000610c15838333610f83565b9050836001600160a01b0316816001600160a01b031614610a17576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016105a1565b6000610c726000836000610f83565b90506001600160a01b03811661057157604051637e27328960e01b8152600481018390526024016105a1565b6001600160a01b038216610cd057604051630b61174360e31b81526001600160a01b03831660048201526024016105a1565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610a1757604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610d7f903390889087908790600401611990565b6020604051808303816000875af1925050508015610dba575060408051601f3d908101601f19168201909252610db7918101906119cd565b60015b610e23573d808015610de8576040519150601f19603f3d011682016040523d82523d6000602084013e610ded565b606091505b508051600003610e1b57604051633250574960e11b81526001600160a01b03851660048201526024016105a1565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610e5f57604051633250574960e11b81526001600160a01b03851660048201526024016105a1565b5050505050565b8080610e7a57506001600160a01b03821615155b15610f3c576000610e8a84610b57565b90506001600160a01b03831615801590610eb65750826001600160a01b0316816001600160a01b031614155b8015610ec95750610ec78184610ad9565b155b15610ef25760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016105a1565b8115610f3a5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610f768383611058565b6107486000848484610d3d565b600080610f918585856110bd565b90506001600160a01b038116610fee57610fe984600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611011565b846001600160a01b0316816001600160a01b0316146110115761101181856111b6565b6001600160a01b03851661102d5761102884611247565b611050565b846001600160a01b0316816001600160a01b0316146110505761105085856112f6565b949350505050565b6001600160a01b03821661108257604051633250574960e11b8152600060048201526024016105a1565b600061109083836000610f83565b90506001600160a01b03811615610748576040516339e3563760e11b8152600060048201526024016105a1565b6000828152600260205260408120546001600160a01b03908116908316156110ea576110ea818486611346565b6001600160a01b0381161561112857611107600085600080610e66565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615611157576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b60006111c1836108d7565b600083815260076020526040902054909150808214611214576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090611259906001906119ea565b600083815260096020526040812054600880549394509092849081106112815761128161197a565b9060005260206000200154905080600883815481106112a2576112a261197a565b60009182526020808320909101929092558281526009909152604080822084905585825281205560088054806112da576112da6119fd565b6001900381819060005260206000200160009055905550505050565b60006001611303846108d7565b61130d91906119ea565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6113518383836113aa565b610748576001600160a01b03831661137f57604051637e27328960e01b8152600481018290526024016105a1565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016105a1565b60006001600160a01b038316158015906110505750826001600160a01b0316846001600160a01b031614806113e457506113e48484610ad9565b806110505750506000908152600460205260409020546001600160a01b03908116911614919050565b50805461141990611819565b6000825580601f10611429575050565b601f01602090049060005260206000209081019061087091905b808211156114575760008155600101611443565b5090565b6001600160e01b03198116811461087057600080fd5b60006020828403121561148357600080fd5b813561069d8161145b565b6000602082840312156114a057600080fd5b5035919050565b6000815180845260005b818110156114cd576020818501810151868301820152016114b1565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061069d60208301846114a7565b80356001600160a01b038116811461151757600080fd5b919050565b6000806040838503121561152f57600080fd5b61153883611500565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561157757611577611546565b604051601f8501601f19908116603f0116810190828211818310171561159f5761159f611546565b816040528093508581528686860111156115b857600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126115e357600080fd5b61069d8383356020850161155c565b60008060006060848603121561160757600080fd5b61161084611500565b925061161e60208501611500565b9150604084013567ffffffffffffffff81111561163a57600080fd5b611646868287016115d2565b9150509250925092565b60008060006060848603121561166557600080fd5b61166e84611500565b925061167c60208501611500565b9150604084013590509250925092565b60006020828403121561169e57600080fd5b61069d82611500565b600080604083850312156116ba57600080fd5b82359150602083013567ffffffffffffffff8111156116d857600080fd5b6116e4858286016115d2565b9150509250929050565b6000806040838503121561170157600080fd5b61170a83611500565b91506020830135801515811461171f57600080fd5b809150509250929050565b6000806000806080858703121561174057600080fd5b61174985611500565b935061175760208601611500565b925060408501359150606085013567ffffffffffffffff81111561177a57600080fd5b8501601f8101871361178b57600080fd5b61179a8782356020840161155c565b91505092959194509250565b600080604083850312156117b957600080fd5b6117c283611500565b91506117d060208401611500565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610470576104706117d9565b80820180821115610470576104706117d9565b600181811c9082168061182d57607f821691505b60208210810361184d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561074857600081815260208120601f850160051c8101602086101561187a5750805b601f850160051c820191505b8181101561189957828155600101611886565b505050505050565b815167ffffffffffffffff8111156118bb576118bb611546565b6118cf816118c98454611819565b84611853565b602080601f83116001811461190457600084156118ec5750858301515b600019600386901b1c1916600185901b178555611899565b600085815260208120601f198616915b8281101561193357888601518255948401946001909101908401611914565b50858210156119515787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060018201611973576119736117d9565b5060010190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906119c3908301846114a7565b9695505050505050565b6000602082840312156119df57600080fd5b815161069d8161145b565b81810381811115610470576104706117d9565b634e487b7160e01b600052603160045260246000fdfe44657a656e7472616c697a656420496e737572616e63652050726f746f636f6c204e4654a26469706673582212201c206c88d68a84c98fed36fe3a883ab4f5bdefae62ce762d8cfdc4ec21cf038664736f6c6343000814003344657a656e7472616c697a656420496e737572616e63652050726f746f636f6c204e465430c4eb3473a92a4e6b6f491fdd776ad6e2d0aee19320eea501577ea85eb5256d",
960
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c8063a48f42e01161011a578063d1982d88116100ad578063e285c9c41161007c578063e285c9c4146104c6578063e74d052f146104ce578063f40d7c30146104e1578063f7dd05ba146104e9578063fee11aaf146104fc57600080fd5b8063d1982d8814610424578063d2213b5b14610437578063d272ac1e14610457578063d39e60431461048957600080fd5b8063ae8dfb79116100e9578063ae8dfb79146103e5578063c3c5a547146103ed578063c4c79d8b14610400578063caed98971461041357600080fd5b8063a48f42e014610399578063a52ec529146103ac578063a5df9e4e146103bf578063a7050a56146103d257600080fd5b80632b91e0a911610192578063644c45e011610161578063644c45e01461032f578063839f700c14610369578063893d20e8146103715780638b09a5f01461037957600080fd5b80632b91e0a9146102d157806335a5af92146102e457806338bb429a146102f95780633fe9300e1461030c57600080fd5b8063120726c3116101ce578063120726c31461026f57806314afd79e1461029557806317dc5e2a146102a85780631a848cfb146102bb57600080fd5b806301ffc9a7146102005780630e41142e146102285780630e6d1de9146102425780630e9ed68b1461024a575b600080fd5b61021361020e366004611e35565b610522565b60405190151581526020015b60405180910390f35b610230610568565b60405160ff909116815260200161021f565b6102306105f1565b6007546001600160a01b03165b6040516001600160a01b03909116815260200161021f565b7f0000000000000000000000000000000000000000000000000000000000000000610257565b6102576102a3366004611e77565b610651565b6102136102b6366004611e77565b610783565b6102c36107ed565b60405190815260200161021f565b6102136102df366004611e77565b610871565b6102f76102f2366004611e77565b6108b5565b005b610257610307366004611eb4565b610980565b6103226040518060200160405280600081525081565b60405161021f9190611f17565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160601b03909116815260200161021f565b6102c3600381565b6102576109f4565b61038c610387366004611e77565b6109ff565b60405161021f9190611f2a565b61038c6103a7366004611eb4565b610b63565b6102136103ba366004611fc7565b610c35565b6103516103cd366004612187565b610cc3565b6103516103e03660046121bb565b610e66565b6102c3600281565b6102136103fb366004611e77565b611040565b61035161040e36600461221e565b6110b3565b6006546001600160a01b0316610257565b610351610432366004612187565b61145c565b61044a610445366004611fc7565b6115c9565b60405161021f919061241a565b610351610465366004611e77565b6001600160a01b03166000908152600160205260409020546001600160601b031690565b6102576104973660046124dd565b60ff9081166000908152600260209081526040808320949093168252929092529020546001600160a01b031690565b610257600181565b6102136104dc366004611eb4565b6116a2565b6102306116fc565b6102576104f7366004611fc7565b61175c565b7f0000000000000000000000000000000000000000000000000000000000000000610257565b60006001600160e01b031982166301ffc9a760e01b148061055357506001600160e01b03198216633135064760e11b145b1561056057506001919050565b506000919050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630e41142e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ec9190612516565b905090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630e6d1de96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c8573d6000803e3d6000fd5b6001600160a01b0381811660009081526001602052604080822054905163046e44af60e11b81526001600160601b03909116600482015290917f00000000000000000000000000000000000000000000000000000000000000001690636352211e9073__$94a2c899be079b00d952d0d84fffaa5c34$__906308dc895e906024015b602060405180830381865af41580156106f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107149190612533565b6040516001600160e01b031960e084901b1681526001600160601b0390911660048201526024015b602060405180830381865afa158015610759573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077d9190612550565b92915050565b6001600160a01b0381166000908152600160209081526040808320546001600160601b0390811684529183905280832054600160601b9004909116808352908220546107e690600160c01b900460ff166107db604690565b60ff90811691161490565b9392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ec919061256d565b6001600160a01b0381166000908152600160209081526040808320546001600160601b031683529082905281205461077d90600160c01b900460ff166107db603c90565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108fd5760405162783d2b60e21b815260040160405180910390fd5b6006546001600160a01b031615610937576040516310436c4360e11b81526001600160a01b03821660048201526024015b60405180910390fd5b6001600160a01b03811661095e5760405163702e0b9360e11b815260040160405180910390fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b60405163046e44af60e11b81526001600160601b03821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e9073__$94a2c899be079b00d952d0d84fffaa5c34$__906308dc895e906024016106d3565b60006105ec30610651565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091526001600160a01b038083166000908152600160208181526040808420546001600160601b03908116855284835293819020815160e08101835281548087168252600160601b81049096169381019390935260ff600160c01b8604811692840192909252600160c81b90940416151560608201529082015483166080820152600282015490921660a083015260038101805460c084019190610ada90612586565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0690612586565b8015610b535780601f10610b2857610100808354040283529160200191610b53565b820191906000526020600020905b815481529060010190602001808311610b3657829003601f168201915b5050505050815250509050919050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091526001600160601b0380831660009081526020818152604091829020825160e08101845281548086168252600160601b81049095169281019290925260ff600160c01b8504811693830193909352600160c81b9093049091161515606082015260018201546001600160a01b03908116608083015260028301541660a082015260038201805491929160c084019190610ada90612586565b60405163a52ec52960e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a52ec52990602401602060405180830381865afa158015610c9f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077d91906125c0565b604051639ef6ddc960e01b81523360048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690639ef6ddc990602401602060405180830381865afa158015610d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4e91906125c0565b610d6b57604051639404710360e01b815260040160405180910390fd5b6040828101516020808501516001600160601b031660009081529081905291909120546080840151600160c01b90910460ff16906001600160a01b0316610e035760ff8083166000908152600560209081526040808320858516845290915281205490911615159003610dfe5760405163347a1f9760e21b815260ff80841660048301528216602482015260440161092e565b610e55565b60ff8083166000908152600460209081526040808320858516845290915281205490911615159003610e555760405163347a1f9760e21b815260ff80841660048301528216602482015260440161092e565b610e5e846117ae565b949350505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb05760405162783d2b60e21b815260040160405180910390fd5b608084015160405163037c8cb160e51b815260ff8416600482015273__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636f91962090602401602060405180830381865af4158015610f07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2b91906125c0565b15610f545760405163b580d22160e01b81526001600160a01b038216600482015260240161092e565b60ff8085166000908152600260209081526040808320938716835292905220546001600160a01b031615610fb757604051632a16d08d60e01b81526001600160a01b038216600482015260ff80861660248301528416604482015260640161092e565b60ff848116600090815260026020908152604080832093871683529290522080546001600160a01b0319166001600160a01b038316179055610ff8856117ae565b6040805160ff8088168252861660208201529193507fc4761a4fab07f2d3f242a458f91e31e4ea6128fe5edc599e3436f5f66317e0da910160405180910390a1509392505050565b6001600160a01b0381166000908152600160205260408082205490516330b8415f60e01b81526001600160601b03909116600482015273__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f906024015b602060405180830381865af4158015610c9f573d6000803e3d6000fd5b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110fd5760405162783d2b60e21b815260040160405180910390fd5b6007546001600160a01b0316156111365760075460405163c3408f4b60e01b81526001600160a01b03909116600482015260240161092e565b600780546001600160a01b0319166001600160a01b0385811691909117909155604051630559ea4760e01b8152600360048201526000917f00000000000000000000000000000000000000000000000000000000000000001690630559ea4790602401602060405180830381865afa1580156111b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111da919061256d565b60405163efac97cf60e01b81526004810182905290915073__$94a2c899be079b00d952d0d84fffaa5c34$__9063efac97cf90602401602060405180830381865af415801561122d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112519190612533565b6007546001600160a01b031660009081526001602090815260409182902080546bffffffffffffffffffffffff19166001600160601b03858116918217909255835160e0810185529081527f00000000000000000000000000000000000000000000000000000000000000009091169181019190915291935081016112d4602d90565b60ff9081168252600060208084018290526007546001600160a01b03908116604080870191909152898216606080880191909152815180850183528581526080978801526001600160601b03808b1686528585529482902088518154958a0151938a0151928a01511515600160c81b0260ff60c81b1993909816600160c01b029290921661ffff60c01b19938716600160601b026001600160c01b03199096169290961691909117939093171692909217929092178255918301516001820180549184166001600160a01b031992831617905560a08401516002830180549190941691161790915560c082015160038201906113d0908261262c565b50506040516340c10f1960e01b81526001600160a01b038581166004830152602482018490527f00000000000000000000000000000000000000000000000000000000000000001691506340c10f1990604401600060405180830381600087803b15801561143d57600080fd5b505af1158015611451573d6000803e3d6000fd5b505050505092915050565b604051639ef6ddc960e01b81523360048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690639ef6ddc990602401602060405180830381865afa1580156114c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e791906125c0565b61150457604051639404710360e01b815260040160405180910390fd5b6040808301516020808501516001600160601b031660009081528082528381205460ff80851683526003909352939020549192600160c01b90048116911615611560576040516368f27c4360e11b815260040160405180910390fd5b61156b81600a6107db565b8061157c575061157c8160286107db565b8061158d575061158d81603c6107db565b156115b85760405163347a1f9760e21b815260ff80841660048301528216602482015260440161092e565b6115c1846117ae565b505050919050565b6116136040518060e00160405280600060ff1681526020016060815260200160608152602001606081526020016060815260200160608152602001600064ffffffffff1681525090565b60405163d2213b5b60e01b815260ff831660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d2213b5b90602401600060405180830381865afa15801561167a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261077d9190810190612a5f565b6001600160601b03811660009081526020819052604080822054905163b2466acf60e01b8152600160c01b90910460ff16600482015273__$0d958e68cba84670b8f4a3f2f2686b1c6b$__9063b2466acf90602401611096565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f40d7c306040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c8573d6000803e3d6000fd5b6040516319d1478b60e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906319d1478b9060240161073c565b60408082015160608084015160808086015160a0808801516020808a01516001600160601b0380821660009081528084528b81208c5160e081018e5281548085168252600160601b81049094169581019590955260ff600160c01b840481169d86019d909d52600160c81b909204909b1615159883019890985260018801546001600160a01b039081169683019690965260028801549095169281019290925260038601805495969395919493899392909160c084019161186e90612586565b80601f016020809104026020016040519081016040528092919081815260200182805461189a90612586565b80156118e75780601f106118bc576101008083540402835291602001916118e7565b820191906000526020600020905b8154815290600101906020018083116118ca57829003601f168201915b50505091909252505050604081015160808201519192509060ff8816605014611931576001600160a01b03811661193157604051630bdad98960e11b815260040160405180910390fd5b6000611944888a89876060015186611dc5565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663caa0f92a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ca919061256d565b60405163efac97cf60e01b81526004810182905290915073__$94a2c899be079b00d952d0d84fffaa5c34$__9063efac97cf90602401602060405180830381865af4158015611a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a419190612533565b9a508a8c600001906001600160601b031690816001600160601b0316815250508b6000808d6001600160601b03166001600160601b0316815260200190815260200160002060008201518160000160006101000a8154816001600160601b0302191690836001600160601b03160217905550602082015181600001600c6101000a8154816001600160601b0302191690836001600160601b0316021790555060408201518160000160186101000a81548160ff021916908360ff16021790555060608201518160000160196101000a81548160ff02191690831515021790555060808201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060c0820151816003019081611b90919061262c565b5050506001600160a01b03881615611c99576001600160a01b038816600090815260016020526040908190205490516330b8415f60e01b81526001600160601b03909116600482015273__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015611c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3991906125c0565b15611c6257604051633fa3dceb60e21b81526001600160a01b038916600482015260240161092e565b6001600160a01b038816600090815260016020526040902080546bffffffffffffffffffffffff19166001600160601b038d161790555b604080516001600160601b038d811682528816602082015260ff8c16818301528a151560608201526001600160a01b038a81166080830152891660a082015290517f378868470b980e00aaf3e534a055e641e5fe9dfd8da44b4250edc6ad96e983879181900360c00190a16040805160208101825260008082529151631109bad360e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163221375a691611d61918c91889190600401612b7d565b6020604051808303816000875af1158015611d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da4919061256d565b9050818114611db557611db5612ba9565b5050505050505050505050919050565b6000611dd28560506107db565b15611ddf57506000611e13565b6001600160a01b038416611e02578215611dfa575080611e13565b506000611e13565b8515611e0f575082611e13565b5060005b95945050505050565b6001600160e01b031981168114611e3257600080fd5b50565b600060208284031215611e4757600080fd5b81356107e681611e1c565b6001600160a01b0381168114611e3257600080fd5b8035611e7281611e52565b919050565b600060208284031215611e8957600080fd5b81356107e681611e52565b6001600160601b0381168114611e3257600080fd5b8035611e7281611e94565b600060208284031215611ec657600080fd5b81356107e681611e94565b6000815180845260005b81811015611ef757602081850181015186830182015201611edb565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006107e66020830184611ed1565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a0830151611f9360c08401826001600160a01b03169052565b5060c083015160e080840152610e5e610100840182611ed1565b60ff81168114611e3257600080fd5b8035611e7281611fad565b600060208284031215611fd957600080fd5b81356107e681611fad565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b038111828210171561201c5761201c611fe4565b60405290565b604051601f8201601f191681016001600160401b038111828210171561204a5761204a611fe4565b604052919050565b8015158114611e3257600080fd5b8035611e7281612052565b600082601f83011261207c57600080fd5b81356001600160401b0381111561209557612095611fe4565b6120a8601f8201601f1916602001612022565b8181528460208386010111156120bd57600080fd5b816020850160208301376000918101602001919091529392505050565b600060e082840312156120ec57600080fd5b6120f4611ffa565b90506120ff82611ea9565b815261210d60208301611ea9565b602082015261211e60408301611fbc565b604082015261212f60608301612060565b606082015261214060808301611e67565b608082015261215160a08301611e67565b60a082015260c08201356001600160401b0381111561216f57600080fd5b61217b8482850161206b565b60c08301525092915050565b60006020828403121561219957600080fd5b81356001600160401b038111156121af57600080fd5b610e5e848285016120da565b6000806000606084860312156121d057600080fd5b83356001600160401b038111156121e657600080fd5b6121f2868287016120da565b935050602084013561220381611fad565b9150604084013561221381611fad565b809150509250925092565b6000806040838503121561223157600080fd5b823561223c81611e52565b9150602083013561224c81611e52565b809150509250929050565b600081518084526020808501945080840160005b838110156122905781516001600160a01b03168752958201959082019060010161226b565b509495945050505050565b600081518084526020808501808196508360051b810191508286016000805b86811015612312578385038a52825180518087529087019087870190845b818110156122fd5783516001600160401b0316835292890192918901916001016122d8565b50509a87019a955050918501916001016122ba565b509298975050505050505050565b600081518084526020808501808196506005915083821b810183870160005b868110156123d9578383038a5281518051808552908701908785019080881b8601890160005b828110156123c357878203601f1901845284518051808452908c01908c84019060005b818110156123ae5783516001600160e01b0319168352928e0192918e0191600101612388565b5050958c0195948c0194925050600101612365565b509c89019c95505050918601915060010161233f565b509098975050505050505050565b600081518084526020808501945080840160005b8381101561229057815160ff16875295820195908201906001016123fb565b6020815260ff82511660208201526000602083015160e06040840152612444610100840182612257565b90506040840151601f1980858403016060860152612462838361229b565b9250606086015191508085840301608086015261247f838361229b565b925060808601519150808584030160a086015261249c8383612320565b925060a08601519150808584030160c0860152506124ba82826123e7565b91505060c08401516124d560e085018264ffffffffff169052565b509392505050565b600080604083850312156124f057600080fd5b82356124fb81611fad565b9150602083013561224c81611fad565b8051611e7281611fad565b60006020828403121561252857600080fd5b81516107e681611fad565b60006020828403121561254557600080fd5b81516107e681611e94565b60006020828403121561256257600080fd5b81516107e681611e52565b60006020828403121561257f57600080fd5b5051919050565b600181811c9082168061259a57607f821691505b6020821081036125ba57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156125d257600080fd5b81516107e681612052565b601f82111561262757600081815260208120601f850160051c810160208610156126045750805b601f850160051c820191505b8181101561262357828155600101612610565b5050505b505050565b81516001600160401b0381111561264557612645611fe4565b612659816126538454612586565b846125dd565b602080601f83116001811461268e57600084156126765750858301515b600019600386901b1c1916600185901b178555612623565b600085815260208120601f198616915b828110156126bd5788860151825594840194600190910190840161269e565b50858210156126db5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006001600160401b0382111561270457612704611fe4565b5060051b60200190565b600082601f83011261271f57600080fd5b8151602061273461272f836126eb565b612022565b82815260059290921b8401810191818101908684111561275357600080fd5b8286015b8481101561277757805161276a81611e52565b8352918301918301612757565b509695505050505050565b600082601f83011261279357600080fd5b815160206127a361272f836126eb565b828152600592831b85018201928282019190878511156127c257600080fd5b8387015b8581101561286c5780516001600160401b03808211156127e65760008081fd5b818a0191508a603f8301126127fb5760008081fd5b86820151604061280d61272f836126eb565b82815291861b8401810191898101908e84111561282a5760008081fd5b948201945b8386101561285a5785519250848316831461284a5760008081fd5b828252948a0194908a019061282f565b895250505094860194505084016127c6565b5090979650505050505050565b600082601f83011261288a57600080fd5b815161289861272f826126eb565b8082825260208201915060208360051b8601019250858311156128ba57600080fd5b602085015b838110156129dc5780516001600160401b038111156128dd57600080fd5b8601603f810188136128ee57600080fd5b60208101516128ff61272f826126eb565b81815260059190911b82016040019060208101908a83111561292057600080fd5b604084015b838110156129c65780516001600160401b0381111561294357600080fd5b8501605f81018d1361295457600080fd5b604081015161296561272f826126eb565b81815260059190911b82016060019060208101908f83111561298657600080fd5b6060840193505b828410156129b15783516129a081611e1c565b82526020938401939091019061298d565b86525050602093840193919091019050612925565b50865250506020938401939190910190506128bf565b5095945050505050565b600082601f8301126129f757600080fd5b81516020612a0761272f836126eb565b82815260059290921b84018101918181019086841115612a2657600080fd5b8286015b84811015612777578051612a3d81611fad565b8352918301918301612a2a565b805164ffffffffff81168114611e7257600080fd5b600060208284031215612a7157600080fd5b81516001600160401b0380821115612a8857600080fd5b9083019060e08286031215612a9c57600080fd5b612aa4611ffa565b612aad8361250b565b8152602083015182811115612ac157600080fd5b612acd8782860161270e565b602083015250604083015182811115612ae557600080fd5b612af187828601612782565b604083015250606083015182811115612b0957600080fd5b612b1587828601612782565b606083015250608083015182811115612b2d57600080fd5b612b3987828601612879565b60808301525060a083015182811115612b5157600080fd5b612b5d878286016129e6565b60a083015250612b6f60c08401612a4a565b60c082015295945050505050565b6001600160a01b03848116825283166020820152606060408201819052600090611e1390830184611ed1565b634e487b7160e01b600052600160045260246000fdfea26469706673582212209c863e773f07e3e8c6a21dd57a99cd641de15444173f2fd29ba959260b11004064736f6c63430008140033",
1120
+ "bytecode": "0x6101006040525f80546001600160a01b031916600117905534801562000023575f80fd5b5060405162006380380380620063808339810160408190526200004691620012d0565b5f7f46cd1d813423aaf613c34c7f348d15b2b5e71215e9145b09467e257ea2805a008054600160481b600160e81b03191633690100000000000000000002179055506001600160a01b0381166080526040513090620000a590620012c2565b6001600160a01b039091168152602001604051809103905ff080158015620000cf573d5f803e3d5ffd5b506001600160a01b031660a052620000e662000119565b6001600160601b031660c052620000fc62000402565b6001600160601b031660e05262000112620007fa565b50620014a5565b5f8060a0516001600160a01b031663598e28926040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200015a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001809190620012ff565b60405163efac97cf60e01b81526004810182905290915073__$94a2c899be079b00d952d0d84fffaa5c34$__9063efac97cf90602401602060405180830381865af4158015620001d2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001f8919062001317565b91506040518060e00160405280836001600160601b0316815260200173__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156200025c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000282919062001317565b6001600160601b03168152602001600160ff90811682525f6020808401829052604080850183905282546001600160a01b03908116606080880191909152825180850184528581526080978801526001600160601b03808b16865260018086529584902089518154968b0151958b0151938b01511515600160c81b0260ff60c81b1994909916600160c01b029390931661ffff60c01b199583166c01000000000000000000000000026001600160c01b031990971693909216929092179490941792909216929092179390931783559284015190820180549184166001600160a01b031992831617905560a08401516002830180549190941691161790915560c08201516003820190620003979082620013dd565b505060a0515f546040516340c10f1960e01b81526001600160a01b03918216600482015260248101859052911691506340c10f19906044015f604051808303815f87803b158015620003e7575f80fd5b505af1158015620003fa573d5f803e3d5ffd5b505050505090565b5f8060a0516001600160a01b0316630559ea4760026040518263ffffffff1660e01b81526004016200043691815260200190565b602060405180830381865afa15801562000452573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004789190620012ff565b60405163efac97cf60e01b81526004810182905290915073__$94a2c899be079b00d952d0d84fffaa5c34$__9063efac97cf90602401602060405180830381865af4158015620004ca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004f0919062001317565b91505f60a0516001600160a01b0316632e85b1f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000532573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620005589190620012ff565b821462000651576200056962000f4d565b73__$94a2c899be079b00d952d0d84fffaa5c34$__63efac97cf60a0516001600160a01b0316632e85b1f36040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005c2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620005e89190620012ff565b6040518263ffffffff1660e01b81526004016200060791815260200190565b602060405180830381865af415801562000623573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000649919062001317565b905062000656565b5060c0515b6040805160e0810182526001600160601b03858116808352848216602080850191825260028587018181525f606088018181523060808a0190815282546001600160a01b0390811660a08c019081528c518089018e5285815260c08d019081529985526001978890529b9093208a5181549851955193511515600160c81b0260ff60c81b1960ff909516600160c01b029490941661ffff60c01b19968c166c01000000000000000000000000026001600160c01b0319909a1691909b16179790971793909316979097179690961784555191830180549286166001600160a01b03199384161790559551958201805496909416951694909417909155519091906003820190620007679082620013dd565b5050305f9081526002602052604080822080546001600160601b0319166001600160601b03881617905560a051915490516340c10f1960e01b81526001600160a01b03918216600482015260248101869052911691506340c10f19906044015f604051808303815f87803b158015620007de575f80fd5b505af1158015620007f1573d5f803e3d5ffd5b50505050505090565b600460208181527f91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a78054600160ff1991821681179092557f4ad5a04d53b5856f318545bb721f67d3f6d0a5a999f25eec7e20eaeb4c47b93380548216831790557fc59312466997bb42aaaf719ece141047820e6b34531e1670dc1852a453648f0f80548216831790557f5c6b02db8b672415ffad906d7ccee10bd53dbad7d0b29e2bc0e50c93d5f3109380548216831790557f140aabff1a85df08546c9a350c79ae18341bde4a2cef5d2fd460885c0128ce2680548216831790557f66b61daf77b854ca6ba000a8d4b340eafcdb71b6583753b4af89fceb54988fff80548216831790557feb3e677499e881fe1bdbc344a49c412138038a9f40883b6dc68f713aab48352380548216831790557f69bc8c08a6b955aec2072ca430bac7123bc3539264a736d1a23621b0f0c62f3180548216831790557fa5022b2bfd144bf9103d80168549b5df7c72ab60bd51bf71a02a08d844853b4a80548216831790557f1bb30a1647f6f6723cb3a88838ce0319afabe51263fc466f2f669a7a24ad88c680548216831790557f9041ee6632bd2142b9cc58f348e0761559f8d964fe48ac6d87dc2b689213e3bb80548216831790557f2e174c10e159ea99b867ce3205125c24a42d128804e4070ed6fcc8cc98166aa080548216831790555f8381527f96648185182926add89ee4d5c354d3f3e8383a8966d4d875bd8575e13aa27a968054909216909217905560a05160408051630559ea4760e01b81526002958101959095525191936001600160a01b0390911692630559ea47926024808401938290030181865afa15801562000a70573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000a969190620012ff565b905060a0516001600160a01b0316632e85b1f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000ad7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000afd9190620012ff565b810362000b595760025f527f89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a6020527fc3872fadc793fb0bb284ae601a7003728d4f91ef813a9c52151175538e74d8e9805460ff191660011790555b7f1d7f3ebad127f83afc6959705ce470ae52e5f79897ae3b7e721e0b1308897459805460ff1916600190811790915560065f90815260056020527f069400f22b28c6c362558d92f66163cec5671cba50b61abd2eecfcd0eaeac5189062000bbe600290565b60ff16815260208101919091526040015f908120805460ff19169215159290921790915560019060059062000bf1600a90565b60ff1660ff1681526020019081526020015f205f62000c15620012a960201b60201c565b60ff16815260208101919091526040015f908120805460ff19169215159290921790915560019060059062000c48600c90565b60ff1660ff1681526020019081526020015f205f62000c6c620012ae60201b60201c565b60ff16815260208101919091526040015f908120805460ff19169215159290921790915560019060059062000c9f600e90565b60ff1660ff1681526020019081526020015f205f62000cc3620012ae60201b60201c565b60ff16815260208101919091526040015f908120805460ff19169215159290921790915560019060059062000cf6600d90565b60ff1660ff1681526020019081526020015f205f62000d1a620012ae60201b60201c565b60ff16815260208101919091526040015f908120805460ff19169215159290921790915560019060059062000d4d600f90565b60ff1660ff1681526020019081526020015f205f62000d71620012ae60201b60201c565b60ff16815260208101919091526040015f908120805460ff19169215159290921790915560019060069062000da4601c90565b60ff1660ff1681526020019081526020015f205f62000dc8620012bd60201b60201c565b60ff16815260208101919091526040015f908120805460ff19169215159290921790915560019060069062000dfb601590565b60ff1660ff1681526020019081526020015f205f62000e1f620012b360201b60201c565b60ff16815260208101919091526040015f908120805460ff19169215159290921790915560019060069062000e52601e90565b60ff1660ff1681526020019081526020015f205f62000e76620012b860201b60201c565b60ff16815260208101919091526040015f908120805460ff19169215159290921790915560019060069062000ea9602090565b60ff1660ff1681526020019081526020015f205f62000ecd62000f4860201b60201c565b60ff16815260208101919091526040015f908120805460ff19169215159290921790915560019060069062000f00602090565b60ff1660ff1681526020019081526020015f205f62000f24620012ae60201b60201c565b60ff16815260208101919091526040015f20805460ff191691151591909117905550565b600190565b5f60a0516001600160a01b0316632e85b1f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000f8d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000fb39190620012ff565b60405163efac97cf60e01b8152600481018290529091505f9073__$94a2c899be079b00d952d0d84fffaa5c34$__9063efac97cf90602401602060405180830381865af415801562001007573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200102d919062001317565b90506040518060e00160405280826001600160601b0316815260200173__$94a2c899be079b00d952d0d84fffaa5c34$__63efac97cf60a0516001600160a01b031663598e28926040518163ffffffff1660e01b8152600401602060405180830381865afa158015620010a2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620010c89190620012ff565b6040518263ffffffff1660e01b8152600401620010e791815260200190565b602060405180830381865af415801562001103573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001129919062001317565b6001600160601b03168152602001600260ff90811682525f6020808401829052604080850183905282546001600160a01b03908116606080880191909152825180850184528581526080978801526001600160601b03808a16865260018086529584902089518154968b0151958b0151938b01511515600160c81b0260ff60c81b1994909916600160c01b029390931661ffff60c01b199583166c01000000000000000000000000026001600160c01b031990971693909216929092179490941792909216929092179390931783559284015190820180549184166001600160a01b031992831617905560a08401516002830180549190941691161790915560c082015160038201906200123e9082620013dd565b505060a0515f546040516340c10f1960e01b81526001600160a01b03918216600482015260248101869052911691506340c10f19906044015f604051808303815f87803b1580156200128e575f80fd5b505af1158015620012a1573d5f803e3d5ffd5b505050505050565b600290565b600a90565b600c90565b600f90565b600e90565b611e10806200457083390190565b5f60208284031215620012e1575f80fd5b81516001600160a01b0381168114620012f8575f80fd5b9392505050565b5f6020828403121562001310575f80fd5b5051919050565b5f6020828403121562001328575f80fd5b81516001600160601b0381168114620012f8575f80fd5b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200136857607f821691505b6020821081036200138757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620013d857805f5260205f20601f840160051c81016020851015620013b45750805b601f840160051c820191505b81811015620013d5575f8155600101620013c0565b50505b505050565b81516001600160401b03811115620013f957620013f96200133f565b62001411816200140a845462001353565b846200138d565b602080601f83116001811462001447575f84156200142f5750858301515b5f19600386901b1c1916600185901b178555620012a1565b5f85815260208120601f198616915b82811015620014775788860151825594840194600190910190840162001456565b50858210156200149557878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e05161303c620015345f395f81816102d0015281816104490152611d7b01525f81816103f0015261069301525f8181610352015281816104720152818161085f015281816109a601528181610a840152818161178601528181611b4d01528181611c7f0152611f0201525f8181610269015281816103c7015261149c015261303c5ff3fe608060405234801561000f575f80fd5b5060043610610260575f3560e01c8063a48f42e01161014b578063d1982d88116100bf578063e2b178a011610084578063e2b178a01461064a578063e74d052f14610652578063f40d7c3014610665578063f7dd05ba1461066d578063fee11aaf14610680578063fff74f6c14610691575f80fd5b8063d1982d8814610598578063d2213b5b146105ab578063d272ac1e146105cb578063d39e6043146105fc578063e285c9c414610638575f80fd5b8063b5c51acf11610110578063b5c51acf14610518578063b5ee0ded14610532578063c0c53b8b14610545578063c3c5a5471461055a578063c59d394b1461056d578063caed989714610580575f80fd5b8063a48f42e0146104c4578063a5df9e4e146104d7578063a7050a56146104ea578063ac9848ee146104fd578063ae8dfb7914610510575f80fd5b80631a848cfb116101e25780633fe9300e116101a75780633fe9300e14610425578063644c45e0146104475780637e2cd82d1461046d578063839f700c14610494578063893d20e81461049c5780638b09a5f0146104a4575f80fd5b80631a848cfb1461039c5780632b91e0a9146103b25780632de837e0146103c557806331e7d702146103eb57806338bb429a14610412575f80fd5b80630e9ed68b116102285780630e9ed68b1461032c57806311edceaa1461033d578063120726c31461035057806314afd79e1461037657806317dc5e2a14610389575f80fd5b806301bc45c91461026457806301ffc9a7146102a857806306851fba146102cb5780630e41142e1461030a5780630e6d1de914610324575b5f80fd5b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6102bb6102b6366004611fc7565b6106b7565b604051901515815260200161029f565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160601b03909116815260200161029f565b6103126106fb565b60405160ff909116815260200161029f565b61031261076b565b6008546001600160a01b031661028b565b6102bb61034b366004612000565b6107b2565b7f000000000000000000000000000000000000000000000000000000000000000061028b565b61028b61038436600461203a565b610825565b6102bb61039736600461203a565b61094c565b6103a46109a3565b60405190815260200161029f565b6102bb6103c036600461203a565b610a24565b7f000000000000000000000000000000000000000000000000000000000000000061028b565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b61028b610420366004612074565b610a64565b61043a60405180602001604052805f81525081565b60405161029f91906120dc565b7f00000000000000000000000000000000000000000000000000000000000000006102f2565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b6103a4600381565b61028b610ad7565b6104b76104b236600461203a565b610ae1565b60405161029f91906120ee565b6104b76104d2366004612074565b610c44565b6102f26104e5366004612339565b610d14565b6102f26104f836600461236a565b610e99565b6007546102f2906001600160601b031681565b6103a4600281565b60075461028b90600160601b90046001600160a01b031681565b60085461028b906001600160a01b031681565b6105586105533660046123c9565b611051565b005b6102bb61056836600461203a565b611204565b60095461028b906001600160a01b031681565b600754600160601b90046001600160a01b031661028b565b6102f26105a6366004612339565b611274565b6105be6105b9366004612000565b6113b6565b60405161029f919061265c565b6102f26105d936600461203a565b6001600160a01b03165f908152600260205260409020546001600160601b031690565b61028b61060a36600461279f565b60ff9081165f908152600360209081526040808320949093168252929092529020546001600160a01b031690565b5f5461028b906001600160a01b031681565b61028b611499565b6102bb610660366004612074565b61151a565b610312611573565b61028b61067b366004612000565b6115ba565b6009546001600160a01b031661028b565b7f00000000000000000000000000000000000000000000000000000000000000006102f2565b5f6001600160e01b031982166301ffc9a760e01b14806106e757506001600160e01b0319821663e607072160e01b145b156106f457506001919050565b505f919050565b600954604080516307208a1760e11b815290515f926001600160a01b031691630e41142e9160048083019260209291908290030181865afa158015610742573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076691906127e1565b905090565b60095460408051630e6d1de960e01b815290515f926001600160a01b031691630e6d1de99160048083019260209291908290030181865afa158015610742573d5f803e3d5ffd5b6009546040516308f6e75560e11b815260ff831660048201525f916001600160a01b0316906311edceaa90602401602060405180830381865afa1580156107fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061081f91906127fc565b92915050565b6001600160a01b038181165f9081526002602052604080822054905163046e44af60e11b81526001600160601b03909116600482015290917f00000000000000000000000000000000000000000000000000000000000000001690636352211e9073__$94a2c899be079b00d952d0d84fffaa5c34$__906308dc895e906024015b602060405180830381865af41580156108c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e59190612817565b6040516001600160e01b031960e084901b1681526001600160601b0390911660048201526024015b602060405180830381865afa158015610928573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061081f9190612832565b6001600160a01b0381165f908152600260209081526040808320546001600160601b039081168452600190925280832054600160601b900490911680835290822054600160c01b900460ff16600a145b9392505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a00573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610766919061284d565b6001600160a01b0381165f908152600260209081526040808320546001600160601b031683526001909152812054600160c01b900460ff1660091461081f565b60405163046e44af60e11b81526001600160601b03821660048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e9073__$94a2c899be079b00d952d0d84fffaa5c34$__906308dc895e906024016108a6565b5f61076630610825565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091526001600160a01b038083165f908152600260208181526040808420546001600160601b039081168552600180845294829020825160e08101845281548084168252600160601b81049093169481019490945260ff600160c01b8304811693850193909352600160c81b9091049091161515606083015292830154841660808201529082015490921660a083015260038101805460c084019190610bbd90612864565b80601f0160208091040260200160405190810160405280929190818152602001828054610be990612864565b8015610c345780601f10610c0b57610100808354040283529160200191610c34565b820191905f5260205f20905b815481529060010190602001808311610c1757829003601f168201915b5050505050815250509050919050565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091526001600160601b038083165f90815260016020818152604092839020835160e08101855281548087168252600160601b81049096169281019290925260ff600160c01b8604811694830194909452600160c81b909404909216151560608301528201546001600160a01b03908116608083015260028301541660a082015260038201805491929160c084019190610bbd90612864565b600954604051639ef6ddc960e01b81523360048201525f916001600160a01b031690639ef6ddc990602401602060405180830381865afa158015610d5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d7e91906127fc565b610d9b57604051639404710360e01b815260040160405180910390fd5b6040828101516020808501516001600160601b03165f908152600190915291909120546080840151600160c01b90910460ff16906001600160a01b0316610e375760ff8083165f908152600660209081526040808320858516845290915281205490911615159003610e325760405163347a1f9760e21b815260ff8084166004830152821660248201526044015b60405180910390fd5b610e88565b60ff8083165f908152600560209081526040808320858516845290915281205490911615159003610e885760405163347a1f9760e21b815260ff808416600483015282166024820152604401610e29565b610e91846115ed565b949350505050565b6009545f906001600160a01b03163314610ec55760405162783d2b60e21b815260040160405180910390fd5b608084015160405163037c8cb160e51b815260ff8416600482015273__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636f91962090602401602060405180830381865af4158015610f1a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3e91906127fc565b15610f675760405163b580d22160e01b81526001600160a01b0382166004820152602401610e29565b60ff8085165f908152600360209081526040808320938716835292905220546001600160a01b031615610fc957604051632a16d08d60e01b81526001600160a01b038216600482015260ff808616602483015284166044820152606401610e29565b60ff8481165f90815260036020908152604080832093871683529290522080546001600160a01b0319166001600160a01b038316179055611009856115ed565b6040805160ff8088168252861660208201529193507fc4761a4fab07f2d3f242a458f91e31e4ea6128fe5edc599e3436f5f66317e0da910160405180910390a1509392505050565b5f7f46cd1d813423aaf613c34c7f348d15b2b5e71215e9145b09467e257ea2805a008054909150690100000000000000000090046001600160a01b031633146110ad5760405163ce4d158160e01b815260040160405180910390fd5b805460ff600160401b82041615906001600160401b03165f811580156110d05750825b90505f826001600160401b031660011480156110eb5750303b155b9050811580156110f9575080155b156111175760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561114157845460ff60401b1916600160401b1785555b600980546001600160a01b03808b166001600160a01b031992831617909255600780548a8416600160601b026001600160601b039091161790556008805492891692909116919091179055611194611be6565b600780546001600160601b0319166001600160601b039290921691909117905583156111fa57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b6001600160a01b0381165f908152600260205260408082205490516330b8415f60e01b81526001600160601b03909116600482015273__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f906024015b602060405180830381865af41580156107fb573d5f803e3d5ffd5b600954604051639ef6ddc960e01b81523360048201525f916001600160a01b031690639ef6ddc990602401602060405180830381865afa1580156112ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112de91906127fc565b6112fb57604051639404710360e01b815260040160405180910390fd5b6040808301516020808501516001600160601b03165f908152600182528381205460ff80851683526004909352939020549192600160c01b90048116911615611357576040516368f27c4360e11b815260040160405180910390fd5b60ff81166001148061136c575060ff81166002145b8061137a575060ff81166009145b156113a55760405163347a1f9760e21b815260ff808416600483015282166024820152604401610e29565b6113ae846115ed565b505050919050565b61142a6040518061018001604052805f60ff1681526020015f801916815260200160608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081526020015f64ffffffffff1681526020015f64ffffffffff1681525090565b60095460405163d2213b5b60e01b815260ff841660048201526001600160a01b039091169063d2213b5b906024015f60405180830381865afa158015611472573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261081f9190810190612d16565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114f6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107669190612832565b6001600160601b0381165f9081526001602052604080822054905163b2466acf60e01b8152600160c01b90910460ff16600482015273__$0d958e68cba84670b8f4a3f2f2686b1c6b$__9063b2466acf90602401611259565b60095460408051630f40d7c360e41b815290515f926001600160a01b03169163f40d7c309160048083019260209291908290030181865afa158015610742573d5f803e3d5ffd5b6009546040516319d1478b60e01b815260ff831660048201525f916001600160a01b0316906319d1478b9060240161090d565b60408082015160608084015160808086015160a0808801516020808a01516001600160601b038082165f90815260018085528c82208d5160e081018f5281548086168252600160601b81049095169681019690965260ff600160c01b850481169e87019e909e52600160c81b909304909c16151599840199909952998a01546001600160a01b039081169683019690965260028a0154909516928101929092526003880180549698959693959194938993929160c08401916116ae90612864565b80601f01602080910402602001604051908101604052809291908181526020018280546116da90612864565b80156117255780601f106116fc57610100808354040283529160200191611725565b820191905f5260205f20905b81548152906001019060200180831161170857829003601f168201915b50505091909252505050604081015160808201519192509060ff881660201461176f576001600160a01b03811661176f57604051630bdad98960e11b815260040160405180910390fd5b5f611781888a89876060015186611f61565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663caa0f92a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117e0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611804919061284d565b60405163efac97cf60e01b81526004810182905290915073__$94a2c899be079b00d952d0d84fffaa5c34$__9063efac97cf90602401602060405180830381865af4158015611855573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118799190612817565b9a508a8c5f01906001600160601b031690816001600160601b0316815250508b60015f8d6001600160601b03166001600160601b031681526020019081526020015f205f820151815f015f6101000a8154816001600160601b0302191690836001600160601b031602179055506020820151815f01600c6101000a8154816001600160601b0302191690836001600160601b031602179055506040820151815f0160186101000a81548160ff021916908360ff1602179055506060820151815f0160196101000a81548160ff0219169083151502179055506080820151816001015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a0820151816002015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060c08201518160030190816119be9190612f08565b5050506001600160a01b03881615611abe576001600160a01b0388165f90815260026020526040908190205490516330b8415f60e01b81526001600160601b03909116600482015273__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015611a40573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a6491906127fc565b15611a8d57604051633fa3dceb60e21b81526001600160a01b0389166004820152602401610e29565b6001600160a01b0388165f90815260026020526040902080546001600160601b0319166001600160601b038d161790555b604080516001600160601b038d811682528816602082015260ff8c16818301528a151560608201526001600160a01b038a81166080830152891660a082015290517f378868470b980e00aaf3e534a055e641e5fe9dfd8da44b4250edc6ad96e983879181900360c00190a1604080516020810182525f8082529151631109bad360e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163221375a691611b85918c91889190600401612fc7565b6020604051808303815f875af1158015611ba1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bc5919061284d565b9050818114611bd657611bd6612ff2565b5050505050505050505050919050565b5f8060085f9054906101000a90046001600160a01b03166001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c38573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c5c9190612832565b604051630559ea4760e01b8152600360048201529091505f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630559ea4790602401602060405180830381865afa158015611cc4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ce8919061284d565b60405163efac97cf60e01b81526004810182905290915073__$94a2c899be079b00d952d0d84fffaa5c34$__9063efac97cf90602401602060405180830381865af4158015611d39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d5d9190612817565b92506040518060e00160405280846001600160601b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160601b03168152602001611db0600390565b60ff90811682525f60208084018290526008546001600160a01b03908116604080870191909152888216606080880191909152815180850183528581526080978801526001600160601b03808c16865260018086529583902089518154968b0151948b0151938b01511515600160c81b0260ff60c81b1994909916600160c01b029390931661ffff60c01b19948316600160601b026001600160c01b031990971693909216929092179490941791909116929092179390931781559284015190830180549183166001600160a01b031992831617905560a084015160028401805491909316911617905560c08201516003820190611eae9082612f08565b50506008546001600160a01b039081165f908152600260205260409081902080546001600160601b0319166001600160601b038816179055516340c10f1960e01b81528482166004820152602481018490527f000000000000000000000000000000000000000000000000000000000000000090911691506340c10f19906044015f604051808303815f87803b158015611f46575f80fd5b505af1158015611f58573d5f803e3d5ffd5b50505050505090565b5f60ff8516602003611f7457505f611fa6565b6001600160a01b038416611f96578215611f8f575080611fa6565b505f611fa6565b8515611fa3575082611fa6565b505f5b95945050505050565b6001600160e01b031981168114611fc4575f80fd5b50565b5f60208284031215611fd7575f80fd5b813561099c81611faf565b60ff81168114611fc4575f80fd5b8035611ffb81611fe2565b919050565b5f60208284031215612010575f80fd5b813561099c81611fe2565b6001600160a01b0381168114611fc4575f80fd5b8035611ffb8161201b565b5f6020828403121561204a575f80fd5b813561099c8161201b565b6001600160601b0381168114611fc4575f80fd5b8035611ffb81612055565b5f60208284031215612084575f80fd5b813561099c81612055565b5f5b838110156120a9578181015183820152602001612091565b50505f910152565b5f81518084526120c881602086016020860161208f565b601f01601f19169290920160200192915050565b602081525f61099c60208301846120b1565b602081525f6001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a083015161215660c08401826001600160a01b03169052565b5060c083015160e080840152610e916101008401826120b1565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b03811182821017156121a6576121a6612170565b60405290565b60405161018081016001600160401b03811182821017156121a6576121a6612170565b604051601f8201601f191681016001600160401b03811182821017156121f7576121f7612170565b604052919050565b8015158114611fc4575f80fd5b8035611ffb816121ff565b5f6001600160401b0382111561222f5761222f612170565b50601f01601f191660200190565b5f82601f83011261224c575f80fd5b813561225f61225a82612217565b6121cf565b818152846020838601011115612273575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60e0828403121561229f575f80fd5b6122a7612184565b90506122b282612069565b81526122c060208301612069565b60208201526122d160408301611ff0565b60408201526122e26060830161220c565b60608201526122f36080830161202f565b608082015261230460a0830161202f565b60a082015260c08201356001600160401b03811115612321575f80fd5b61232d8482850161223d565b60c08301525092915050565b5f60208284031215612349575f80fd5b81356001600160401b0381111561235e575f80fd5b610e918482850161228f565b5f805f6060848603121561237c575f80fd5b83356001600160401b03811115612391575f80fd5b61239d8682870161228f565b93505060208401356123ae81611fe2565b915060408401356123be81611fe2565b809150509250925092565b5f805f606084860312156123db575f80fd5b83356123e68161201b565b925060208401356123f68161201b565b915060408401356123be8161201b565b5f815180845260208085019450602084015f5b8381101561243e5781516001600160a01b031687529582019590820190600101612419565b509495945050505050565b5f8282518085526020808601955060208260051b840101602086015f5b8481101561249457601f198684030189526124828383516120b1565b98840198925090830190600101612466565b5090979650505050505050565b5f82825180855260208086019550808260051b8401018186015f5b8481101561249457858303601f190189528151805180855290850190858501905f5b818110156125035783516001600160401b0316835292870192918701916001016124de565b505099850199935050908301906001016124bc565b5f8282518085526020808601955060208260051b840101602086015f5b8481101561249457601f19868403018952612551838351612449565b98840198925090830190600101612535565b5f828251808552602080860195506005818360051b8501018287015f5b8581101561261c57601f1987840381018b5282518051808652908701908786019080881b870189015f5b82811015612605578882038601845284518051808452908c01908c8401905f5b818110156125f05783516001600160e01b0319168352928e0192918e01916001016125ca565b5050958c0195948c01949250506001016125aa565b509d89019d96505050928601925050600101612580565b509098975050505050505050565b5f815180845260208085019450602084015f5b8381101561243e57815160ff168752958201959082019060010161263d565b6020815261267060208201835160ff169052565b602082015160408201525f60408301516101808060608501526126976101a0850183612406565b91506060850151601f19808685030160808701526126b58483612449565b935060808701519150808685030160a08701526126d284836124a1565b935060a08701519150808685030160c08701526126ef8483612518565b935060c08701519150808685030160e087015261270c84836124a1565b935060e0870151915061010081878603018188015261272b8584612518565b94508088015192505061012081878603018188015261274a8584612563565b945080880151925050610140818786030181880152612769858461262a565b945080880151925050506101606127888187018364ffffffffff169052565b9095015164ffffffffff1693019290925250919050565b5f80604083850312156127b0575f80fd5b82356127bb81611fe2565b915060208301356127cb81611fe2565b809150509250929050565b8051611ffb81611fe2565b5f602082840312156127f1575f80fd5b815161099c81611fe2565b5f6020828403121561280c575f80fd5b815161099c816121ff565b5f60208284031215612827575f80fd5b815161099c81612055565b5f60208284031215612842575f80fd5b815161099c8161201b565b5f6020828403121561285d575f80fd5b5051919050565b600181811c9082168061287857607f821691505b60208210810361289657634e487b7160e01b5f52602260045260245ffd5b50919050565b5f6001600160401b038211156128b4576128b4612170565b5060051b60200190565b5f82601f8301126128cd575f80fd5b815160206128dd61225a8361289c565b8083825260208201915060208460051b8701019350868411156128fe575f80fd5b602086015b848110156129235780516129168161201b565b8352918301918301612903565b509695505050505050565b5f82601f83011261293d575f80fd5b8151602061294d61225a8361289c565b82815260059290921b8401810191818101908684111561296b575f80fd5b8286015b848110156129235780516001600160401b0381111561298c575f80fd5b8701603f8101891361299c575f80fd5b8481015160406129ae61225a83612217565b8281528b828486010111156129c1575f80fd5b6129d08389830184870161208f565b865250505091830191830161296f565b5f82601f8301126129ef575f80fd5b815160206129ff61225a8361289c565b828152600592831b8501820192828201919087851115612a1d575f80fd5b8387015b858110156124945780516001600160401b0380821115612a3f575f80fd5b818a0191508a603f830112612a52575f80fd5b868201516040612a6461225a8361289c565b82815291861b8401810191898101908e841115612a7f575f80fd5b948201945b83861015612aad57855192508483168314612a9d575f80fd5b828252948a0194908a0190612a84565b89525050509486019450508401612a21565b5f82601f830112612ace575f80fd5b81516020612ade61225a8361289c565b82815260059290921b84018101918181019086841115612afc575f80fd5b8286015b848110156129235780516001600160401b03811115612b1d575f80fd5b612b2b8986838b010161292e565b845250918301918301612b00565b5f82601f830112612b48575f80fd5b8151612b5661225a8261289c565b8082825260208201915060208360051b860101925085831115612b77575f80fd5b602085015b83811015612c935780516001600160401b03811115612b99575f80fd5b8601603f81018813612ba9575f80fd5b6020810151612bba61225a8261289c565b81815260059190911b82016040019060208101908a831115612bda575f80fd5b604084015b83811015612c7d5780516001600160401b03811115612bfc575f80fd5b8501605f81018d13612c0c575f80fd5b6040810151612c1d61225a8261289c565b81815260059190911b82016060019060208101908f831115612c3d575f80fd5b6060840193505b82841015612c68578351612c5781611faf565b825260209384019390910190612c44565b86525050602093840193919091019050612bdf565b5086525050602093840193919091019050612b7c565b5095945050505050565b5f82601f830112612cac575f80fd5b81516020612cbc61225a8361289c565b8083825260208201915060208460051b870101935086841115612cdd575f80fd5b602086015b84811015612923578051612cf581611fe2565b8352918301918301612ce2565b805164ffffffffff81168114611ffb575f80fd5b5f60208284031215612d26575f80fd5b81516001600160401b0380821115612d3c575f80fd5b908301906101808286031215612d50575f80fd5b612d586121ac565b612d61836127d6565b815260208301516020820152604083015182811115612d7e575f80fd5b612d8a878286016128be565b604083015250606083015182811115612da1575f80fd5b612dad8782860161292e565b606083015250608083015182811115612dc4575f80fd5b612dd0878286016129e0565b60808301525060a083015182811115612de7575f80fd5b612df387828601612abf565b60a08301525060c083015182811115612e0a575f80fd5b612e16878286016129e0565b60c08301525060e083015182811115612e2d575f80fd5b612e3987828601612abf565b60e0830152506101008084015183811115612e52575f80fd5b612e5e88828701612b39565b8284015250506101208084015183811115612e77575f80fd5b612e8388828701612c9d565b8284015250506101409150612e99828401612d02565b828201526101609150612ead828401612d02565b91810191909152949350505050565b601f821115612f0357805f5260205f20601f840160051c81016020851015612ee15750805b601f840160051c820191505b81811015612f00575f8155600101612eed565b50505b505050565b81516001600160401b03811115612f2157612f21612170565b612f3581612f2f8454612864565b84612ebc565b602080601f831160018114612f68575f8415612f515750858301515b5f19600386901b1c1916600185901b178555612fbf565b5f85815260208120601f198616915b82811015612f9657888601518255948401946001909101908401612f77565b5085821015612fb357878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b6001600160a01b038481168252831660208201526060604082018190525f90611fa6908301846120b1565b634e487b7160e01b5f52600160045260245ffdfea2646970667358221220634fced856460a92cdb50e661ed10acc6bb66c818dd1365d32d25fc881bce42a64736f6c63430008180033608060405234801562000010575f80fd5b5060405162001e1038038062001e1083398101604081905262000033916200012a565b60405180606001604052806024815260200162001dec6024913960408051808201909152600681526511125413919560d21b60208201525f620000778382620001f7565b506001620000868282620001f7565b5050506001600160a01b038116620000b157604051630ae1413f60e11b815260040160405180910390fd5b600c80546001600160a01b0319166001600160a01b03831617905546600d8190555f600e555b80156200010a57600e8054905f620000ef83620002d7565b90915550620001029050600a82620002f2565b9050620000d7565b600e546200011a90600a6200040d565b600f55505060046010556200041a565b5f602082840312156200013b575f80fd5b81516001600160a01b038116811462000152575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200018257607f821691505b602082108103620001a157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620001f257805f5260205f20601f840160051c81016020851015620001ce5750805b601f840160051c820191505b81811015620001ef575f8155600101620001da565b50505b505050565b81516001600160401b0381111562000213576200021362000159565b6200022b816200022484546200016d565b84620001a7565b602080601f83116001811462000261575f8415620002495750858301515b5f19600386901b1c1916600185901b178555620002bb565b5f85815260208120601f198616915b82811015620002915788860151825594840194600190910190840162000270565b5085821015620002af57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b5f60018201620002eb57620002eb620002c3565b5060010190565b5f826200030d57634e487b7160e01b5f52601260045260245ffd5b500490565b600181815b808511156200035257815f1904821115620003365762000336620002c3565b808516156200034457918102915b93841c939080029062000317565b509250929050565b5f826200036a5750600162000407565b816200037857505f62000407565b81600181146200039157600281146200039c57620003bc565b600191505062000407565b60ff841115620003b057620003b0620002c3565b50506001821b62000407565b5060208310610133831016604e8410600b8410161715620003e1575081810a62000407565b620003ed838362000312565b805f1904821115620004035762000403620002c3565b0290505b92915050565b5f6200015283836200035a565b6119c480620004285f395ff3fe608060405234801561000f575f80fd5b50600436106101d1575f3560e01c80634f6ccce7116100fe578063a2309ff81161009e578063caa0f92a1161006e578063caa0f92a146103ee578063e985e9c5146103f6578063f21de1e814610409578063f76f8d781461041a575f80fd5b8063a2309ff8146103b8578063a3f4df7e146103c0578063b88d4fde146103c8578063c87b56dd146103db575f80fd5b806370a08231116100d957806370a0823114610377578063862440e21461038a57806395d89b411461039d578063a22cb465146103a5575f80fd5b80634f6ccce714610348578063598e28921461035b5780636352211e14610364575f80fd5b806323b872dd1161017457806340c10f191161014457806340c10f19146102e557806342842e0e146102f857806342966c681461030b5780634f558e791461031e575f80fd5b806323b872dd1461028e5780632e85b1f3146102a15780632f745c59146102aa578063342ec443146102bd575f80fd5b8063081812fc116101af578063081812fc14610233578063095ea7b31461025e57806318160ddd14610273578063221375a61461027b575f80fd5b806301ffc9a7146101d55780630559ea47146101fd57806306fdde031461021e575b5f80fd5b6101e86101e3366004611406565b61043f565b60405190151581526020015b60405180910390f35b61021061020b366004611421565b610469565b6040519081526020016101f4565b61022661049d565b6040516101f4919061147b565b610246610241366004611421565b61052c565b6040516001600160a01b0390911681526020016101f4565b61027161026c3660046114a8565b610553565b005b600854610210565b610210610289366004611575565b610562565b61027161029c3660046115cf565b610688565b61021061083581565b6102106102b83660046114a8565b61072a565b6102466102cb366004611421565b5f908152600a60205260409020546001600160a01b031690565b6102716102f33660046114a8565b61078d565b6102716103063660046115cf565b6107d8565b610271610319366004611421565b6107f2565b6101e861032c366004611421565b5f908152600260205260409020546001600160a01b0316151590565b610210610356366004611421565b61084b565b61021061044d81565b610246610372366004611421565b6108a0565b610210610385366004611608565b6108aa565b610271610398366004611621565b6108ef565b610226610997565b6102716103b3366004611665565b6109a6565b601154610210565b6102266109b1565b6102716103d636600461169e565b6109cd565b6102266103e9366004611421565b6109ea565b610210610a91565b6101e8610404366004611715565b610aa2565b600c546001600160a01b0316610246565b6102266040518060400160405280600681526020016511125413919560d21b81525081565b5f6001600160e01b0319821663780e9d6360e01b1480610463575061046382610acf565b92915050565b5f600e54600d54600f548461047e919061175a565b6104889190611771565b61049390606461175a565b6104639190611771565b60605f80546104ab90611784565b80601f01602080910402602001604051908101604052809291908181526020018280546104d790611784565b80156105225780601f106104f957610100808354040283529160200191610522565b820191905f5260205f20905b81548152906001019060200180831161050557829003601f168201915b5050505050905090565b5f61053682610b1e565b505f828152600460205260409020546001600160a01b0316610463565b61055e828233610b56565b5050565b600c545f906001600160a01b03163314610596576040516399c6cd7160e01b81523360048201526024015b60405180910390fd5b61059e610b63565b90506001600160a01b038316156105d6575f818152600a6020526040902080546001600160a01b0319166001600160a01b0385161790555b8151156105f6575f818152600b602052604090206105f48382611800565b505b60118054905f610605836118c0565b91905055506106148482610b88565b6001600160a01b038316156106815760405163bb1e0e5960e01b81526001600160a01b0385811660048301526024820183905284169063bb1e0e59906044015f604051808303815f87803b15801561066a575f80fd5b505af115801561067c573d5f803e3d5ffd5b505050505b9392505050565b610693838383610ba1565b5f818152600a60205260409020546001600160a01b031615610725575f818152600a6020526040908190205490516373fbfdc360e11b81526001600160a01b0385811660048301528481166024830152604482018490529091169063e7f7fb86906064015f604051808303815f87803b15801561070e575f80fd5b505af1158015610720573d5f803e3d5ffd5b505050505b505050565b5f610734836108aa565b82106107655760405163295f44f760e21b81526001600160a01b03841660048201526024810183905260440161058d565b506001600160a01b03919091165f908152600660209081526040808320938352929052205490565b600c546001600160a01b031633146107ba576040516399c6cd7160e01b815233600482015260240161058d565b60118054905f6107c9836118c0565b919050555061055e8282610b88565b61072583838360405180602001604052805f8152506109cd565b600c546001600160a01b0316331461081f576040516399c6cd7160e01b815233600482015260240161058d565b61082881610b1e565b5061083281610c24565b5f818152600b60205260408120610848916113a7565b50565b5f61085560085490565b821061087d5760405163295f44f760e21b81525f60048201526024810183905260440161058d565b60088281548110610890576108906118d8565b905f5260205f2001549050919050565b5f61046382610b1e565b5f6001600160a01b0382166108d4576040516322718ad960e21b81525f600482015260240161058d565b506001600160a01b03165f9081526003602052604090205490565b600c546001600160a01b0316331461091c576040516399c6cd7160e01b815233600482015260240161058d565b80515f0361093d57604051638e45096160e01b815260040160405180910390fd5b5f828152600b60205260408120805461095590611784565b905011156109765760405163303822c760e21b815260040160405180910390fd5b61097f82610b1e565b505f828152600b602052604090206107258282611800565b6060600180546104ab90611784565b61055e338383610c5c565b60405180606001604052806024815260200161196b6024913981565b6109d8848484610688565b6109e484848484610cfa565b50505050565b60606109f582610b1e565b505f828152600b602052604090208054610a0e90611784565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3a90611784565b8015610a855780601f10610a5c57610100808354040283529160200191610a85565b820191905f5260205f20905b815481529060010190602001808311610a6857829003601f168201915b50505050509050919050565b5f610a9d601054610469565b905090565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f6001600160e01b031982166380ac58cd60e01b1480610aff57506001600160e01b03198216635b5e139f60e01b145b8061046357506301ffc9a760e01b6001600160e01b0319831614610463565b5f818152600260205260408120546001600160a01b03168061046357604051637e27328960e01b81526004810184905260240161058d565b6107258383836001610e20565b5f610b6f601054610469565b601080549192505f610b80836118c0565b919050555090565b61055e828260405180602001604052805f815250610f24565b6001600160a01b038216610bca57604051633250574960e11b81525f600482015260240161058d565b5f610bd6838333610f3a565b9050836001600160a01b0316816001600160a01b0316146109e4576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161058d565b5f610c305f835f610f3a565b90506001600160a01b03811661055e57604051637e27328960e01b81526004810183905260240161058d565b6001600160a01b038216610c8e57604051630b61174360e31b81526001600160a01b038316600482015260240161058d565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b156109e457604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610d3c9033908890879087906004016118ec565b6020604051808303815f875af1925050508015610d76575060408051601f3d908101601f19168201909252610d7391810190611928565b60015b610ddd573d808015610da3576040519150601f19603f3d011682016040523d82523d5f602084013e610da8565b606091505b5080515f03610dd557604051633250574960e11b81526001600160a01b038516600482015260240161058d565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610e1957604051633250574960e11b81526001600160a01b038516600482015260240161058d565b5050505050565b8080610e3457506001600160a01b03821615155b15610ef5575f610e4384610b1e565b90506001600160a01b03831615801590610e6f5750826001600160a01b0316816001600160a01b031614155b8015610e825750610e808184610aa2565b155b15610eab5760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161058d565b8115610ef35783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610f2e838361100d565b6107255f848484610cfa565b5f80610f4785858561106e565b90506001600160a01b038116610fa357610f9e84600880545f838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b610fc6565b846001600160a01b0316816001600160a01b031614610fc657610fc68185611160565b6001600160a01b038516610fe257610fdd846111ed565b611005565b846001600160a01b0316816001600160a01b031614611005576110058585611294565b949350505050565b6001600160a01b03821661103657604051633250574960e11b81525f600482015260240161058d565b5f61104283835f610f3a565b90506001600160a01b03811615610725576040516339e3563760e11b81525f600482015260240161058d565b5f828152600260205260408120546001600160a01b039081169083161561109a5761109a8184866112e2565b6001600160a01b038116156110d4576110b55f855f80610e20565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615611102576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b5f61116a836108aa565b5f838152600760205260409020549091508082146111bb576001600160a01b0384165f9081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b505f9182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008545f906111fe90600190611943565b5f8381526009602052604081205460088054939450909284908110611225576112256118d8565b905f5260205f20015490508060088381548110611244576112446118d8565b5f91825260208083209091019290925582815260099091526040808220849055858252812055600880548061127b5761127b611956565b600190038181905f5260205f20015f9055905550505050565b5f60016112a0846108aa565b6112aa9190611943565b6001600160a01b039093165f908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6112ed838383611346565b610725576001600160a01b03831661131b57604051637e27328960e01b81526004810182905260240161058d565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161058d565b5f6001600160a01b038316158015906110055750826001600160a01b0316846001600160a01b0316148061137f575061137f8484610aa2565b806110055750505f908152600460205260409020546001600160a01b03908116911614919050565b5080546113b390611784565b5f825580601f106113c2575050565b601f0160209004905f5260205f209081019061084891905b808211156113ed575f81556001016113da565b5090565b6001600160e01b031981168114610848575f80fd5b5f60208284031215611416575f80fd5b8135610681816113f1565b5f60208284031215611431575f80fd5b5035919050565b5f81518084525f5b8181101561145c57602081850181015186830182015201611440565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f6106816020830184611438565b80356001600160a01b03811681146114a3575f80fd5b919050565b5f80604083850312156114b9575f80fd5b6114c28361148d565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f67ffffffffffffffff808411156114fe576114fe6114d0565b604051601f8501601f19908116603f01168101908282118183101715611526576115266114d0565b8160405280935085815286868601111561153e575f80fd5b858560208301375f602087830101525050509392505050565b5f82601f830112611566575f80fd5b610681838335602085016114e4565b5f805f60608486031215611587575f80fd5b6115908461148d565b925061159e6020850161148d565b9150604084013567ffffffffffffffff8111156115b9575f80fd5b6115c586828701611557565b9150509250925092565b5f805f606084860312156115e1575f80fd5b6115ea8461148d565b92506115f86020850161148d565b9150604084013590509250925092565b5f60208284031215611618575f80fd5b6106818261148d565b5f8060408385031215611632575f80fd5b82359150602083013567ffffffffffffffff81111561164f575f80fd5b61165b85828601611557565b9150509250929050565b5f8060408385031215611676575f80fd5b61167f8361148d565b915060208301358015158114611693575f80fd5b809150509250929050565b5f805f80608085870312156116b1575f80fd5b6116ba8561148d565b93506116c86020860161148d565b925060408501359150606085013567ffffffffffffffff8111156116ea575f80fd5b8501601f810187136116fa575f80fd5b611709878235602084016114e4565b91505092959194509250565b5f8060408385031215611726575f80fd5b61172f8361148d565b915061173d6020840161148d565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761046357610463611746565b8082018082111561046357610463611746565b600181811c9082168061179857607f821691505b6020821081036117b657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561072557805f5260205f20601f840160051c810160208510156117e15750805b601f840160051c820191505b81811015610e19575f81556001016117ed565b815167ffffffffffffffff81111561181a5761181a6114d0565b61182e816118288454611784565b846117bc565b602080601f831160018114611861575f841561184a5750858301515b5f19600386901b1c1916600185901b1785556118b8565b5f85815260208120601f198616915b8281101561188f57888601518255948401946001909101908401611870565b50858210156118ac57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f600182016118d1576118d1611746565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061191e90830184611438565b9695505050505050565b5f60208284031215611938575f80fd5b8151610681816113f1565b8181038181111561046357610463611746565b634e487b7160e01b5f52603160045260245ffdfe44657a656e7472616c697a656420496e737572616e63652050726f746f636f6c204e4654a2646970667358221220e7359195b86555749e78ffb2c69a78ffb629ae222ebb6eb5f9ddc9582f09634364736f6c6343000818003344657a656e7472616c697a656420496e737572616e63652050726f746f636f6c204e4654",
1121
+ "deployedBytecode": "0x608060405234801561000f575f80fd5b5060043610610260575f3560e01c8063a48f42e01161014b578063d1982d88116100bf578063e2b178a011610084578063e2b178a01461064a578063e74d052f14610652578063f40d7c3014610665578063f7dd05ba1461066d578063fee11aaf14610680578063fff74f6c14610691575f80fd5b8063d1982d8814610598578063d2213b5b146105ab578063d272ac1e146105cb578063d39e6043146105fc578063e285c9c414610638575f80fd5b8063b5c51acf11610110578063b5c51acf14610518578063b5ee0ded14610532578063c0c53b8b14610545578063c3c5a5471461055a578063c59d394b1461056d578063caed989714610580575f80fd5b8063a48f42e0146104c4578063a5df9e4e146104d7578063a7050a56146104ea578063ac9848ee146104fd578063ae8dfb7914610510575f80fd5b80631a848cfb116101e25780633fe9300e116101a75780633fe9300e14610425578063644c45e0146104475780637e2cd82d1461046d578063839f700c14610494578063893d20e81461049c5780638b09a5f0146104a4575f80fd5b80631a848cfb1461039c5780632b91e0a9146103b25780632de837e0146103c557806331e7d702146103eb57806338bb429a14610412575f80fd5b80630e9ed68b116102285780630e9ed68b1461032c57806311edceaa1461033d578063120726c31461035057806314afd79e1461037657806317dc5e2a14610389575f80fd5b806301bc45c91461026457806301ffc9a7146102a857806306851fba146102cb5780630e41142e1461030a5780630e6d1de914610324575b5f80fd5b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6102bb6102b6366004611fc7565b6106b7565b604051901515815260200161029f565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160601b03909116815260200161029f565b6103126106fb565b60405160ff909116815260200161029f565b61031261076b565b6008546001600160a01b031661028b565b6102bb61034b366004612000565b6107b2565b7f000000000000000000000000000000000000000000000000000000000000000061028b565b61028b61038436600461203a565b610825565b6102bb61039736600461203a565b61094c565b6103a46109a3565b60405190815260200161029f565b6102bb6103c036600461203a565b610a24565b7f000000000000000000000000000000000000000000000000000000000000000061028b565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b61028b610420366004612074565b610a64565b61043a60405180602001604052805f81525081565b60405161029f91906120dc565b7f00000000000000000000000000000000000000000000000000000000000000006102f2565b61028b7f000000000000000000000000000000000000000000000000000000000000000081565b6103a4600381565b61028b610ad7565b6104b76104b236600461203a565b610ae1565b60405161029f91906120ee565b6104b76104d2366004612074565b610c44565b6102f26104e5366004612339565b610d14565b6102f26104f836600461236a565b610e99565b6007546102f2906001600160601b031681565b6103a4600281565b60075461028b90600160601b90046001600160a01b031681565b60085461028b906001600160a01b031681565b6105586105533660046123c9565b611051565b005b6102bb61056836600461203a565b611204565b60095461028b906001600160a01b031681565b600754600160601b90046001600160a01b031661028b565b6102f26105a6366004612339565b611274565b6105be6105b9366004612000565b6113b6565b60405161029f919061265c565b6102f26105d936600461203a565b6001600160a01b03165f908152600260205260409020546001600160601b031690565b61028b61060a36600461279f565b60ff9081165f908152600360209081526040808320949093168252929092529020546001600160a01b031690565b5f5461028b906001600160a01b031681565b61028b611499565b6102bb610660366004612074565b61151a565b610312611573565b61028b61067b366004612000565b6115ba565b6009546001600160a01b031661028b565b7f00000000000000000000000000000000000000000000000000000000000000006102f2565b5f6001600160e01b031982166301ffc9a760e01b14806106e757506001600160e01b0319821663e607072160e01b145b156106f457506001919050565b505f919050565b600954604080516307208a1760e11b815290515f926001600160a01b031691630e41142e9160048083019260209291908290030181865afa158015610742573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076691906127e1565b905090565b60095460408051630e6d1de960e01b815290515f926001600160a01b031691630e6d1de99160048083019260209291908290030181865afa158015610742573d5f803e3d5ffd5b6009546040516308f6e75560e11b815260ff831660048201525f916001600160a01b0316906311edceaa90602401602060405180830381865afa1580156107fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061081f91906127fc565b92915050565b6001600160a01b038181165f9081526002602052604080822054905163046e44af60e11b81526001600160601b03909116600482015290917f00000000000000000000000000000000000000000000000000000000000000001690636352211e9073__$94a2c899be079b00d952d0d84fffaa5c34$__906308dc895e906024015b602060405180830381865af41580156108c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e59190612817565b6040516001600160e01b031960e084901b1681526001600160601b0390911660048201526024015b602060405180830381865afa158015610928573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061081f9190612832565b6001600160a01b0381165f908152600260209081526040808320546001600160601b039081168452600190925280832054600160601b900490911680835290822054600160c01b900460ff16600a145b9392505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a00573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610766919061284d565b6001600160a01b0381165f908152600260209081526040808320546001600160601b031683526001909152812054600160c01b900460ff1660091461081f565b60405163046e44af60e11b81526001600160601b03821660048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e9073__$94a2c899be079b00d952d0d84fffaa5c34$__906308dc895e906024016108a6565b5f61076630610825565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091526001600160a01b038083165f908152600260208181526040808420546001600160601b039081168552600180845294829020825160e08101845281548084168252600160601b81049093169481019490945260ff600160c01b8304811693850193909352600160c81b9091049091161515606083015292830154841660808201529082015490921660a083015260038101805460c084019190610bbd90612864565b80601f0160208091040260200160405190810160405280929190818152602001828054610be990612864565b8015610c345780601f10610c0b57610100808354040283529160200191610c34565b820191905f5260205f20905b815481529060010190602001808311610c1757829003601f168201915b5050505050815250509050919050565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091526001600160601b038083165f90815260016020818152604092839020835160e08101855281548087168252600160601b81049096169281019290925260ff600160c01b8604811694830194909452600160c81b909404909216151560608301528201546001600160a01b03908116608083015260028301541660a082015260038201805491929160c084019190610bbd90612864565b600954604051639ef6ddc960e01b81523360048201525f916001600160a01b031690639ef6ddc990602401602060405180830381865afa158015610d5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d7e91906127fc565b610d9b57604051639404710360e01b815260040160405180910390fd5b6040828101516020808501516001600160601b03165f908152600190915291909120546080840151600160c01b90910460ff16906001600160a01b0316610e375760ff8083165f908152600660209081526040808320858516845290915281205490911615159003610e325760405163347a1f9760e21b815260ff8084166004830152821660248201526044015b60405180910390fd5b610e88565b60ff8083165f908152600560209081526040808320858516845290915281205490911615159003610e885760405163347a1f9760e21b815260ff808416600483015282166024820152604401610e29565b610e91846115ed565b949350505050565b6009545f906001600160a01b03163314610ec55760405162783d2b60e21b815260040160405180910390fd5b608084015160405163037c8cb160e51b815260ff8416600482015273__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636f91962090602401602060405180830381865af4158015610f1a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3e91906127fc565b15610f675760405163b580d22160e01b81526001600160a01b0382166004820152602401610e29565b60ff8085165f908152600360209081526040808320938716835292905220546001600160a01b031615610fc957604051632a16d08d60e01b81526001600160a01b038216600482015260ff808616602483015284166044820152606401610e29565b60ff8481165f90815260036020908152604080832093871683529290522080546001600160a01b0319166001600160a01b038316179055611009856115ed565b6040805160ff8088168252861660208201529193507fc4761a4fab07f2d3f242a458f91e31e4ea6128fe5edc599e3436f5f66317e0da910160405180910390a1509392505050565b5f7f46cd1d813423aaf613c34c7f348d15b2b5e71215e9145b09467e257ea2805a008054909150690100000000000000000090046001600160a01b031633146110ad5760405163ce4d158160e01b815260040160405180910390fd5b805460ff600160401b82041615906001600160401b03165f811580156110d05750825b90505f826001600160401b031660011480156110eb5750303b155b9050811580156110f9575080155b156111175760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561114157845460ff60401b1916600160401b1785555b600980546001600160a01b03808b166001600160a01b031992831617909255600780548a8416600160601b026001600160601b039091161790556008805492891692909116919091179055611194611be6565b600780546001600160601b0319166001600160601b039290921691909117905583156111fa57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b6001600160a01b0381165f908152600260205260408082205490516330b8415f60e01b81526001600160601b03909116600482015273__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f906024015b602060405180830381865af41580156107fb573d5f803e3d5ffd5b600954604051639ef6ddc960e01b81523360048201525f916001600160a01b031690639ef6ddc990602401602060405180830381865afa1580156112ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112de91906127fc565b6112fb57604051639404710360e01b815260040160405180910390fd5b6040808301516020808501516001600160601b03165f908152600182528381205460ff80851683526004909352939020549192600160c01b90048116911615611357576040516368f27c4360e11b815260040160405180910390fd5b60ff81166001148061136c575060ff81166002145b8061137a575060ff81166009145b156113a55760405163347a1f9760e21b815260ff808416600483015282166024820152604401610e29565b6113ae846115ed565b505050919050565b61142a6040518061018001604052805f60ff1681526020015f801916815260200160608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081526020015f64ffffffffff1681526020015f64ffffffffff1681525090565b60095460405163d2213b5b60e01b815260ff841660048201526001600160a01b039091169063d2213b5b906024015f60405180830381865afa158015611472573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261081f9190810190612d16565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114f6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107669190612832565b6001600160601b0381165f9081526001602052604080822054905163b2466acf60e01b8152600160c01b90910460ff16600482015273__$0d958e68cba84670b8f4a3f2f2686b1c6b$__9063b2466acf90602401611259565b60095460408051630f40d7c360e41b815290515f926001600160a01b03169163f40d7c309160048083019260209291908290030181865afa158015610742573d5f803e3d5ffd5b6009546040516319d1478b60e01b815260ff831660048201525f916001600160a01b0316906319d1478b9060240161090d565b60408082015160608084015160808086015160a0808801516020808a01516001600160601b038082165f90815260018085528c82208d5160e081018f5281548086168252600160601b81049095169681019690965260ff600160c01b850481169e87019e909e52600160c81b909304909c16151599840199909952998a01546001600160a01b039081169683019690965260028a0154909516928101929092526003880180549698959693959194938993929160c08401916116ae90612864565b80601f01602080910402602001604051908101604052809291908181526020018280546116da90612864565b80156117255780601f106116fc57610100808354040283529160200191611725565b820191905f5260205f20905b81548152906001019060200180831161170857829003601f168201915b50505091909252505050604081015160808201519192509060ff881660201461176f576001600160a01b03811661176f57604051630bdad98960e11b815260040160405180910390fd5b5f611781888a89876060015186611f61565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663caa0f92a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117e0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611804919061284d565b60405163efac97cf60e01b81526004810182905290915073__$94a2c899be079b00d952d0d84fffaa5c34$__9063efac97cf90602401602060405180830381865af4158015611855573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118799190612817565b9a508a8c5f01906001600160601b031690816001600160601b0316815250508b60015f8d6001600160601b03166001600160601b031681526020019081526020015f205f820151815f015f6101000a8154816001600160601b0302191690836001600160601b031602179055506020820151815f01600c6101000a8154816001600160601b0302191690836001600160601b031602179055506040820151815f0160186101000a81548160ff021916908360ff1602179055506060820151815f0160196101000a81548160ff0219169083151502179055506080820151816001015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a0820151816002015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060c08201518160030190816119be9190612f08565b5050506001600160a01b03881615611abe576001600160a01b0388165f90815260026020526040908190205490516330b8415f60e01b81526001600160601b03909116600482015273__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015611a40573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a6491906127fc565b15611a8d57604051633fa3dceb60e21b81526001600160a01b0389166004820152602401610e29565b6001600160a01b0388165f90815260026020526040902080546001600160601b0319166001600160601b038d161790555b604080516001600160601b038d811682528816602082015260ff8c16818301528a151560608201526001600160a01b038a81166080830152891660a082015290517f378868470b980e00aaf3e534a055e641e5fe9dfd8da44b4250edc6ad96e983879181900360c00190a1604080516020810182525f8082529151631109bad360e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163221375a691611b85918c91889190600401612fc7565b6020604051808303815f875af1158015611ba1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bc5919061284d565b9050818114611bd657611bd6612ff2565b5050505050505050505050919050565b5f8060085f9054906101000a90046001600160a01b03166001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c38573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c5c9190612832565b604051630559ea4760e01b8152600360048201529091505f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630559ea4790602401602060405180830381865afa158015611cc4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ce8919061284d565b60405163efac97cf60e01b81526004810182905290915073__$94a2c899be079b00d952d0d84fffaa5c34$__9063efac97cf90602401602060405180830381865af4158015611d39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d5d9190612817565b92506040518060e00160405280846001600160601b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160601b03168152602001611db0600390565b60ff90811682525f60208084018290526008546001600160a01b03908116604080870191909152888216606080880191909152815180850183528581526080978801526001600160601b03808c16865260018086529583902089518154968b0151948b0151938b01511515600160c81b0260ff60c81b1994909916600160c01b029390931661ffff60c01b19948316600160601b026001600160c01b031990971693909216929092179490941791909116929092179390931781559284015190830180549183166001600160a01b031992831617905560a084015160028401805491909316911617905560c08201516003820190611eae9082612f08565b50506008546001600160a01b039081165f908152600260205260409081902080546001600160601b0319166001600160601b038816179055516340c10f1960e01b81528482166004820152602481018490527f000000000000000000000000000000000000000000000000000000000000000090911691506340c10f19906044015f604051808303815f87803b158015611f46575f80fd5b505af1158015611f58573d5f803e3d5ffd5b50505050505090565b5f60ff8516602003611f7457505f611fa6565b6001600160a01b038416611f96578215611f8f575080611fa6565b505f611fa6565b8515611fa3575082611fa6565b505f5b95945050505050565b6001600160e01b031981168114611fc4575f80fd5b50565b5f60208284031215611fd7575f80fd5b813561099c81611faf565b60ff81168114611fc4575f80fd5b8035611ffb81611fe2565b919050565b5f60208284031215612010575f80fd5b813561099c81611fe2565b6001600160a01b0381168114611fc4575f80fd5b8035611ffb8161201b565b5f6020828403121561204a575f80fd5b813561099c8161201b565b6001600160601b0381168114611fc4575f80fd5b8035611ffb81612055565b5f60208284031215612084575f80fd5b813561099c81612055565b5f5b838110156120a9578181015183820152602001612091565b50505f910152565b5f81518084526120c881602086016020860161208f565b601f01601f19169290920160200192915050565b602081525f61099c60208301846120b1565b602081525f6001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a083015161215660c08401826001600160a01b03169052565b5060c083015160e080840152610e916101008401826120b1565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b03811182821017156121a6576121a6612170565b60405290565b60405161018081016001600160401b03811182821017156121a6576121a6612170565b604051601f8201601f191681016001600160401b03811182821017156121f7576121f7612170565b604052919050565b8015158114611fc4575f80fd5b8035611ffb816121ff565b5f6001600160401b0382111561222f5761222f612170565b50601f01601f191660200190565b5f82601f83011261224c575f80fd5b813561225f61225a82612217565b6121cf565b818152846020838601011115612273575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60e0828403121561229f575f80fd5b6122a7612184565b90506122b282612069565b81526122c060208301612069565b60208201526122d160408301611ff0565b60408201526122e26060830161220c565b60608201526122f36080830161202f565b608082015261230460a0830161202f565b60a082015260c08201356001600160401b03811115612321575f80fd5b61232d8482850161223d565b60c08301525092915050565b5f60208284031215612349575f80fd5b81356001600160401b0381111561235e575f80fd5b610e918482850161228f565b5f805f6060848603121561237c575f80fd5b83356001600160401b03811115612391575f80fd5b61239d8682870161228f565b93505060208401356123ae81611fe2565b915060408401356123be81611fe2565b809150509250925092565b5f805f606084860312156123db575f80fd5b83356123e68161201b565b925060208401356123f68161201b565b915060408401356123be8161201b565b5f815180845260208085019450602084015f5b8381101561243e5781516001600160a01b031687529582019590820190600101612419565b509495945050505050565b5f8282518085526020808601955060208260051b840101602086015f5b8481101561249457601f198684030189526124828383516120b1565b98840198925090830190600101612466565b5090979650505050505050565b5f82825180855260208086019550808260051b8401018186015f5b8481101561249457858303601f190189528151805180855290850190858501905f5b818110156125035783516001600160401b0316835292870192918701916001016124de565b505099850199935050908301906001016124bc565b5f8282518085526020808601955060208260051b840101602086015f5b8481101561249457601f19868403018952612551838351612449565b98840198925090830190600101612535565b5f828251808552602080860195506005818360051b8501018287015f5b8581101561261c57601f1987840381018b5282518051808652908701908786019080881b870189015f5b82811015612605578882038601845284518051808452908c01908c8401905f5b818110156125f05783516001600160e01b0319168352928e0192918e01916001016125ca565b5050958c0195948c01949250506001016125aa565b509d89019d96505050928601925050600101612580565b509098975050505050505050565b5f815180845260208085019450602084015f5b8381101561243e57815160ff168752958201959082019060010161263d565b6020815261267060208201835160ff169052565b602082015160408201525f60408301516101808060608501526126976101a0850183612406565b91506060850151601f19808685030160808701526126b58483612449565b935060808701519150808685030160a08701526126d284836124a1565b935060a08701519150808685030160c08701526126ef8483612518565b935060c08701519150808685030160e087015261270c84836124a1565b935060e0870151915061010081878603018188015261272b8584612518565b94508088015192505061012081878603018188015261274a8584612563565b945080880151925050610140818786030181880152612769858461262a565b945080880151925050506101606127888187018364ffffffffff169052565b9095015164ffffffffff1693019290925250919050565b5f80604083850312156127b0575f80fd5b82356127bb81611fe2565b915060208301356127cb81611fe2565b809150509250929050565b8051611ffb81611fe2565b5f602082840312156127f1575f80fd5b815161099c81611fe2565b5f6020828403121561280c575f80fd5b815161099c816121ff565b5f60208284031215612827575f80fd5b815161099c81612055565b5f60208284031215612842575f80fd5b815161099c8161201b565b5f6020828403121561285d575f80fd5b5051919050565b600181811c9082168061287857607f821691505b60208210810361289657634e487b7160e01b5f52602260045260245ffd5b50919050565b5f6001600160401b038211156128b4576128b4612170565b5060051b60200190565b5f82601f8301126128cd575f80fd5b815160206128dd61225a8361289c565b8083825260208201915060208460051b8701019350868411156128fe575f80fd5b602086015b848110156129235780516129168161201b565b8352918301918301612903565b509695505050505050565b5f82601f83011261293d575f80fd5b8151602061294d61225a8361289c565b82815260059290921b8401810191818101908684111561296b575f80fd5b8286015b848110156129235780516001600160401b0381111561298c575f80fd5b8701603f8101891361299c575f80fd5b8481015160406129ae61225a83612217565b8281528b828486010111156129c1575f80fd5b6129d08389830184870161208f565b865250505091830191830161296f565b5f82601f8301126129ef575f80fd5b815160206129ff61225a8361289c565b828152600592831b8501820192828201919087851115612a1d575f80fd5b8387015b858110156124945780516001600160401b0380821115612a3f575f80fd5b818a0191508a603f830112612a52575f80fd5b868201516040612a6461225a8361289c565b82815291861b8401810191898101908e841115612a7f575f80fd5b948201945b83861015612aad57855192508483168314612a9d575f80fd5b828252948a0194908a0190612a84565b89525050509486019450508401612a21565b5f82601f830112612ace575f80fd5b81516020612ade61225a8361289c565b82815260059290921b84018101918181019086841115612afc575f80fd5b8286015b848110156129235780516001600160401b03811115612b1d575f80fd5b612b2b8986838b010161292e565b845250918301918301612b00565b5f82601f830112612b48575f80fd5b8151612b5661225a8261289c565b8082825260208201915060208360051b860101925085831115612b77575f80fd5b602085015b83811015612c935780516001600160401b03811115612b99575f80fd5b8601603f81018813612ba9575f80fd5b6020810151612bba61225a8261289c565b81815260059190911b82016040019060208101908a831115612bda575f80fd5b604084015b83811015612c7d5780516001600160401b03811115612bfc575f80fd5b8501605f81018d13612c0c575f80fd5b6040810151612c1d61225a8261289c565b81815260059190911b82016060019060208101908f831115612c3d575f80fd5b6060840193505b82841015612c68578351612c5781611faf565b825260209384019390910190612c44565b86525050602093840193919091019050612bdf565b5086525050602093840193919091019050612b7c565b5095945050505050565b5f82601f830112612cac575f80fd5b81516020612cbc61225a8361289c565b8083825260208201915060208460051b870101935086841115612cdd575f80fd5b602086015b84811015612923578051612cf581611fe2565b8352918301918301612ce2565b805164ffffffffff81168114611ffb575f80fd5b5f60208284031215612d26575f80fd5b81516001600160401b0380821115612d3c575f80fd5b908301906101808286031215612d50575f80fd5b612d586121ac565b612d61836127d6565b815260208301516020820152604083015182811115612d7e575f80fd5b612d8a878286016128be565b604083015250606083015182811115612da1575f80fd5b612dad8782860161292e565b606083015250608083015182811115612dc4575f80fd5b612dd0878286016129e0565b60808301525060a083015182811115612de7575f80fd5b612df387828601612abf565b60a08301525060c083015182811115612e0a575f80fd5b612e16878286016129e0565b60c08301525060e083015182811115612e2d575f80fd5b612e3987828601612abf565b60e0830152506101008084015183811115612e52575f80fd5b612e5e88828701612b39565b8284015250506101208084015183811115612e77575f80fd5b612e8388828701612c9d565b8284015250506101409150612e99828401612d02565b828201526101609150612ead828401612d02565b91810191909152949350505050565b601f821115612f0357805f5260205f20601f840160051c81016020851015612ee15750805b601f840160051c820191505b81811015612f00575f8155600101612eed565b50505b505050565b81516001600160401b03811115612f2157612f21612170565b612f3581612f2f8454612864565b84612ebc565b602080601f831160018114612f68575f8415612f515750858301515b5f19600386901b1c1916600185901b178555612fbf565b5f85815260208120601f198616915b82811015612f9657888601518255948401946001909101908401612f77565b5085821015612fb357878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b6001600160a01b038481168252831660208201526060604082018190525f90611fa6908301846120b1565b634e487b7160e01b5f52600160045260245ffdfea2646970667358221220634fced856460a92cdb50e661ed10acc6bb66c818dd1365d32d25fc881bce42a64736f6c63430008180033",
961
1122
  "linkReferences": {
962
1123
  "contracts/type/NftId.sol": {
963
1124
  "NftIdLib": [
964
1125
  {
965
1126
  "length": 20,
966
- "start": 277
967
- },
968
- {
969
- "length": 20,
970
- "start": 404
1127
+ "start": 409
971
1128
  },
972
1129
  {
973
1130
  "length": 20,
974
- "start": 1044
1131
+ "start": 534
975
1132
  },
976
1133
  {
977
1134
  "length": 20,
978
- "start": 1267
1135
+ "start": 1169
979
1136
  },
980
1137
  {
981
1138
  "length": 20,
982
- "start": 1503
1139
+ "start": 1387
983
1140
  },
984
1141
  {
985
1142
  "length": 20,
986
- "start": 4172
1143
+ "start": 4046
987
1144
  },
988
1145
  {
989
1146
  "length": 20,
990
- "start": 4299
1147
+ "start": 4171
991
1148
  },
992
1149
  {
993
1150
  "length": 20,
994
- "start": 6922
1151
+ "start": 7612
995
1152
  },
996
1153
  {
997
1154
  "length": 20,
998
- "start": 7719
1155
+ "start": 8169
999
1156
  },
1000
1157
  {
1001
1158
  "length": 20,
1002
- "start": 9421
1159
+ "start": 10095
1003
1160
  },
1004
1161
  {
1005
1162
  "length": 20,
1006
- "start": 9800
1163
+ "start": 11601
1007
1164
  },
1008
1165
  {
1009
1166
  "length": 20,
1010
- "start": 11832
1167
+ "start": 12092
1011
1168
  },
1012
1169
  {
1013
1170
  "length": 20,
1014
- "start": 12336
1171
+ "start": 12853
1015
1172
  }
1016
1173
  ]
1017
1174
  },
@@ -1019,11 +1176,11 @@
1019
1176
  "ObjectTypeLib": [
1020
1177
  {
1021
1178
  "length": 20,
1022
- "start": 8994
1179
+ "start": 9238
1023
1180
  },
1024
1181
  {
1025
1182
  "length": 20,
1026
- "start": 11055
1183
+ "start": 10885
1027
1184
  }
1028
1185
  ]
1029
1186
  }
@@ -1033,27 +1190,27 @@
1033
1190
  "NftIdLib": [
1034
1191
  {
1035
1192
  "length": 20,
1036
- "start": 1717
1193
+ "start": 2184
1037
1194
  },
1038
1195
  {
1039
1196
  "length": 20,
1040
- "start": 2514
1197
+ "start": 2741
1041
1198
  },
1042
1199
  {
1043
1200
  "length": 20,
1044
- "start": 4216
1201
+ "start": 4667
1045
1202
  },
1046
1203
  {
1047
1204
  "length": 20,
1048
- "start": 4595
1205
+ "start": 6173
1049
1206
  },
1050
1207
  {
1051
1208
  "length": 20,
1052
- "start": 6627
1209
+ "start": 6664
1053
1210
  },
1054
1211
  {
1055
1212
  "length": 20,
1056
- "start": 7131
1213
+ "start": 7425
1057
1214
  }
1058
1215
  ]
1059
1216
  },
@@ -1061,11 +1218,11 @@
1061
1218
  "ObjectTypeLib": [
1062
1219
  {
1063
1220
  "length": 20,
1064
- "start": 3789
1221
+ "start": 3810
1065
1222
  },
1066
1223
  {
1067
1224
  "length": 20,
1068
- "start": 5850
1225
+ "start": 5457
1069
1226
  }
1070
1227
  ]
1071
1228
  }