@etherisc/gif-next 0.0.2-da06f3b-803 → 0.0.2-da09ec0-359

Sign up to get free protection for your applications and to get access to all the features.
Files changed (368) hide show
  1. package/README.md +8 -13
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +315 -98
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +668 -141
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +241 -60
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +438 -86
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +526 -144
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +257 -144
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +676 -183
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +435 -186
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -50
  20. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  21. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
  22. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  23. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +267 -1594
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +232 -208
  26. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  27. package/artifacts/contracts/instance/Instance.sol/Instance.json +393 -2515
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +359 -92
  30. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +424 -236
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +338 -409
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +291 -108
  38. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  39. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2788 -0
  40. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  41. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -13
  42. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +197 -169
  44. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +40 -10
  48. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  49. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  50. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +51 -42
  52. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  53. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  54. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  55. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  56. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  57. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  58. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  59. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  60. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  61. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +918 -0
  62. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +648 -0
  64. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  65. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +526 -340
  66. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  67. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +340 -93
  68. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  69. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1376 -0
  70. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +748 -0
  72. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  73. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +982 -198
  74. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  75. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +430 -87
  76. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +493 -0
  78. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +290 -270
  80. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  81. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +743 -0
  82. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +527 -128
  84. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +181 -296
  86. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +705 -122
  88. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
  89. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.json +510 -0
  90. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +71 -160
  92. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +449 -395
  94. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +349 -114
  96. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1018 -202
  98. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +360 -89
  100. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
  101. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +1004 -0
  102. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +688 -0
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  105. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +231 -223
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +298 -95
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  109. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +15 -2
  112. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  113. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +70 -193
  114. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  115. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  116. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  117. package/artifacts/contracts/registry/Registry.sol/Registry.json +28 -15
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  119. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  121. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +182 -232
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +287 -94
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  125. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +23 -11
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  127. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +128 -37
  128. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  129. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  130. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  131. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  132. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  133. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  134. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
  135. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  136. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
  137. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -29
  139. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  140. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  141. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  142. package/artifacts/contracts/shared/IService.sol/IService.json +71 -160
  143. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  144. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  145. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  146. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +100 -33
  147. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  148. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
  149. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  150. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +283 -76
  151. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  152. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +115 -58
  153. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  154. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  155. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  156. package/artifacts/contracts/shared/Service.sol/Service.json +172 -160
  157. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  158. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
  159. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  160. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  161. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  162. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  163. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  165. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  166. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +115 -58
  167. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  168. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  169. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  170. package/artifacts/contracts/test/TestService.sol/TestService.json +190 -210
  171. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  172. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  173. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  174. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  175. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
  176. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  177. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  178. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  179. package/artifacts/contracts/types/Amount.sol/AmountLib.json +281 -0
  180. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  182. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  184. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +179 -0
  185. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  187. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Fee.sol/FeeLib.json +74 -19
  189. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  190. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  191. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  193. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  194. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  195. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  197. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  198. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +209 -0
  200. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
  202. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  203. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  204. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  205. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  206. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  207. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  208. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  209. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  210. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  211. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  212. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  213. package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
  214. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  215. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
  216. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  217. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  218. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  219. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  220. package/contracts/components/Component.sol +134 -78
  221. package/contracts/components/Distribution.sol +189 -57
  222. package/contracts/components/IComponent.sol +62 -15
  223. package/contracts/components/IDistributionComponent.sol +39 -15
  224. package/contracts/components/IPoolComponent.sol +86 -23
  225. package/contracts/components/IProductComponent.sol +8 -6
  226. package/contracts/components/Pool.sol +230 -136
  227. package/contracts/components/Product.sol +227 -118
  228. package/contracts/instance/BundleManager.sol +10 -9
  229. package/contracts/instance/Cloneable.sol +7 -2
  230. package/contracts/instance/IInstance.sol +40 -35
  231. package/contracts/instance/IInstanceService.sol +44 -13
  232. package/contracts/instance/Instance.sol +131 -171
  233. package/contracts/instance/InstanceAccessManager.sol +281 -154
  234. package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
  235. package/contracts/instance/InstanceReader.sol +90 -15
  236. package/contracts/instance/InstanceService.sol +173 -338
  237. package/contracts/instance/InstanceServiceManager.sol +1 -1
  238. package/contracts/instance/InstanceStore.sol +212 -0
  239. package/contracts/instance/ObjectManager.sol +6 -8
  240. package/contracts/instance/base/ComponentService.sol +53 -39
  241. package/contracts/instance/base/KeyValueStore.sol +13 -36
  242. package/contracts/instance/base/Lifecycle.sol +26 -6
  243. package/contracts/instance/module/IAccess.sol +18 -12
  244. package/contracts/instance/module/IBundle.sol +8 -5
  245. package/contracts/instance/module/IComponents.sol +41 -0
  246. package/contracts/instance/module/IDistribution.sol +3 -0
  247. package/contracts/instance/module/IPolicy.sol +43 -11
  248. package/contracts/instance/module/ISetup.sol +7 -20
  249. package/contracts/instance/service/ApplicationService.sol +186 -0
  250. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  251. package/contracts/instance/service/BundleService.sol +225 -136
  252. package/contracts/instance/service/BundleServiceManager.sol +1 -1
  253. package/contracts/instance/service/ClaimService.sol +437 -0
  254. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  255. package/contracts/instance/service/DistributionService.sol +264 -22
  256. package/contracts/instance/service/DistributionServiceManager.sol +1 -1
  257. package/contracts/instance/service/IApplicationService.sol +62 -0
  258. package/contracts/instance/service/IBundleService.sol +96 -22
  259. package/contracts/instance/service/IClaimService.sol +90 -0
  260. package/contracts/instance/service/IDistributionService.sol +76 -1
  261. package/contracts/instance/service/IPolicyService.sol +40 -54
  262. package/contracts/instance/service/IPoolService.sol +97 -3
  263. package/contracts/instance/service/IPricingService.sol +37 -0
  264. package/contracts/instance/service/PolicyService.sol +200 -362
  265. package/contracts/instance/service/PolicyServiceManager.sol +2 -2
  266. package/contracts/instance/service/PoolService.sol +313 -20
  267. package/contracts/instance/service/PoolServiceManager.sol +1 -1
  268. package/contracts/instance/service/PricingService.sol +275 -0
  269. package/contracts/instance/service/PricingServiceManager.sol +51 -0
  270. package/contracts/instance/service/ProductService.sol +41 -64
  271. package/contracts/instance/service/ProductServiceManager.sol +2 -2
  272. package/contracts/registry/ChainNft.sol +8 -0
  273. package/contracts/registry/IRegistry.sol +3 -2
  274. package/contracts/registry/IRegistryService.sol +12 -11
  275. package/contracts/registry/ITransferInterceptor.sol +1 -0
  276. package/contracts/registry/Registry.sol +30 -20
  277. package/contracts/registry/RegistryService.sol +75 -51
  278. package/contracts/registry/RegistryServiceManager.sol +13 -13
  279. package/contracts/registry/ReleaseManager.sol +32 -40
  280. package/contracts/registry/TokenRegistry.sol +16 -12
  281. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  282. package/contracts/shared/ERC165.sol +14 -12
  283. package/contracts/shared/INftOwnable.sol +11 -10
  284. package/contracts/shared/IPolicyHolder.sol +40 -0
  285. package/contracts/shared/IRegisterable.sol +3 -3
  286. package/contracts/shared/IRegistryLinked.sol +11 -0
  287. package/contracts/shared/IService.sol +6 -4
  288. package/contracts/shared/IVersionable.sol +4 -47
  289. package/contracts/shared/NftOwnable.sol +64 -85
  290. package/contracts/shared/PolicyHolder.sol +94 -0
  291. package/contracts/shared/ProxyManager.sol +100 -25
  292. package/contracts/shared/Registerable.sol +16 -27
  293. package/contracts/shared/RegistryLinked.sol +43 -0
  294. package/contracts/shared/Service.sol +32 -20
  295. package/contracts/shared/TokenHandler.sol +14 -6
  296. package/contracts/shared/Versionable.sol +4 -92
  297. package/contracts/test/TestRegisterable.sol +1 -1
  298. package/contracts/test/TestService.sol +1 -1
  299. package/contracts/types/Amount.sol +109 -0
  300. package/contracts/types/Blocknumber.sol +1 -0
  301. package/contracts/types/ClaimId.sol +75 -0
  302. package/contracts/types/DistributorType.sol +2 -2
  303. package/contracts/types/Fee.sol +17 -8
  304. package/contracts/types/NftId.sol +8 -0
  305. package/contracts/types/ObjectType.sol +16 -7
  306. package/contracts/types/PayoutId.sol +82 -0
  307. package/contracts/types/Referral.sol +4 -0
  308. package/contracts/types/RoleId.sol +12 -8
  309. package/contracts/types/Seconds.sol +54 -0
  310. package/contracts/types/StateId.sol +7 -2
  311. package/contracts/types/Timestamp.sol +18 -13
  312. package/contracts/types/UFixed.sol +1 -0
  313. package/contracts/types/Version.sol +1 -0
  314. package/package.json +1 -1
  315. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  316. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  317. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  318. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  319. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  320. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  321. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  322. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  323. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  324. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  325. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  326. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  327. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  328. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  329. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  330. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  331. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  332. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  333. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  334. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  335. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  336. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  337. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  338. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  340. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  342. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  343. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  344. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  345. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  346. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  347. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  348. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  349. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  350. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  351. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  352. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  353. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  354. package/contracts/experiment/cloning/Cloner.sol +0 -47
  355. package/contracts/experiment/errors/Require.sol +0 -38
  356. package/contracts/experiment/errors/Revert.sol +0 -44
  357. package/contracts/experiment/inheritance/A.sol +0 -53
  358. package/contracts/experiment/inheritance/B.sol +0 -28
  359. package/contracts/experiment/inheritance/C.sol +0 -34
  360. package/contracts/experiment/inheritance/IA.sol +0 -13
  361. package/contracts/experiment/inheritance/IB.sol +0 -10
  362. package/contracts/experiment/inheritance/IC.sol +0 -12
  363. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  364. package/contracts/experiment/statemachine/ISM.sol +0 -25
  365. package/contracts/experiment/statemachine/SM.sol +0 -57
  366. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  367. package/contracts/experiment/types/TypeA.sol +0 -47
  368. package/contracts/experiment/types/TypeB.sol +0 -29
@@ -7,32 +7,38 @@
7
7
  "inputs": [
8
8
  {
9
9
  "internalType": "address",
10
- "name": "registry",
10
+ "name": "authority",
11
11
  "type": "address"
12
- },
13
- {
14
- "internalType": "NftId",
15
- "name": "nftId",
16
- "type": "uint96"
17
12
  }
18
13
  ],
19
- "name": "ErrorAlreadyLinked",
14
+ "name": "AccessManagedInvalidAuthority",
20
15
  "type": "error"
21
16
  },
22
17
  {
23
18
  "inputs": [
24
19
  {
25
20
  "internalType": "address",
26
- "name": "component",
21
+ "name": "caller",
27
22
  "type": "address"
28
23
  },
29
24
  {
30
- "internalType": "NftId",
31
- "name": "nftId",
32
- "type": "uint96"
25
+ "internalType": "uint32",
26
+ "name": "delay",
27
+ "type": "uint32"
28
+ }
29
+ ],
30
+ "name": "AccessManagedRequiredDelay",
31
+ "type": "error"
32
+ },
33
+ {
34
+ "inputs": [
35
+ {
36
+ "internalType": "address",
37
+ "name": "caller",
38
+ "type": "address"
33
39
  }
34
40
  ],
35
- "name": "ErrorComponentServiceAlreadyRegistered",
41
+ "name": "AccessManagedUnauthorized",
36
42
  "type": "error"
37
43
  },
38
44
  {
@@ -46,6 +52,27 @@
46
52
  "name": "ErrorComponentServiceComponentLocked",
47
53
  "type": "error"
48
54
  },
55
+ {
56
+ "inputs": [
57
+ {
58
+ "internalType": "address",
59
+ "name": "component",
60
+ "type": "address"
61
+ },
62
+ {
63
+ "internalType": "ObjectType",
64
+ "name": "expectedType",
65
+ "type": "uint8"
66
+ },
67
+ {
68
+ "internalType": "ObjectType",
69
+ "name": "foundType",
70
+ "type": "uint8"
71
+ }
72
+ ],
73
+ "name": "ErrorComponentServiceComponentTypeInvalid",
74
+ "type": "error"
75
+ },
49
76
  {
50
77
  "inputs": [
51
78
  {
@@ -124,11 +151,11 @@
124
151
  "inputs": [
125
152
  {
126
153
  "internalType": "address",
127
- "name": "contractAddress",
154
+ "name": "sender",
128
155
  "type": "address"
129
156
  }
130
157
  ],
131
- "name": "ErrorContractNotRegistered",
158
+ "name": "ErrorComponentServiceSenderNotService",
132
159
  "type": "error"
133
160
  },
134
161
  {
@@ -237,37 +264,27 @@
237
264
  "inputs": [
238
265
  {
239
266
  "internalType": "NftId",
240
- "name": "policyNftId",
267
+ "name": "nftId",
241
268
  "type": "uint96"
242
- },
243
- {
244
- "internalType": "uint256",
245
- "name": "premiumPaidAmount",
246
- "type": "uint256"
247
269
  }
248
270
  ],
249
- "name": "ErrorIPolicyServicePremiumAlreadyPaid",
271
+ "name": "ErrorNftOwnableAlreadyLinked",
250
272
  "type": "error"
251
273
  },
252
274
  {
253
275
  "inputs": [
254
276
  {
255
- "internalType": "NftId",
256
- "name": "policyNftId",
257
- "type": "uint96"
258
- },
259
- {
260
- "internalType": "uint256",
261
- "name": "premiumAmount",
262
- "type": "uint256"
263
- },
264
- {
265
- "internalType": "uint256",
266
- "name": "premiumPaidAmount",
267
- "type": "uint256"
277
+ "internalType": "address",
278
+ "name": "contractAddress",
279
+ "type": "address"
268
280
  }
269
281
  ],
270
- "name": "ErrorIPolicyServicePremiumNotFullyPaid",
282
+ "name": "ErrorNftOwnableContractNotRegistered",
283
+ "type": "error"
284
+ },
285
+ {
286
+ "inputs": [],
287
+ "name": "ErrorNftOwnableInitialOwnerZero",
271
288
  "type": "error"
272
289
  },
273
290
  {
@@ -278,7 +295,7 @@
278
295
  "type": "address"
279
296
  }
280
297
  ],
281
- "name": "ErrorNotOwner",
298
+ "name": "ErrorNftOwnableNotOwner",
282
299
  "type": "error"
283
300
  },
284
301
  {
@@ -295,33 +312,117 @@
295
312
  {
296
313
  "inputs": [
297
314
  {
298
- "internalType": "address",
299
- "name": "registryAddress",
300
- "type": "address"
315
+ "internalType": "NftId",
316
+ "name": "applicationNftId",
317
+ "type": "uint96"
318
+ },
319
+ {
320
+ "internalType": "NftId",
321
+ "name": "expectedProductNftId",
322
+ "type": "uint96"
323
+ },
324
+ {
325
+ "internalType": "NftId",
326
+ "name": "actualProductNftId",
327
+ "type": "uint96"
301
328
  }
302
329
  ],
303
- "name": "ErrorRegisterableNotRegistry",
330
+ "name": "ErrorPolicyServicePolicyProductMismatch",
304
331
  "type": "error"
305
332
  },
306
333
  {
307
- "inputs": [],
308
- "name": "ErrorRegistryAddressZero",
334
+ "inputs": [
335
+ {
336
+ "internalType": "NftId",
337
+ "name": "applicationNftId",
338
+ "type": "uint96"
339
+ }
340
+ ],
341
+ "name": "ErrorPolicyServicePolicyStateNotApplied",
309
342
  "type": "error"
310
343
  },
311
344
  {
312
345
  "inputs": [
313
346
  {
314
- "internalType": "address",
315
- "name": "registry",
316
- "type": "address"
347
+ "internalType": "NftId",
348
+ "name": "policyNftId",
349
+ "type": "uint96"
350
+ },
351
+ {
352
+ "internalType": "Amount",
353
+ "name": "premiumPaidAmount",
354
+ "type": "uint96"
355
+ }
356
+ ],
357
+ "name": "ErrorPolicyServicePremiumAlreadyPaid",
358
+ "type": "error"
359
+ },
360
+ {
361
+ "inputs": [
362
+ {
363
+ "internalType": "NftId",
364
+ "name": "policyNftId",
365
+ "type": "uint96"
366
+ },
367
+ {
368
+ "internalType": "Amount",
369
+ "name": "expectedPremiumAmount",
370
+ "type": "uint96"
371
+ },
372
+ {
373
+ "internalType": "Amount",
374
+ "name": "recalculatedPremiumAmount",
375
+ "type": "uint96"
376
+ }
377
+ ],
378
+ "name": "ErrorPolicyServicePremiumMismatch",
379
+ "type": "error"
380
+ },
381
+ {
382
+ "inputs": [
383
+ {
384
+ "internalType": "NftId",
385
+ "name": "policyNftId",
386
+ "type": "uint96"
387
+ },
388
+ {
389
+ "internalType": "Amount",
390
+ "name": "premiumAmount",
391
+ "type": "uint96"
392
+ },
393
+ {
394
+ "internalType": "Amount",
395
+ "name": "premiumPaidAmount",
396
+ "type": "uint96"
397
+ }
398
+ ],
399
+ "name": "ErrorPolicyServicePremiumNotFullyPaid",
400
+ "type": "error"
401
+ },
402
+ {
403
+ "inputs": [
404
+ {
405
+ "internalType": "NftId",
406
+ "name": "policyNftId",
407
+ "type": "uint96"
408
+ },
409
+ {
410
+ "internalType": "Amount",
411
+ "name": "expectedPremiumAmount",
412
+ "type": "uint96"
413
+ },
414
+ {
415
+ "internalType": "Amount",
416
+ "name": "transferredPremiumAmount",
417
+ "type": "uint96"
317
418
  }
318
419
  ],
319
- "name": "ErrorRegistryAlreadyInitialized",
420
+ "name": "ErrorPolicyServiceTransferredPremiumMismatch",
320
421
  "type": "error"
321
422
  },
322
423
  {
323
424
  "inputs": [],
324
- "name": "ErrorRegistryNotInitialized",
425
+ "name": "ErrorServiceNotImplemented",
325
426
  "type": "error"
326
427
  },
327
428
  {
@@ -334,6 +435,19 @@
334
435
  "name": "NotInitializing",
335
436
  "type": "error"
336
437
  },
438
+ {
439
+ "anonymous": false,
440
+ "inputs": [
441
+ {
442
+ "indexed": false,
443
+ "internalType": "address",
444
+ "name": "authority",
445
+ "type": "address"
446
+ }
447
+ ],
448
+ "name": "AuthorityUpdated",
449
+ "type": "event"
450
+ },
337
451
  {
338
452
  "anonymous": false,
339
453
  "inputs": [
@@ -361,29 +475,17 @@
361
475
  "type": "event"
362
476
  },
363
477
  {
364
- "anonymous": false,
365
- "inputs": [
366
- {
367
- "indexed": false,
368
- "internalType": "Version",
369
- "name": "version",
370
- "type": "uint24"
371
- },
372
- {
373
- "indexed": false,
374
- "internalType": "address",
375
- "name": "implementation",
376
- "type": "address"
377
- },
478
+ "inputs": [],
479
+ "name": "NFT_OWNABLE_STORAGE_LOCATION_V1",
480
+ "outputs": [
378
481
  {
379
- "indexed": false,
380
- "internalType": "address",
381
- "name": "activatedBy",
382
- "type": "address"
482
+ "internalType": "bytes32",
483
+ "name": "",
484
+ "type": "bytes32"
383
485
  }
384
486
  ],
385
- "name": "LogVersionableInitialized",
386
- "type": "event"
487
+ "stateMutability": "view",
488
+ "type": "function"
387
489
  },
388
490
  {
389
491
  "inputs": [],
@@ -417,64 +519,13 @@
417
519
  "type": "function"
418
520
  },
419
521
  {
420
- "inputs": [
421
- {
422
- "internalType": "RiskId",
423
- "name": "riskId",
424
- "type": "bytes8"
425
- },
426
- {
427
- "internalType": "uint256",
428
- "name": "sumInsuredAmount",
429
- "type": "uint256"
430
- },
431
- {
432
- "internalType": "uint256",
433
- "name": "lifetime",
434
- "type": "uint256"
435
- },
436
- {
437
- "internalType": "bytes",
438
- "name": "applicationData",
439
- "type": "bytes"
440
- },
441
- {
442
- "internalType": "NftId",
443
- "name": "bundleNftId",
444
- "type": "uint96"
445
- },
446
- {
447
- "internalType": "ReferralId",
448
- "name": "referralId",
449
- "type": "bytes8"
450
- }
451
- ],
452
- "name": "calculatePremium",
522
+ "inputs": [],
523
+ "name": "authority",
453
524
  "outputs": [
454
525
  {
455
- "internalType": "uint256",
456
- "name": "premiumAmount",
457
- "type": "uint256"
458
- },
459
- {
460
- "internalType": "uint256",
461
- "name": "productFeeAmount",
462
- "type": "uint256"
463
- },
464
- {
465
- "internalType": "uint256",
466
- "name": "poolFeeAmount",
467
- "type": "uint256"
468
- },
469
- {
470
- "internalType": "uint256",
471
- "name": "bundleFeeAmount",
472
- "type": "uint256"
473
- },
474
- {
475
- "internalType": "uint256",
476
- "name": "distributionFeeAmount",
477
- "type": "uint256"
526
+ "internalType": "address",
527
+ "name": "",
528
+ "type": "address"
478
529
  }
479
530
  ],
480
531
  "stateMutability": "view",
@@ -488,17 +539,17 @@
488
539
  "type": "uint256"
489
540
  },
490
541
  {
491
- "internalType": "uint256",
542
+ "internalType": "Amount",
492
543
  "name": "sumInsuredAmount",
493
- "type": "uint256"
544
+ "type": "uint96"
494
545
  }
495
546
  ],
496
547
  "name": "calculateRequiredCollateral",
497
548
  "outputs": [
498
549
  {
499
- "internalType": "uint256",
550
+ "internalType": "Amount",
500
551
  "name": "collateralAmount",
501
- "type": "uint256"
552
+ "type": "uint96"
502
553
  }
503
554
  ],
504
555
  "stateMutability": "pure",
@@ -521,16 +572,21 @@
521
572
  "inputs": [
522
573
  {
523
574
  "internalType": "NftId",
524
- "name": "policyNftId",
575
+ "name": "applicationNftId",
525
576
  "type": "uint96"
526
577
  },
578
+ {
579
+ "internalType": "bool",
580
+ "name": "requirePremiumPayment",
581
+ "type": "bool"
582
+ },
527
583
  {
528
584
  "internalType": "Timestamp",
529
585
  "name": "activateAt",
530
586
  "type": "uint40"
531
587
  }
532
588
  ],
533
- "name": "collectPremium",
589
+ "name": "collateralize",
534
590
  "outputs": [],
535
591
  "stateMutability": "nonpayable",
536
592
  "type": "function"
@@ -538,49 +594,44 @@
538
594
  {
539
595
  "inputs": [
540
596
  {
541
- "internalType": "address",
542
- "name": "applicationOwner",
543
- "type": "address"
544
- },
545
- {
546
- "internalType": "RiskId",
547
- "name": "riskId",
548
- "type": "bytes8"
549
- },
550
- {
551
- "internalType": "uint256",
552
- "name": "sumInsuredAmount",
553
- "type": "uint256"
597
+ "internalType": "NftId",
598
+ "name": "policyNftId",
599
+ "type": "uint96"
554
600
  },
555
601
  {
556
- "internalType": "uint256",
557
- "name": "lifetime",
558
- "type": "uint256"
559
- },
560
- {
561
- "internalType": "bytes",
562
- "name": "applicationData",
563
- "type": "bytes"
564
- },
602
+ "internalType": "Timestamp",
603
+ "name": "activateAt",
604
+ "type": "uint40"
605
+ }
606
+ ],
607
+ "name": "collectPremium",
608
+ "outputs": [],
609
+ "stateMutability": "nonpayable",
610
+ "type": "function"
611
+ },
612
+ {
613
+ "inputs": [
565
614
  {
566
615
  "internalType": "NftId",
567
- "name": "bundleNftId",
616
+ "name": "policyNftId",
568
617
  "type": "uint96"
569
- },
570
- {
571
- "internalType": "ReferralId",
572
- "name": "referralId",
573
- "type": "bytes8"
574
618
  }
575
619
  ],
576
- "name": "createApplication",
577
- "outputs": [
620
+ "name": "decline",
621
+ "outputs": [],
622
+ "stateMutability": "nonpayable",
623
+ "type": "function"
624
+ },
625
+ {
626
+ "inputs": [
578
627
  {
579
628
  "internalType": "NftId",
580
629
  "name": "policyNftId",
581
630
  "type": "uint96"
582
631
  }
583
632
  ],
633
+ "name": "expire",
634
+ "outputs": [],
584
635
  "stateMutability": "nonpayable",
585
636
  "type": "function"
586
637
  },
@@ -647,32 +698,6 @@
647
698
  "stateMutability": "view",
648
699
  "type": "function"
649
700
  },
650
- {
651
- "inputs": [],
652
- "name": "getInitialOwner",
653
- "outputs": [
654
- {
655
- "internalType": "address",
656
- "name": "",
657
- "type": "address"
658
- }
659
- ],
660
- "stateMutability": "view",
661
- "type": "function"
662
- },
663
- {
664
- "inputs": [],
665
- "name": "getInitializedVersion",
666
- "outputs": [
667
- {
668
- "internalType": "uint64",
669
- "name": "",
670
- "type": "uint64"
671
- }
672
- ],
673
- "stateMutability": "view",
674
- "type": "function"
675
- },
676
701
  {
677
702
  "inputs": [],
678
703
  "name": "getInstanceService",
@@ -686,19 +711,6 @@
686
711
  "stateMutability": "view",
687
712
  "type": "function"
688
713
  },
689
- {
690
- "inputs": [],
691
- "name": "getMajorVersion",
692
- "outputs": [
693
- {
694
- "internalType": "VersionPart",
695
- "name": "majorVersion",
696
- "type": "uint8"
697
- }
698
- ],
699
- "stateMutability": "view",
700
- "type": "function"
701
- },
702
714
  {
703
715
  "inputs": [],
704
716
  "name": "getNftId",
@@ -764,103 +776,101 @@
764
776
  "stateMutability": "pure",
765
777
  "type": "function"
766
778
  },
779
+ {
780
+ "inputs": [],
781
+ "name": "initializeERC165",
782
+ "outputs": [],
783
+ "stateMutability": "nonpayable",
784
+ "type": "function"
785
+ },
767
786
  {
768
787
  "inputs": [
769
788
  {
770
- "internalType": "uint256",
771
- "name": "idx",
772
- "type": "uint256"
773
- }
774
- ],
775
- "name": "getVersion",
776
- "outputs": [
789
+ "internalType": "address",
790
+ "name": "initialOwner",
791
+ "type": "address"
792
+ },
777
793
  {
778
- "internalType": "Version",
779
- "name": "",
780
- "type": "uint24"
794
+ "internalType": "address",
795
+ "name": "registryAddress",
796
+ "type": "address"
781
797
  }
782
798
  ],
783
- "stateMutability": "view",
799
+ "name": "initializeNftOwnable",
800
+ "outputs": [],
801
+ "stateMutability": "nonpayable",
784
802
  "type": "function"
785
803
  },
786
804
  {
787
- "inputs": [],
788
- "name": "getVersionCount",
789
- "outputs": [
805
+ "inputs": [
790
806
  {
791
- "internalType": "uint256",
792
- "name": "",
793
- "type": "uint256"
807
+ "internalType": "address",
808
+ "name": "registryAddress",
809
+ "type": "address"
810
+ },
811
+ {
812
+ "internalType": "NftId",
813
+ "name": "parentNftId",
814
+ "type": "uint96"
815
+ },
816
+ {
817
+ "internalType": "ObjectType",
818
+ "name": "objectType",
819
+ "type": "uint8"
820
+ },
821
+ {
822
+ "internalType": "bool",
823
+ "name": "isInterceptor",
824
+ "type": "bool"
825
+ },
826
+ {
827
+ "internalType": "address",
828
+ "name": "initialOwner",
829
+ "type": "address"
830
+ },
831
+ {
832
+ "internalType": "bytes",
833
+ "name": "registryData",
834
+ "type": "bytes"
794
835
  }
795
836
  ],
796
- "stateMutability": "view",
837
+ "name": "initializeRegisterable",
838
+ "outputs": [],
839
+ "stateMutability": "nonpayable",
797
840
  "type": "function"
798
841
  },
799
842
  {
800
843
  "inputs": [
801
844
  {
802
- "internalType": "Version",
803
- "name": "_version",
804
- "type": "uint24"
805
- }
806
- ],
807
- "name": "getVersionInfo",
808
- "outputs": [
809
- {
810
- "components": [
811
- {
812
- "internalType": "Version",
813
- "name": "version",
814
- "type": "uint24"
815
- },
816
- {
817
- "internalType": "address",
818
- "name": "implementation",
819
- "type": "address"
820
- },
821
- {
822
- "internalType": "address",
823
- "name": "activatedBy",
824
- "type": "address"
825
- },
826
- {
827
- "internalType": "Timestamp",
828
- "name": "activatedAt",
829
- "type": "uint40"
830
- },
831
- {
832
- "internalType": "Blocknumber",
833
- "name": "activatedIn",
834
- "type": "uint32"
835
- }
836
- ],
837
- "internalType": "struct IVersionable.VersionInfo",
838
- "name": "",
839
- "type": "tuple"
845
+ "internalType": "address",
846
+ "name": "registryAddress",
847
+ "type": "address"
840
848
  }
841
849
  ],
842
- "stateMutability": "view",
850
+ "name": "initializeRegistryLinked",
851
+ "outputs": [],
852
+ "stateMutability": "nonpayable",
843
853
  "type": "function"
844
854
  },
845
855
  {
846
856
  "inputs": [
847
857
  {
848
858
  "internalType": "address",
849
- "name": "implementation",
859
+ "name": "registry",
850
860
  "type": "address"
851
861
  },
852
862
  {
853
863
  "internalType": "address",
854
- "name": "activatedBy",
864
+ "name": "authority",
855
865
  "type": "address"
856
866
  },
857
867
  {
858
- "internalType": "bytes",
859
- "name": "data",
860
- "type": "bytes"
868
+ "internalType": "address",
869
+ "name": "initialOwner",
870
+ "type": "address"
861
871
  }
862
872
  ],
863
- "name": "initialize",
873
+ "name": "initializeService",
864
874
  "outputs": [],
865
875
  "stateMutability": "nonpayable",
866
876
  "type": "function"
@@ -868,17 +878,29 @@
868
878
  {
869
879
  "inputs": [
870
880
  {
871
- "internalType": "Version",
872
- "name": "_version",
873
- "type": "uint24"
881
+ "internalType": "address",
882
+ "name": "activatedBy",
883
+ "type": "address"
884
+ },
885
+ {
886
+ "internalType": "bytes",
887
+ "name": "data",
888
+ "type": "bytes"
874
889
  }
875
890
  ],
876
- "name": "isInitialized",
891
+ "name": "initializeVersionable",
892
+ "outputs": [],
893
+ "stateMutability": "nonpayable",
894
+ "type": "function"
895
+ },
896
+ {
897
+ "inputs": [],
898
+ "name": "isConsumingScheduledOp",
877
899
  "outputs": [
878
900
  {
879
- "internalType": "bool",
901
+ "internalType": "bytes4",
880
902
  "name": "",
881
- "type": "bool"
903
+ "type": "bytes4"
882
904
  }
883
905
  ],
884
906
  "stateMutability": "view",
@@ -894,12 +916,25 @@
894
916
  {
895
917
  "inputs": [
896
918
  {
897
- "internalType": "NftId",
898
- "name": "policyNftId",
899
- "type": "uint96"
919
+ "internalType": "bytes4",
920
+ "name": "interfaceId",
921
+ "type": "bytes4"
900
922
  }
901
923
  ],
902
- "name": "revoke",
924
+ "name": "registerInterface",
925
+ "outputs": [],
926
+ "stateMutability": "nonpayable",
927
+ "type": "function"
928
+ },
929
+ {
930
+ "inputs": [
931
+ {
932
+ "internalType": "address",
933
+ "name": "newAuthority",
934
+ "type": "address"
935
+ }
936
+ ],
937
+ "name": "setAuthority",
903
938
  "outputs": [],
904
939
  "stateMutability": "nonpayable",
905
940
  "type": "function"
@@ -925,87 +960,86 @@
925
960
  },
926
961
  {
927
962
  "inputs": [
928
- {
929
- "internalType": "NftId",
930
- "name": "policyNftId",
931
- "type": "uint96"
932
- },
933
- {
934
- "internalType": "bool",
935
- "name": "requirePremiumPayment",
936
- "type": "bool"
937
- },
938
- {
939
- "internalType": "Timestamp",
940
- "name": "activateAt",
941
- "type": "uint40"
942
- }
943
- ],
944
- "name": "underwrite",
945
- "outputs": [],
946
- "stateMutability": "nonpayable",
947
- "type": "function"
948
- },
949
- {
950
- "inputs": [
951
- {
952
- "internalType": "address",
953
- "name": "implementation",
954
- "type": "address"
955
- },
956
- {
957
- "internalType": "address",
958
- "name": "activatedBy",
959
- "type": "address"
960
- },
961
963
  {
962
964
  "internalType": "bytes",
963
965
  "name": "data",
964
966
  "type": "bytes"
965
967
  }
966
968
  ],
967
- "name": "upgrade",
969
+ "name": "upgradeVersionable",
968
970
  "outputs": [],
969
971
  "stateMutability": "nonpayable",
970
972
  "type": "function"
971
973
  }
972
974
  ],
973
- "bytecode": "0x60806040523480156200001157600080fd5b50620000546301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b600280546001600160a01b031916331790556200007062000076565b6200012a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000c75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001275780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6153c4806200013a6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063893d20e8116100f9578063bbfbbfba11610097578063cc9fc59a11610071578063cc9fc59a1461054a578063cde749f414610552578063cf7a1d771461055a578063fb2cb1011461056d57600080fd5b8063bbfbbfba1461051c578063c2c749871461052f578063caf4e3d41461054257600080fd5b8063a745e3df116100d3578063a745e3df146104c1578063b3c65015146104d4578063b68d1809146104f4578063b88da7591461050957600080fd5b8063893d20e814610457578063946dfcfe1461045f5780639cdaa7f91461048657600080fd5b80634d5e16a9116101665780635fd1a5f5116101405780635fd1a5f5146103f2578063603ccaad14610405578063630361f614610418578063644c45e01461042b57600080fd5b80634d5e16a9146103a75780634f421333146103ba5780635ab1bd53146103cd57600080fd5b80630fec111c116101a25780630fec111c1461023c578063138461e0146102515780631eff4b22146102595780634d459c901461028e57600080fd5b806301ffc9a7146101c95780630aaba8e81461020b5780630d8e6e2c14610220575b600080fd5b6101f66101d7366004614284565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b61021e6102193660046142c3565b61057e565b005b610228610bbc565b60405162ffffff9091168152602001610202565b610244610c46565b6040516102029190614330565b61021e610dec565b6102807f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610202565b61034a61029c3660046143c4565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260008051602061536f83398151915262ffffff92831660009081526020918252604090819020815160a0810183528154958616815263010000009095046001600160a01b03908116938601939093526001015491821690840152600160a01b810464ffffffffff166060840152600160c81b900463ffffffff1660808301525090565b60408051825162ffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015164ffffffffff169082015260809182015163ffffffff169181019190915260a001610202565b61021e6103b53660046143f4565b611009565b6101f66103c83660046143c4565b61127b565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610202565b61028061040036600461442d565b61132e565b61021e6104133660046142c3565b611437565b61021e61042636600461445d565b61148c565b600154600160a01b90046001600160601b03165b6040516001600160601b039091168152602001610202565b6103da6119fe565b7f4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed90154610280565b610499610494366004614612565b611b17565b604080519586526020860194909452928401919091526060830152608082015260a001610202565b61021e6104cf3660046146af565b611bf5565b6104dc611d4f565b6040516001600160401b039091168152602001610202565b60d25b60405160ff9091168152602001610202565b610228610517366004614710565b611d70565b61021e61052a3660046143f4565b611dc1565b61043f61053d366004614729565b612135565b6103da6123ed565b6103da612484565b6104f76124ae565b61021e6105683660046146af565b612531565b6002546001600160a01b03166103da565b600061058a606e612639565b9150506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f191906147c5565b60405163bd7d9d8560e01b81526001600160601b03851660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa158015610644573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066c919081019061485f565b6101a081015160405163790a38ad60e01b815264ffffffffff909116600482015290915073__$d53880c81dc91c20799140d711e5ab8718$__9063790a38ad90602401602060405180830381865af41580156106cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f091906149de565b1561071e576040516308cbe08b60e21b81526001600160601b03851660048201526024015b60405180910390fd5b604051639096a1f360e01b81526001600160601b03851660048201526000906001600160a01b03841690639096a1f390602401602060405180830381865afa15801561076e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107929190614a15565b905060ff81166064146107cc57604051634de91cf360e11b81526001600160601b038616600482015260ff82166024820152604401610715565b6101e0820151604051638d38cd4b60e01b815264ffffffffff909116600482015273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401602060405180830381865af4158015610829573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084d91906149de565b1561087657604051634b80547760e11b81526001600160601b0386166004820152602401610715565b8160c001518260a00151146108c05760a082015160c0830151604051632b14368360e11b81526001600160601b038816600482015260248101929092526044820152606401610715565b61016082015161ffff16156109045761016082015160405163a5bb07ed60e01b81526001600160601b038716600482015261ffff9091166024820152604401610715565b73__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af415801561094d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109719190614a32565b6101c0830151604051634a19ad8d60e11b815264ffffffffff92831660048201529116602482015273__$d53880c81dc91c20799140d711e5ab8718$__906394335b1a90604401602060405180830381865af41580156109d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f991906149de565b8015610a0d57508160800151826101800151105b15610a4a576101c0820151604051630e79f6e160e21b81526001600160601b038716600482015264ffffffffff9091166024820152604401610715565b73__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015610a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab79190614a32565b64ffffffffff166101e083015260048054602084015160808501516040516303c5c06160e41b81526001600160a01b03898116958201959095526001600160601b03808b16602483015290921660448301526064820152911690633c5c061090608401600060405180830381600087803b158015610b3457600080fd5b505af1158015610b48573d6000803e3d6000fd5b50505050836001600160a01b0316639a960d528684610b6560c890565b6040518463ffffffff1660e01b8152600401610b8393929190614b7e565b600060405180830381600087803b158015610b9d57600080fd5b505af1158015610bb1573d6000803e3d6000fd5b505050505050505050565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af4158015610c1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c419190614bb3565b905090565b610c4e6141c8565b604080516080810182527f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b038116835260ff600160601b820481166020850152600160681b909104161515928201929092527f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3018054600093916060840191610cde90614bd0565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0a90614bd0565b8015610d575780601f10610d2c57610100808354040283529160200191610d57565b820191906000526020600020905b815481529060010190602001808311610d3a57829003601f168201915b50505050508152505090506040518060e00160405280610d75600090565b6001600160601b0316815260200182600001516001600160601b03168152602001826020015160ff168152602001826040015115158152602001306001600160a01b03168152602001610dd06002546001600160a01b031690565b6001600160a01b03168152602001826060015181525091505090565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610e4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7291906149de565b15610eb4576001546040516316322c0f60e31b81526001600160a01b0382166004820152600160a01b9091046001600160601b03166024820152604401610715565b6001546001600160a01b0316610edd5760405163cf29926160e01b815260040160405180910390fd5b60015460405163c3c5a54760e01b81523060048201819052916001600160a01b03169063c3c5a54790602401602060405180830381865afa158015610f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4a91906149de565b610f72576040516372657a5160e01b81526001600160a01b0382166004820152602401610715565b600154604051636939560f60e11b81526001600160a01b0383811660048301529091169063d272ac1e90602401602060405180830381865afa158015610fbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe09190614c0a565b600160146101000a8154816001600160601b0302191690836001600160601b0316021790555050565b6000611015606e612639565b9150506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611058573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107c91906147c5565b60405163bd7d9d8560e01b81526001600160601b03861660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110f7919081019061485f565b6101a081015160405163790a38ad60e01b815264ffffffffff909116600482015290915073__$d53880c81dc91c20799140d711e5ab8718$__9063790a38ad90602401602060405180830381865af4158015611157573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117b91906149de565b6111c75760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a5052532d3032303a414c52454144595f414354495641544544006044820152606401610715565b64ffffffffff84166101a0820181905260e0820151604051631ded81af60e31b81526004810192909252602482015273__$d53880c81dc91c20799140d711e5ab8718$__9063ef6c0d7890604401602060405180830381865af4158015611232573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112569190614a32565b64ffffffffff166101c08201526001600160a01b038316639a960d5286836064610b65565b60008060008051602061536f83398151915262ffffff84166000908152602091909152604090819020600101549051631bbffab160e21b8152600160c81b90910463ffffffff16600482015273__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af4158015611303573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113279190614c27565b1192915050565b6040516322f5db0f60e11b815260048101829052600090819073__$5ac3274b8cf1e01ea223bf093142af05b0$__906345ebb61e90602401602060405180830381865af4158015611383573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a79190614c27565b905060006113b585836128b0565b604051632255341b60e11b81526004810182905290915073__$5ac3274b8cf1e01ea223bf093142af05b0$__906344aa683690602401602060405180830381865af4158015611408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142c9190614c27565b925050505b92915050565b60405162461bcd60e51b815260206004820152602160248201527f4552524f523a5052532d3233343a4e4f545f5945545f494d504c454d454e54456044820152601160fa1b6064820152608401610715565b50565b600080611499606e612639565b915091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150191906147c5565b835160405163bd7d9d8560e01b81526001600160601b0389166004820152919250906000906001600160a01b0384169063bd7d9d8590602401600060405180830381865afa158015611557573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261157f919081019061485f565b80519091506001600160601b038381169116146115de5760405162461bcd60e51b815260206004820152601760248201527f504f4c4943595f50524f445543545f4d49534d415443480000000000000000006044820152606401610715565b604051639096a1f360e01b81526001600160601b038916600482015261165c906001600160a01b03851690639096a1f390602401602060405180830381865afa15801561162f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116539190614a15565b60ff16600a1490565b6116a85760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a5052532d3032313a53544154455f4e4f545f4150504c494544006044820152606401610715565b60006116b2614206565b60405163242bdc1960e21b81526001600160601b0385166004820152600090819081906001600160a01b038916906390af70649060240161024060405180830381865afa158015611707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172b9190614c99565b9050611735614206565b6117418a8a89856128cc565b91975090945061175a92508a9150869050858f86612a4f565b9250602864ffffffffff8b161561180d57606464ffffffffff8c166101a0880181905260e0880151604051631ded81af60e31b81526004810192909252602482015290915073__$d53880c81dc91c20799140d711e5ab8718$__9063ef6c0d7890604401602060405180830381865af41580156117db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ff9190614a32565b64ffffffffff166101c08701525b8b1561184357611827898b600001518f8960a00151612a76565b91508560a001518660c00181815161183f9190614da6565b9052505b600460009054906101000a90046001600160a01b03166001600160a01b03166332e6f9228a8f8887876040518663ffffffff1660e01b81526004016118c19594939291906001600160a01b039590951685526001600160601b0393841660208601529190921660408401526060830191909152608082015260a00190565b600060405180830381600087803b1580156118db57600080fd5b505af11580156118ef573d6000803e3d6000fd5b50505050886001600160a01b0316639a960d528e88846040518463ffffffff1660e01b815260040161192393929190614b7e565b600060405180830381600087803b15801561193d57600080fd5b505af1158015611951573d6000803e3d6000fd5b505085516040516355e343a960e01b81526001600160601b039091166004820152600092506001600160a01b038b1691506355e343a99060240161018060405180830381865afa1580156119a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119cd9190614db9565b90508060e00151156119ee576119ee85600001518f8988604001518861302e565b5050505050505050505050505050565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015611a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8791906149de565b15611b0757600154604051631c5da14d60e11b8152600160a01b82046001600160601b031660048201526001600160a01b03909116906338bb429a90602401602060405180830381865afa158015611ae3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4191906147c5565b506002546001600160a01b031690565b600080600080600080611b28613133565b90506000816001600160a01b0316635e78426b8d8f8e8e6040518563ffffffff1660e01b8152600401611b5e9493929190614e6e565b602060405180830381865afa158015611b7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9f9190614c27565b9050611bad81838b8b613152565b92985090965094509250611bc18682614da6565b9650611bcd8486614da6565b611bd79088614da6565b9650611be38388614da6565b96505050965096509650965096915050565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c611c17610bbc565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015611c57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7b9190614ea9565b60008051602061534f8339815191528054600160401b900460ff1680611cae575080546001600160401b03808416911610155b15611ccc5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611cf785856137eb565b611d0083613a8a565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15050505050565b6000610c4160008051602061534f833981519152546001600160401b031690565b600060008051602061536f8339815191526001018281548110611d9557611d95614ed2565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b600080611dce606e612639565b915091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3691906147c5565b60405163bd7d9d8560e01b81526001600160601b03871660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa158015611e89573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611eb1919081019061485f565b90508060a001518160c0015103611ef35760c081015160405163038a855760e51b81526001600160601b03881660048201526024810191909152604401610715565b60008160c001518260a00151611f099190614ee8565b90506000611f1d8587600001518a85612a76565b9050818360c001818151611f319190614da6565b905250600480546020850151604051639babe3bf60e01b81526001600160a01b03898116948201949094526001600160601b03909116602482015260448101849052911690639babe3bf90606401600060405180830381600087803b158015611f9957600080fd5b505af1158015611fad573d6000803e3d6000fd5b50505050846001600160a01b0316639a960d528985611fca60ff90565b6040518463ffffffff1660e01b8152600401611fe893929190614b7e565b600060405180830381600087803b15801561200257600080fd5b505af1158015612016573d6000803e3d6000fd5b5050604051638d38cd4b60e01b815264ffffffffff8a16600482015273__$d53880c81dc91c20799140d711e5ab8718$__9250638d38cd4b9150602401602060405180830381865af4158015612070573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209491906149de565b801561211c57506101a083015160405163790a38ad60e01b815264ffffffffff909116600482015273__$d53880c81dc91c20799140d711e5ab8718$__9063790a38ad90602401602060405180830381865af41580156120f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211c91906149de565b1561212b5761212b8888611009565b5050505050505050565b60008080612143606e612639565b9150915061214f6123ed565b6001600160a01b0316635c992fed6040518060e00160405280612170600090565b6001600160601b039081168252865116602082015260400160d260ff16815260200160001515815260200160006001600160a01b031681526020018d6001600160a01b03168152602001604051806020016040528060008152508152506040518263ffffffff1660e01b81526004016121e99190614330565b6020604051808303816000875af1158015612208573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222c9190614c0a565b9250600061223e8a8a8a8a8a8a611b17565b505050509050600060405180610200016040528085600001516001600160601b03168152602001886001600160601b03168152602001876001600160c01b03191681526020018c6001600160c01b03191681526020018b8152602001838152602001600081526020018a8152602001898152602001604051806020016040528060008152508152602001600061ffff168152602001600061ffff168152602001600081526020016122ed600090565b64ffffffffff168152600060208201819052604091820152516202f23560ee1b81529091506001600160a01b0384169063bc8d4000906123339088908590600401614efb565b600060405180830381600087803b15801561234d57600080fd5b505af1158015612361573d6000803e3d6000fd5b50505050826001600160a01b0316635d4345cc8661237d600a90565b6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401600060405180830381600087803b1580156123c657600080fd5b505af11580156123da573d6000803e3d6000fd5b5050505050505050979650505050505050565b6000806124026001546001600160a01b031690565b6001600160a01b031663d39e604360285b61241b6124ae565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015612460573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143191906147c5565b6000806124996001546001600160a01b031690565b6001600160a01b031663d39e60436046612413565b60006124b8610bbc565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af415801561250d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c419190614a15565b60008051602061534f8339815191528054600160401b810460ff1615906001600160401b03166000811580156125645750825b90506000826001600160401b031660011480156125805750303b155b90508115801561258e575080155b156125ac5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156125d657845460ff60401b1916600160401b1785555b6125e088886137eb565b6125ea8787613a92565b831561212b57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050505050565b6126416141c8565b6000806126566001546001600160a01b031690565b6040516308b09a5f60e41b81523360048201529091506001600160a01b03821690638b09a5f090602401600060405180830381865afa15801561269d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126c59190810190614f1d565b92506126db83604001518560ff90811691161490565b61271d5760405162461bcd60e51b815260206004820152601360248201527213d0929150d517d516541157d2539590531251606a1b6044820152606401610715565b60208301516040516305247a1760e51b81526001600160601b0390911660048201526000906001600160a01b0383169063a48f42e090602401600060405180830381865afa158015612773573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261279b9190810190614f1d565b6080015190508092506000836001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280891906147c5565b6080860151604051629b7b3560e61b81526001600160a01b0391821660048201529192508216906326decd4090602401602060405180830381865afa158015612855573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287991906149de565b156128a857608085015160405163d53987e560e01b81526001600160a01b039091166004820152602401610715565b505050915091565b60006128c58383670de0b6b3a7640000613d00565b9392505050565b60006128d6614206565b6020840151604051634793b4ab60e01b81526001600160601b03821660048201529092506000906001600160a01b03871690634793b4ab90602401600060405180830381865afa15801561292e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526129569190810190614fef565b805160608601519193506001600160601b039081169116146129b35760405162461bcd60e51b81526020600482015260166024820152750a09e989286b2be84aa9c88988abe9a92a69a82a886960531b6044820152606401610715565b60608401516040516355e343a960e01b81526001600160601b03821660048201526000906001600160a01b038916906355e343a99060240161018060405180830381865afa158015612a09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2d9190614db9565b9050612a418160400151886080015161132e565b925050509450945094915050565b612a57614206565b8184608001818151612a699190614da6565b9052509295945050505050565b60008115613026576000856001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae291906147c5565b60405163242bdc1960e21b81526001600160601b03871660048201526001600160a01b0391909116906390af70649060240161024060405180830381865afa158015612b32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b569190614c99565b60208101519091506000612b726001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03881660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612bc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be591906147c5565b90506000886001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c4b91906147c5565b60608501516040516355e343a960e01b81526001600160601b0390911660048201526001600160a01b0391909116906355e343a99060240161018060405180830381865afa158015612ca1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc59190614db9565b61010081015160a08601516040516346f0526160e11b8152899850929350909173__$a23651848365a6a5ca15f07b4331037f48$__90638de0a4c290612d0f9084906004016150c0565b602060405180830381865af4158015612d2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5091906149de565b15612dbc576040516317d5759960e31b81526001600160a01b0386169063beabacc890612d8590879086908d906004016150d7565b600060405180830381600087803b158015612d9f57600080fd5b505af1158015612db3573d6000803e3d6000fd5b5050505061301f565b60a086015160405163012ebd8360e21b815281516004820152602090910151602482015260448101889052600090819073__$a23651848365a6a5ca15f07b4331037f48$__906304baf60c906064016040805180830381865af4158015612e27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e4b91906150fb565b91509150600088610160015190508a886001600160a01b03166321df0da76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebc91906147c5565b604051636eb1769f60e11b81526001600160a01b038a811660048301528b81166024830152919091169063dd62ed3e90604401602060405180830381865afa158015612f0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f309190614c27565b1015612f555786888c604051636d675c4360e01b8152600401610715939291906150d7565b6040516317d5759960e31b81526001600160a01b0389169063beabacc890612f85908a90859088906004016150d7565b600060405180830381600087803b158015612f9f57600080fd5b505af1158015612fb3573d6000803e3d6000fd5b50506040516317d5759960e31b81526001600160a01b038b16925063beabacc89150612fe7908a90899087906004016150d7565b600060405180830381600087803b15801561300157600080fd5b505af1158015613015573d6000803e3d6000fd5b50939b5050505050505b5050505050505b949350505050565b60006130426001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03881660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa158015613091573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130b99190810190614f1d565b608001516101008501516040516332f7fe0d60e11b815291925082916001600160a01b038316916365effc1a916130f8918a918990899060040161511f565b600060405180830381600087803b15801561311257600080fd5b505af1158015613126573d6000803e3d6000fd5b5050505050505050505050565b600061313d6141c8565b613147606e612639565b506080015192915050565b600080600080600080886001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015613199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131bd91906147c5565b9050806001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322191906147c5565b9150506000886001600160a01b0316631bdd6b766040518163ffffffff1660e01b8152600401602060405180830381865afa158015613264573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132889190614c0a565b604051634793b4ab60e01b81526001600160601b038a1660048201529091506000906001600160a01b03841690634793b4ab90602401600060405180830381865afa1580156132db573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133039190810190614fef565b80519091506001600160601b0383811691161461336d5760405162461bcd60e51b815260206004820152602260248201527f4552524f523a5052532d3033353a42554e444c455f504f4f4c5f4d49534d4154604482015261086960f31b6064820152608401610715565b6000836001600160a01b03166390af70648c6001600160a01b03166251884a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133df9190614c0a565b6040516001600160e01b031960e084901b1681526001600160601b03909116600482015260240161024060405180830381865afa158015613424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134489190614c99565b60a081015160405163012ebd8360e21b8152815160048201526020909101516024820152604481018e905290915073__$a23651848365a6a5ca15f07b4331037f48$__906304baf60c906064016040805180830381865af41580156134b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134d591906150fb565b506040516355e343a960e01b81526001600160601b0385166004820152909850600091506001600160a01b038516906355e343a99060240161018060405180830381865afa15801561352b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061354f9190614db9565b606081015160405163012ebd8360e21b8152815160048201526020909101516024820152604481018e905290915073__$a23651848365a6a5ca15f07b4331037f48$__906304baf60c906064016040805180830381865af41580156135b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135dc91906150fb565b50809750505060008a6001600160a01b031663db6dcc956040518163ffffffff1660e01b8152600401602060405180830381865afa158015613622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136469190614c0a565b604051639ad69c6760e01b81526001600160601b03821660048201529091506000906001600160a01b03861690639ad69c679060240160c060405180830381865afa158015613699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136bd9190615165565b604080820151905163012ebd8360e21b8152815160048201526020909101516024820152604481018f905290915073__$a23651848365a6a5ca15f07b4331037f48$__906304baf60c906064016040805180830381865af4158015613726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061374a91906150fb565b5060208481015160405163012ebd8360e21b8152815160048201529101516024820152604481018f905290965073__$a23651848365a6a5ca15f07b4331037f48$__92506304baf60c91506064016040805180830381865af41580156137b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137d891906150fb565b5080955050505050945094509450949050565b6137f3613de9565b60008051602061536f833981519152600061382360008051602061534f833981519152546001600160401b031690565b9050600061382f610bbc565b9050816001600160401b031660010361385c5760028301805462ffffff191662ffffff83161790556138aa565b600283015462ffffff908116908216116138aa5760405162461bcd60e51b815260206004820152600f60248201526e24a72b20a624a2102b22a929a4a7a760891b6044820152606401610715565b6001808401805491820181556000908152602090819020600a808404909101805462ffffff808716600394909606939093026101000a858102930219169190911790556040805160a0810182529283526001600160a01b038089168484015287168382015280516356db0c1960e11b81529051606084019273__$d53880c81dc91c20799140d711e5ab8718$__9263adb6183292600480830193928290030181865af415801561395e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139829190614a32565b64ffffffffff1681526020014363ffffffff90811690915262ffffff8084166000908152602087815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c81b0263ffffffff60c81b1964ffffffffff909716600160a01b026001600160c81b031990961692909416919091179390931793909316179055517fad0a0fc10465a8dd9da3ad5f43e1a7fff4b4578551c76f0ae8deb844f0d0bf6890611d409083908890889062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b6101c4613de9565b60008051602061534f8339815191528054600160401b810460ff1615906001600160401b0316600081158015613ac55750825b90506000826001600160401b03166001148015613ae15750303b155b905081158015613aef575080155b15613b0d5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315613b3757845460ff60401b1916600160401b1785555b60008087806020019051810190613b4e91906151fb565b9092509050613b5d828a613e22565b6001546001600160a01b031663d39e6043608c613b786124ae565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015613bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613be191906147c5565b600380546001600160a01b0319166001600160a01b039283161790556001541663d39e6043613c0e60dc90565b613c166124ae565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015613c5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c7f91906147c5565b600480546001600160a01b0319166001600160a01b0392909216919091179055613caf63fefde12b60e01b613e8d565b50508315613cf757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6000808060001985870985870292508281108382030391505080600003613d3a57838281613d3057613d3061522a565b04925050506128c5565b808411613d815760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401610715565b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b60008051602061534f83398151915254600160401b900460ff16613e2057604051631afcd79f60e31b815260040160405180910390fd5b565b600060d2613e2e6124ae565b6040805160ff9384166020820152929091169082015260600160405160208183030381529060405290506000613e6384613eb2565b90506000613e768583603c848888613f1d565b613e86637b6a51fd60e01b613e8d565b5050505050565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b604051636939560f60e11b81526001600160a01b0382166004820181905260009163d272ac1e90602401602060405180830381865afa158015613ef9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114319190614c0a565b613f5e6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b613f688287613fe9565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b86151502178155905060018101613fd8838261528f565b50613cf76303fb044760e21b613e8d565b6001600160a01b03821661403f5760405162461bcd60e51b815260206004820152601e60248201527f4e66744f776e61626c653a20696e697469616c206f776e6572206973203000006044820152606401610715565b600280546001600160a01b0319166001600160a01b03841617905561406381614067565b5050565b6001546001600160a01b0316156140a05760015460405163fcdbf2d960e01b81526001600160a01b039091166004820152602401610715565b6001600160a01b0381166140c75760405163f5c4d07d60e01b815260040160405180910390fd5b806001600160a01b03163b6000036140fd5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610715565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152630114a7d560e01b60048201526301ffc9a790602401602060405180830381865afa925050508015614177575060408051601f3d908101601f19168201909252614174918101906149de565b60015b61419f5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610715565b806140635760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610715565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b60405180610120016040528060006001600160601b0316815260200161423f604051806040016040528060008152602001600081525090565b81526020016060815260200160008152602001600081526020016000815260200160008152602001600064ffffffffff168152602001600064ffffffffff1681525090565b60006020828403121561429657600080fd5b81356001600160e01b0319811681146128c557600080fd5b6001600160601b038116811461148957600080fd5b6000602082840312156142d557600080fd5b81356128c5816142ae565b60005b838110156142fb5781810151838201526020016142e3565b50506000910152565b6000815180845261431c8160208601602086016142e0565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a083015161439960c08401826001600160a01b03169052565b5060c083015160e080840152613026610100840182614304565b62ffffff8116811461148957600080fd5b6000602082840312156143d657600080fd5b81356128c5816143b3565b64ffffffffff8116811461148957600080fd5b6000806040838503121561440757600080fd5b8235614412816142ae565b91506020830135614422816143e1565b809150509250929050565b6000806040838503121561444057600080fd5b50508035926020909101359150565b801515811461148957600080fd5b60008060006060848603121561447257600080fd5b833561447d816142ae565b9250602084013561448d8161444f565b9150604084013561449d816143e1565b809150509250925092565b6001600160c01b03198116811461148957600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161020081016001600160401b03811182821017156144f7576144f76144be565b60405290565b60405161018081016001600160401b03811182821017156144f7576144f76144be565b60405161012081016001600160401b03811182821017156144f7576144f76144be565b60405160e081016001600160401b03811182821017156144f7576144f76144be565b604051601f8201601f191681016001600160401b038111828210171561458d5761458d6144be565b604052919050565b60006001600160401b038211156145ae576145ae6144be565b50601f01601f191660200190565b600082601f8301126145cd57600080fd5b81356145e06145db82614595565b614565565b8181528460208386010111156145f557600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c0878903121561462b57600080fd5b8635614636816144a8565b9550602087013594506040870135935060608701356001600160401b0381111561465f57600080fd5b61466b89828a016145bc565b935050608087013561467c816142ae565b915060a087013561468c816144a8565b809150509295509295509295565b6001600160a01b038116811461148957600080fd5b6000806000606084860312156146c457600080fd5b83356146cf8161469a565b925060208401356146df8161469a565b915060408401356001600160401b038111156146fa57600080fd5b614706868287016145bc565b9150509250925092565b60006020828403121561472257600080fd5b5035919050565b600080600080600080600060e0888a03121561474457600080fd5b873561474f8161469a565b9650602088013561475f816144a8565b9550604088013594506060880135935060808801356001600160401b0381111561478857600080fd5b6147948a828b016145bc565b93505060a08801356147a5816142ae565b915060c08801356147b5816144a8565b8091505092959891949750929550565b6000602082840312156147d757600080fd5b81516128c58161469a565b80516147ed816142ae565b919050565b80516147ed816144a8565b600082601f83011261480e57600080fd5b815161481c6145db82614595565b81815284602083860101111561483157600080fd5b6130268260208301602087016142e0565b805161ffff811681146147ed57600080fd5b80516147ed816143e1565b60006020828403121561487157600080fd5b81516001600160401b038082111561488857600080fd5b90830190610200828603121561489d57600080fd5b6148a56144d4565b6148ae836147e2565b81526148bc602084016147e2565b60208201526148cd604084016147f2565b60408201526148de606084016147f2565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e0820152610100808401518381111561491f57600080fd5b61492b888287016147fd565b828401525050610120808401518381111561494557600080fd5b614951888287016147fd565b8284015250506101409150614967828401614842565b82820152610160915061497b828401614842565b82820152610180915081830151828201526101a0915061499c828401614854565b828201526101c091506149b0828401614854565b828201526101e091506149c4828401614854565b91810191909152949350505050565b80516147ed8161444f565b6000602082840312156149f057600080fd5b81516128c58161444f565b60ff8116811461148957600080fd5b80516147ed816149fb565b600060208284031215614a2757600080fd5b81516128c5816149fb565b600060208284031215614a4457600080fd5b81516128c5816143e1565b80516001600160601b0316825260006102006020830151614a7b60208601826001600160601b03169052565b506040830151614a9760408601826001600160c01b0319169052565b506060830151614ab360608601826001600160c01b0319169052565b506080830151608085015260a083015160a085015260c083015160c085015260e083015160e0850152610100808401518282870152614af483870182614304565b925050506101208084015185830382870152614b108382614304565b9250505061014080840151614b2a8287018261ffff169052565b50506101608381015161ffff169085015261018080840151908501526101a08084015164ffffffffff908116918601919091526101c0808501518216908601526101e0938401511692909301919091525090565b6001600160601b0384168152606060208201526000614ba06060830185614a4f565b905060ff83166040830152949350505050565b600060208284031215614bc557600080fd5b81516128c5816143b3565b600181811c90821680614be457607f821691505b602082108103614c0457634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215614c1c57600080fd5b81516128c5816142ae565b600060208284031215614c3957600080fd5b5051919050565b80516147ed8161469a565b600060408284031215614c5d57600080fd5b604051604081018181106001600160401b0382111715614c7f57614c7f6144be565b604052825181526020928301519281019290925250919050565b60006102408284031215614cac57600080fd5b614cb46144fd565b614cbd83614c40565b8152614ccb60208401614c40565b6020820152614cdc604084016147e2565b6040820152614ced606084016147e2565b6060820152614cff8460808501614c4b565b6080820152614d118460c08501614c4b565b60a0820152610100614d2585828601614c4b565b60c0830152610140614d3986828701614c4b565b60e0840152614d4c866101808701614c4b565b82840152614d5e866101c08701614c4b565b610120840152614d7161020086016149d3565b9083015250614d836102208401614c40565b6101608201529392505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561143157611431614d90565b60006101808284031215614dcc57600080fd5b614dd4614520565b614ddd836147e2565b8152614deb60208401614c40565b602082015260408301516040820152614e078460608501614c4b565b6060820152614e198460a08501614c4b565b6080820152614e2b8460e08501614c4b565b60a0820152614e3d61012084016149d3565b60c0820152614e4f61014084016149d3565b60e0820152614e616101608401614c40565b6101008201529392505050565b8481526001600160401b0360c01b84166020820152826040820152608060608201526000614e9f6080830184614304565b9695505050505050565b600060208284031215614ebb57600080fd5b81516001600160401b03811681146128c557600080fd5b634e487b7160e01b600052603260045260246000fd5b8181038181111561143157611431614d90565b6001600160601b03831681526040602082015260006130266040830184614a4f565b600060208284031215614f2f57600080fd5b81516001600160401b0380821115614f4657600080fd5b9083019060e08286031215614f5a57600080fd5b614f62614543565b614f6b836147e2565b8152614f79602084016147e2565b6020820152614f8a60408401614a0a565b6040820152614f9b606084016149d3565b6060820152614fac60808401614c40565b6080820152614fbd60a08401614c40565b60a082015260c083015182811115614fd457600080fd5b614fe0878286016147fd565b60c08301525095945050505050565b60006020828403121561500157600080fd5b81516001600160401b038082111561501857600080fd5b90830190610140828603121561502d57600080fd5b615035614520565b61503e836147e2565b815261504d8660208501614c4b565b602082015260608301518281111561506457600080fd5b615070878286016147fd565b6040830152506080830151606082015260a0830151608082015260c083015160a082015260e083015160c082015261010091506150ae828401614854565b60e08201526149c46101208401614854565b815181526020808301519082015260408101611431565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000806040838503121561510e57600080fd5b505080516020909101519092909150565b6001600160601b03851681526080602082015260006151416080830186614304565b82810360408401526151538186614304565b91505082606083015295945050505050565b600060c0828403121561517757600080fd5b60405160a081018181106001600160401b0382111715615199576151996144be565b60405282516151a7816142ae565b815260208301516151b78161469a565b60208201526151c98460408501614c4b565b604082015260808301516151dc8161444f565b606082015260a08301516151ef8161469a565b60808201529392505050565b6000806040838503121561520e57600080fd5b82516152198161469a565b60208401519092506144228161469a565b634e487b7160e01b600052601260045260246000fd5b601f82111561528a57600081815260208120601f850160051c810160208610156152675750805b601f850160051c820191505b8181101561528657828155600101615273565b5050505b505050565b81516001600160401b038111156152a8576152a86144be565b6152bc816152b68454614bd0565b84615240565b602080601f8311600181146152f157600084156152d95750858301515b600019600386901b1c1916600185901b178555615286565b600085815260208120601f198616915b8281101561532057888601518255948401946001909101908401615301565b508582101561533e5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a004f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900a2646970667358221220e54c41c624e794b25a3eea084538e5a4d51b15bcc5cdf1508135982b108db2ef64736f6c63430008140033",
974
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101c45760003560e01c8063893d20e8116100f9578063bbfbbfba11610097578063cc9fc59a11610071578063cc9fc59a1461054a578063cde749f414610552578063cf7a1d771461055a578063fb2cb1011461056d57600080fd5b8063bbfbbfba1461051c578063c2c749871461052f578063caf4e3d41461054257600080fd5b8063a745e3df116100d3578063a745e3df146104c1578063b3c65015146104d4578063b68d1809146104f4578063b88da7591461050957600080fd5b8063893d20e814610457578063946dfcfe1461045f5780639cdaa7f91461048657600080fd5b80634d5e16a9116101665780635fd1a5f5116101405780635fd1a5f5146103f2578063603ccaad14610405578063630361f614610418578063644c45e01461042b57600080fd5b80634d5e16a9146103a75780634f421333146103ba5780635ab1bd53146103cd57600080fd5b80630fec111c116101a25780630fec111c1461023c578063138461e0146102515780631eff4b22146102595780634d459c901461028e57600080fd5b806301ffc9a7146101c95780630aaba8e81461020b5780630d8e6e2c14610220575b600080fd5b6101f66101d7366004614284565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b61021e6102193660046142c3565b61057e565b005b610228610bbc565b60405162ffffff9091168152602001610202565b610244610c46565b6040516102029190614330565b61021e610dec565b6102807f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610202565b61034a61029c3660046143c4565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260008051602061536f83398151915262ffffff92831660009081526020918252604090819020815160a0810183528154958616815263010000009095046001600160a01b03908116938601939093526001015491821690840152600160a01b810464ffffffffff166060840152600160c81b900463ffffffff1660808301525090565b60408051825162ffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015164ffffffffff169082015260809182015163ffffffff169181019190915260a001610202565b61021e6103b53660046143f4565b611009565b6101f66103c83660046143c4565b61127b565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610202565b61028061040036600461442d565b61132e565b61021e6104133660046142c3565b611437565b61021e61042636600461445d565b61148c565b600154600160a01b90046001600160601b03165b6040516001600160601b039091168152602001610202565b6103da6119fe565b7f4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed90154610280565b610499610494366004614612565b611b17565b604080519586526020860194909452928401919091526060830152608082015260a001610202565b61021e6104cf3660046146af565b611bf5565b6104dc611d4f565b6040516001600160401b039091168152602001610202565b60d25b60405160ff9091168152602001610202565b610228610517366004614710565b611d70565b61021e61052a3660046143f4565b611dc1565b61043f61053d366004614729565b612135565b6103da6123ed565b6103da612484565b6104f76124ae565b61021e6105683660046146af565b612531565b6002546001600160a01b03166103da565b600061058a606e612639565b9150506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f191906147c5565b60405163bd7d9d8560e01b81526001600160601b03851660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa158015610644573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066c919081019061485f565b6101a081015160405163790a38ad60e01b815264ffffffffff909116600482015290915073__$d53880c81dc91c20799140d711e5ab8718$__9063790a38ad90602401602060405180830381865af41580156106cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f091906149de565b1561071e576040516308cbe08b60e21b81526001600160601b03851660048201526024015b60405180910390fd5b604051639096a1f360e01b81526001600160601b03851660048201526000906001600160a01b03841690639096a1f390602401602060405180830381865afa15801561076e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107929190614a15565b905060ff81166064146107cc57604051634de91cf360e11b81526001600160601b038616600482015260ff82166024820152604401610715565b6101e0820151604051638d38cd4b60e01b815264ffffffffff909116600482015273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401602060405180830381865af4158015610829573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084d91906149de565b1561087657604051634b80547760e11b81526001600160601b0386166004820152602401610715565b8160c001518260a00151146108c05760a082015160c0830151604051632b14368360e11b81526001600160601b038816600482015260248101929092526044820152606401610715565b61016082015161ffff16156109045761016082015160405163a5bb07ed60e01b81526001600160601b038716600482015261ffff9091166024820152604401610715565b73__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af415801561094d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109719190614a32565b6101c0830151604051634a19ad8d60e11b815264ffffffffff92831660048201529116602482015273__$d53880c81dc91c20799140d711e5ab8718$__906394335b1a90604401602060405180830381865af41580156109d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f991906149de565b8015610a0d57508160800151826101800151105b15610a4a576101c0820151604051630e79f6e160e21b81526001600160601b038716600482015264ffffffffff9091166024820152604401610715565b73__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015610a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab79190614a32565b64ffffffffff166101e083015260048054602084015160808501516040516303c5c06160e41b81526001600160a01b03898116958201959095526001600160601b03808b16602483015290921660448301526064820152911690633c5c061090608401600060405180830381600087803b158015610b3457600080fd5b505af1158015610b48573d6000803e3d6000fd5b50505050836001600160a01b0316639a960d528684610b6560c890565b6040518463ffffffff1660e01b8152600401610b8393929190614b7e565b600060405180830381600087803b158015610b9d57600080fd5b505af1158015610bb1573d6000803e3d6000fd5b505050505050505050565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af4158015610c1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c419190614bb3565b905090565b610c4e6141c8565b604080516080810182527f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b038116835260ff600160601b820481166020850152600160681b909104161515928201929092527f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3018054600093916060840191610cde90614bd0565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0a90614bd0565b8015610d575780601f10610d2c57610100808354040283529160200191610d57565b820191906000526020600020905b815481529060010190602001808311610d3a57829003601f168201915b50505050508152505090506040518060e00160405280610d75600090565b6001600160601b0316815260200182600001516001600160601b03168152602001826020015160ff168152602001826040015115158152602001306001600160a01b03168152602001610dd06002546001600160a01b031690565b6001600160a01b03168152602001826060015181525091505090565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610e4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7291906149de565b15610eb4576001546040516316322c0f60e31b81526001600160a01b0382166004820152600160a01b9091046001600160601b03166024820152604401610715565b6001546001600160a01b0316610edd5760405163cf29926160e01b815260040160405180910390fd5b60015460405163c3c5a54760e01b81523060048201819052916001600160a01b03169063c3c5a54790602401602060405180830381865afa158015610f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4a91906149de565b610f72576040516372657a5160e01b81526001600160a01b0382166004820152602401610715565b600154604051636939560f60e11b81526001600160a01b0383811660048301529091169063d272ac1e90602401602060405180830381865afa158015610fbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe09190614c0a565b600160146101000a8154816001600160601b0302191690836001600160601b0316021790555050565b6000611015606e612639565b9150506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611058573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107c91906147c5565b60405163bd7d9d8560e01b81526001600160601b03861660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110f7919081019061485f565b6101a081015160405163790a38ad60e01b815264ffffffffff909116600482015290915073__$d53880c81dc91c20799140d711e5ab8718$__9063790a38ad90602401602060405180830381865af4158015611157573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117b91906149de565b6111c75760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a5052532d3032303a414c52454144595f414354495641544544006044820152606401610715565b64ffffffffff84166101a0820181905260e0820151604051631ded81af60e31b81526004810192909252602482015273__$d53880c81dc91c20799140d711e5ab8718$__9063ef6c0d7890604401602060405180830381865af4158015611232573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112569190614a32565b64ffffffffff166101c08201526001600160a01b038316639a960d5286836064610b65565b60008060008051602061536f83398151915262ffffff84166000908152602091909152604090819020600101549051631bbffab160e21b8152600160c81b90910463ffffffff16600482015273__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af4158015611303573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113279190614c27565b1192915050565b6040516322f5db0f60e11b815260048101829052600090819073__$5ac3274b8cf1e01ea223bf093142af05b0$__906345ebb61e90602401602060405180830381865af4158015611383573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a79190614c27565b905060006113b585836128b0565b604051632255341b60e11b81526004810182905290915073__$5ac3274b8cf1e01ea223bf093142af05b0$__906344aa683690602401602060405180830381865af4158015611408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142c9190614c27565b925050505b92915050565b60405162461bcd60e51b815260206004820152602160248201527f4552524f523a5052532d3233343a4e4f545f5945545f494d504c454d454e54456044820152601160fa1b6064820152608401610715565b50565b600080611499606e612639565b915091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150191906147c5565b835160405163bd7d9d8560e01b81526001600160601b0389166004820152919250906000906001600160a01b0384169063bd7d9d8590602401600060405180830381865afa158015611557573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261157f919081019061485f565b80519091506001600160601b038381169116146115de5760405162461bcd60e51b815260206004820152601760248201527f504f4c4943595f50524f445543545f4d49534d415443480000000000000000006044820152606401610715565b604051639096a1f360e01b81526001600160601b038916600482015261165c906001600160a01b03851690639096a1f390602401602060405180830381865afa15801561162f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116539190614a15565b60ff16600a1490565b6116a85760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a5052532d3032313a53544154455f4e4f545f4150504c494544006044820152606401610715565b60006116b2614206565b60405163242bdc1960e21b81526001600160601b0385166004820152600090819081906001600160a01b038916906390af70649060240161024060405180830381865afa158015611707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172b9190614c99565b9050611735614206565b6117418a8a89856128cc565b91975090945061175a92508a9150869050858f86612a4f565b9250602864ffffffffff8b161561180d57606464ffffffffff8c166101a0880181905260e0880151604051631ded81af60e31b81526004810192909252602482015290915073__$d53880c81dc91c20799140d711e5ab8718$__9063ef6c0d7890604401602060405180830381865af41580156117db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ff9190614a32565b64ffffffffff166101c08701525b8b1561184357611827898b600001518f8960a00151612a76565b91508560a001518660c00181815161183f9190614da6565b9052505b600460009054906101000a90046001600160a01b03166001600160a01b03166332e6f9228a8f8887876040518663ffffffff1660e01b81526004016118c19594939291906001600160a01b039590951685526001600160601b0393841660208601529190921660408401526060830191909152608082015260a00190565b600060405180830381600087803b1580156118db57600080fd5b505af11580156118ef573d6000803e3d6000fd5b50505050886001600160a01b0316639a960d528e88846040518463ffffffff1660e01b815260040161192393929190614b7e565b600060405180830381600087803b15801561193d57600080fd5b505af1158015611951573d6000803e3d6000fd5b505085516040516355e343a960e01b81526001600160601b039091166004820152600092506001600160a01b038b1691506355e343a99060240161018060405180830381865afa1580156119a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119cd9190614db9565b90508060e00151156119ee576119ee85600001518f8988604001518861302e565b5050505050505050505050505050565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015611a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8791906149de565b15611b0757600154604051631c5da14d60e11b8152600160a01b82046001600160601b031660048201526001600160a01b03909116906338bb429a90602401602060405180830381865afa158015611ae3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4191906147c5565b506002546001600160a01b031690565b600080600080600080611b28613133565b90506000816001600160a01b0316635e78426b8d8f8e8e6040518563ffffffff1660e01b8152600401611b5e9493929190614e6e565b602060405180830381865afa158015611b7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9f9190614c27565b9050611bad81838b8b613152565b92985090965094509250611bc18682614da6565b9650611bcd8486614da6565b611bd79088614da6565b9650611be38388614da6565b96505050965096509650965096915050565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c611c17610bbc565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015611c57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7b9190614ea9565b60008051602061534f8339815191528054600160401b900460ff1680611cae575080546001600160401b03808416911610155b15611ccc5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611cf785856137eb565b611d0083613a8a565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15050505050565b6000610c4160008051602061534f833981519152546001600160401b031690565b600060008051602061536f8339815191526001018281548110611d9557611d95614ed2565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b600080611dce606e612639565b915091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3691906147c5565b60405163bd7d9d8560e01b81526001600160601b03871660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa158015611e89573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611eb1919081019061485f565b90508060a001518160c0015103611ef35760c081015160405163038a855760e51b81526001600160601b03881660048201526024810191909152604401610715565b60008160c001518260a00151611f099190614ee8565b90506000611f1d8587600001518a85612a76565b9050818360c001818151611f319190614da6565b905250600480546020850151604051639babe3bf60e01b81526001600160a01b03898116948201949094526001600160601b03909116602482015260448101849052911690639babe3bf90606401600060405180830381600087803b158015611f9957600080fd5b505af1158015611fad573d6000803e3d6000fd5b50505050846001600160a01b0316639a960d528985611fca60ff90565b6040518463ffffffff1660e01b8152600401611fe893929190614b7e565b600060405180830381600087803b15801561200257600080fd5b505af1158015612016573d6000803e3d6000fd5b5050604051638d38cd4b60e01b815264ffffffffff8a16600482015273__$d53880c81dc91c20799140d711e5ab8718$__9250638d38cd4b9150602401602060405180830381865af4158015612070573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209491906149de565b801561211c57506101a083015160405163790a38ad60e01b815264ffffffffff909116600482015273__$d53880c81dc91c20799140d711e5ab8718$__9063790a38ad90602401602060405180830381865af41580156120f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211c91906149de565b1561212b5761212b8888611009565b5050505050505050565b60008080612143606e612639565b9150915061214f6123ed565b6001600160a01b0316635c992fed6040518060e00160405280612170600090565b6001600160601b039081168252865116602082015260400160d260ff16815260200160001515815260200160006001600160a01b031681526020018d6001600160a01b03168152602001604051806020016040528060008152508152506040518263ffffffff1660e01b81526004016121e99190614330565b6020604051808303816000875af1158015612208573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222c9190614c0a565b9250600061223e8a8a8a8a8a8a611b17565b505050509050600060405180610200016040528085600001516001600160601b03168152602001886001600160601b03168152602001876001600160c01b03191681526020018c6001600160c01b03191681526020018b8152602001838152602001600081526020018a8152602001898152602001604051806020016040528060008152508152602001600061ffff168152602001600061ffff168152602001600081526020016122ed600090565b64ffffffffff168152600060208201819052604091820152516202f23560ee1b81529091506001600160a01b0384169063bc8d4000906123339088908590600401614efb565b600060405180830381600087803b15801561234d57600080fd5b505af1158015612361573d6000803e3d6000fd5b50505050826001600160a01b0316635d4345cc8661237d600a90565b6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401600060405180830381600087803b1580156123c657600080fd5b505af11580156123da573d6000803e3d6000fd5b5050505050505050979650505050505050565b6000806124026001546001600160a01b031690565b6001600160a01b031663d39e604360285b61241b6124ae565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015612460573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143191906147c5565b6000806124996001546001600160a01b031690565b6001600160a01b031663d39e60436046612413565b60006124b8610bbc565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af415801561250d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c419190614a15565b60008051602061534f8339815191528054600160401b810460ff1615906001600160401b03166000811580156125645750825b90506000826001600160401b031660011480156125805750303b155b90508115801561258e575080155b156125ac5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156125d657845460ff60401b1916600160401b1785555b6125e088886137eb565b6125ea8787613a92565b831561212b57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050505050565b6126416141c8565b6000806126566001546001600160a01b031690565b6040516308b09a5f60e41b81523360048201529091506001600160a01b03821690638b09a5f090602401600060405180830381865afa15801561269d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126c59190810190614f1d565b92506126db83604001518560ff90811691161490565b61271d5760405162461bcd60e51b815260206004820152601360248201527213d0929150d517d516541157d2539590531251606a1b6044820152606401610715565b60208301516040516305247a1760e51b81526001600160601b0390911660048201526000906001600160a01b0383169063a48f42e090602401600060405180830381865afa158015612773573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261279b9190810190614f1d565b6080015190508092506000836001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280891906147c5565b6080860151604051629b7b3560e61b81526001600160a01b0391821660048201529192508216906326decd4090602401602060405180830381865afa158015612855573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287991906149de565b156128a857608085015160405163d53987e560e01b81526001600160a01b039091166004820152602401610715565b505050915091565b60006128c58383670de0b6b3a7640000613d00565b9392505050565b60006128d6614206565b6020840151604051634793b4ab60e01b81526001600160601b03821660048201529092506000906001600160a01b03871690634793b4ab90602401600060405180830381865afa15801561292e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526129569190810190614fef565b805160608601519193506001600160601b039081169116146129b35760405162461bcd60e51b81526020600482015260166024820152750a09e989286b2be84aa9c88988abe9a92a69a82a886960531b6044820152606401610715565b60608401516040516355e343a960e01b81526001600160601b03821660048201526000906001600160a01b038916906355e343a99060240161018060405180830381865afa158015612a09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2d9190614db9565b9050612a418160400151886080015161132e565b925050509450945094915050565b612a57614206565b8184608001818151612a699190614da6565b9052509295945050505050565b60008115613026576000856001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae291906147c5565b60405163242bdc1960e21b81526001600160601b03871660048201526001600160a01b0391909116906390af70649060240161024060405180830381865afa158015612b32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b569190614c99565b60208101519091506000612b726001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03881660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612bc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be591906147c5565b90506000886001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c4b91906147c5565b60608501516040516355e343a960e01b81526001600160601b0390911660048201526001600160a01b0391909116906355e343a99060240161018060405180830381865afa158015612ca1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc59190614db9565b61010081015160a08601516040516346f0526160e11b8152899850929350909173__$a23651848365a6a5ca15f07b4331037f48$__90638de0a4c290612d0f9084906004016150c0565b602060405180830381865af4158015612d2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5091906149de565b15612dbc576040516317d5759960e31b81526001600160a01b0386169063beabacc890612d8590879086908d906004016150d7565b600060405180830381600087803b158015612d9f57600080fd5b505af1158015612db3573d6000803e3d6000fd5b5050505061301f565b60a086015160405163012ebd8360e21b815281516004820152602090910151602482015260448101889052600090819073__$a23651848365a6a5ca15f07b4331037f48$__906304baf60c906064016040805180830381865af4158015612e27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e4b91906150fb565b91509150600088610160015190508a886001600160a01b03166321df0da76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebc91906147c5565b604051636eb1769f60e11b81526001600160a01b038a811660048301528b81166024830152919091169063dd62ed3e90604401602060405180830381865afa158015612f0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f309190614c27565b1015612f555786888c604051636d675c4360e01b8152600401610715939291906150d7565b6040516317d5759960e31b81526001600160a01b0389169063beabacc890612f85908a90859088906004016150d7565b600060405180830381600087803b158015612f9f57600080fd5b505af1158015612fb3573d6000803e3d6000fd5b50506040516317d5759960e31b81526001600160a01b038b16925063beabacc89150612fe7908a90899087906004016150d7565b600060405180830381600087803b15801561300157600080fd5b505af1158015613015573d6000803e3d6000fd5b50939b5050505050505b5050505050505b949350505050565b60006130426001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03881660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa158015613091573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130b99190810190614f1d565b608001516101008501516040516332f7fe0d60e11b815291925082916001600160a01b038316916365effc1a916130f8918a918990899060040161511f565b600060405180830381600087803b15801561311257600080fd5b505af1158015613126573d6000803e3d6000fd5b5050505050505050505050565b600061313d6141c8565b613147606e612639565b506080015192915050565b600080600080600080886001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015613199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131bd91906147c5565b9050806001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322191906147c5565b9150506000886001600160a01b0316631bdd6b766040518163ffffffff1660e01b8152600401602060405180830381865afa158015613264573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132889190614c0a565b604051634793b4ab60e01b81526001600160601b038a1660048201529091506000906001600160a01b03841690634793b4ab90602401600060405180830381865afa1580156132db573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133039190810190614fef565b80519091506001600160601b0383811691161461336d5760405162461bcd60e51b815260206004820152602260248201527f4552524f523a5052532d3033353a42554e444c455f504f4f4c5f4d49534d4154604482015261086960f31b6064820152608401610715565b6000836001600160a01b03166390af70648c6001600160a01b03166251884a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133df9190614c0a565b6040516001600160e01b031960e084901b1681526001600160601b03909116600482015260240161024060405180830381865afa158015613424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134489190614c99565b60a081015160405163012ebd8360e21b8152815160048201526020909101516024820152604481018e905290915073__$a23651848365a6a5ca15f07b4331037f48$__906304baf60c906064016040805180830381865af41580156134b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134d591906150fb565b506040516355e343a960e01b81526001600160601b0385166004820152909850600091506001600160a01b038516906355e343a99060240161018060405180830381865afa15801561352b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061354f9190614db9565b606081015160405163012ebd8360e21b8152815160048201526020909101516024820152604481018e905290915073__$a23651848365a6a5ca15f07b4331037f48$__906304baf60c906064016040805180830381865af41580156135b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135dc91906150fb565b50809750505060008a6001600160a01b031663db6dcc956040518163ffffffff1660e01b8152600401602060405180830381865afa158015613622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136469190614c0a565b604051639ad69c6760e01b81526001600160601b03821660048201529091506000906001600160a01b03861690639ad69c679060240160c060405180830381865afa158015613699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136bd9190615165565b604080820151905163012ebd8360e21b8152815160048201526020909101516024820152604481018f905290915073__$a23651848365a6a5ca15f07b4331037f48$__906304baf60c906064016040805180830381865af4158015613726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061374a91906150fb565b5060208481015160405163012ebd8360e21b8152815160048201529101516024820152604481018f905290965073__$a23651848365a6a5ca15f07b4331037f48$__92506304baf60c91506064016040805180830381865af41580156137b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137d891906150fb565b5080955050505050945094509450949050565b6137f3613de9565b60008051602061536f833981519152600061382360008051602061534f833981519152546001600160401b031690565b9050600061382f610bbc565b9050816001600160401b031660010361385c5760028301805462ffffff191662ffffff83161790556138aa565b600283015462ffffff908116908216116138aa5760405162461bcd60e51b815260206004820152600f60248201526e24a72b20a624a2102b22a929a4a7a760891b6044820152606401610715565b6001808401805491820181556000908152602090819020600a808404909101805462ffffff808716600394909606939093026101000a858102930219169190911790556040805160a0810182529283526001600160a01b038089168484015287168382015280516356db0c1960e11b81529051606084019273__$d53880c81dc91c20799140d711e5ab8718$__9263adb6183292600480830193928290030181865af415801561395e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139829190614a32565b64ffffffffff1681526020014363ffffffff90811690915262ffffff8084166000908152602087815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c81b0263ffffffff60c81b1964ffffffffff909716600160a01b026001600160c81b031990961692909416919091179390931793909316179055517fad0a0fc10465a8dd9da3ad5f43e1a7fff4b4578551c76f0ae8deb844f0d0bf6890611d409083908890889062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b6101c4613de9565b60008051602061534f8339815191528054600160401b810460ff1615906001600160401b0316600081158015613ac55750825b90506000826001600160401b03166001148015613ae15750303b155b905081158015613aef575080155b15613b0d5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315613b3757845460ff60401b1916600160401b1785555b60008087806020019051810190613b4e91906151fb565b9092509050613b5d828a613e22565b6001546001600160a01b031663d39e6043608c613b786124ae565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015613bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613be191906147c5565b600380546001600160a01b0319166001600160a01b039283161790556001541663d39e6043613c0e60dc90565b613c166124ae565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015613c5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c7f91906147c5565b600480546001600160a01b0319166001600160a01b0392909216919091179055613caf63fefde12b60e01b613e8d565b50508315613cf757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6000808060001985870985870292508281108382030391505080600003613d3a57838281613d3057613d3061522a565b04925050506128c5565b808411613d815760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401610715565b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b60008051602061534f83398151915254600160401b900460ff16613e2057604051631afcd79f60e31b815260040160405180910390fd5b565b600060d2613e2e6124ae565b6040805160ff9384166020820152929091169082015260600160405160208183030381529060405290506000613e6384613eb2565b90506000613e768583603c848888613f1d565b613e86637b6a51fd60e01b613e8d565b5050505050565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b604051636939560f60e11b81526001600160a01b0382166004820181905260009163d272ac1e90602401602060405180830381865afa158015613ef9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114319190614c0a565b613f5e6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b613f688287613fe9565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b86151502178155905060018101613fd8838261528f565b50613cf76303fb044760e21b613e8d565b6001600160a01b03821661403f5760405162461bcd60e51b815260206004820152601e60248201527f4e66744f776e61626c653a20696e697469616c206f776e6572206973203000006044820152606401610715565b600280546001600160a01b0319166001600160a01b03841617905561406381614067565b5050565b6001546001600160a01b0316156140a05760015460405163fcdbf2d960e01b81526001600160a01b039091166004820152602401610715565b6001600160a01b0381166140c75760405163f5c4d07d60e01b815260040160405180910390fd5b806001600160a01b03163b6000036140fd5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610715565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152630114a7d560e01b60048201526301ffc9a790602401602060405180830381865afa925050508015614177575060408051601f3d908101601f19168201909252614174918101906149de565b60015b61419f5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610715565b806140635760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610715565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b60405180610120016040528060006001600160601b0316815260200161423f604051806040016040528060008152602001600081525090565b81526020016060815260200160008152602001600081526020016000815260200160008152602001600064ffffffffff168152602001600064ffffffffff1681525090565b60006020828403121561429657600080fd5b81356001600160e01b0319811681146128c557600080fd5b6001600160601b038116811461148957600080fd5b6000602082840312156142d557600080fd5b81356128c5816142ae565b60005b838110156142fb5781810151838201526020016142e3565b50506000910152565b6000815180845261431c8160208601602086016142e0565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a083015161439960c08401826001600160a01b03169052565b5060c083015160e080840152613026610100840182614304565b62ffffff8116811461148957600080fd5b6000602082840312156143d657600080fd5b81356128c5816143b3565b64ffffffffff8116811461148957600080fd5b6000806040838503121561440757600080fd5b8235614412816142ae565b91506020830135614422816143e1565b809150509250929050565b6000806040838503121561444057600080fd5b50508035926020909101359150565b801515811461148957600080fd5b60008060006060848603121561447257600080fd5b833561447d816142ae565b9250602084013561448d8161444f565b9150604084013561449d816143e1565b809150509250925092565b6001600160c01b03198116811461148957600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161020081016001600160401b03811182821017156144f7576144f76144be565b60405290565b60405161018081016001600160401b03811182821017156144f7576144f76144be565b60405161012081016001600160401b03811182821017156144f7576144f76144be565b60405160e081016001600160401b03811182821017156144f7576144f76144be565b604051601f8201601f191681016001600160401b038111828210171561458d5761458d6144be565b604052919050565b60006001600160401b038211156145ae576145ae6144be565b50601f01601f191660200190565b600082601f8301126145cd57600080fd5b81356145e06145db82614595565b614565565b8181528460208386010111156145f557600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c0878903121561462b57600080fd5b8635614636816144a8565b9550602087013594506040870135935060608701356001600160401b0381111561465f57600080fd5b61466b89828a016145bc565b935050608087013561467c816142ae565b915060a087013561468c816144a8565b809150509295509295509295565b6001600160a01b038116811461148957600080fd5b6000806000606084860312156146c457600080fd5b83356146cf8161469a565b925060208401356146df8161469a565b915060408401356001600160401b038111156146fa57600080fd5b614706868287016145bc565b9150509250925092565b60006020828403121561472257600080fd5b5035919050565b600080600080600080600060e0888a03121561474457600080fd5b873561474f8161469a565b9650602088013561475f816144a8565b9550604088013594506060880135935060808801356001600160401b0381111561478857600080fd5b6147948a828b016145bc565b93505060a08801356147a5816142ae565b915060c08801356147b5816144a8565b8091505092959891949750929550565b6000602082840312156147d757600080fd5b81516128c58161469a565b80516147ed816142ae565b919050565b80516147ed816144a8565b600082601f83011261480e57600080fd5b815161481c6145db82614595565b81815284602083860101111561483157600080fd5b6130268260208301602087016142e0565b805161ffff811681146147ed57600080fd5b80516147ed816143e1565b60006020828403121561487157600080fd5b81516001600160401b038082111561488857600080fd5b90830190610200828603121561489d57600080fd5b6148a56144d4565b6148ae836147e2565b81526148bc602084016147e2565b60208201526148cd604084016147f2565b60408201526148de606084016147f2565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e0820152610100808401518381111561491f57600080fd5b61492b888287016147fd565b828401525050610120808401518381111561494557600080fd5b614951888287016147fd565b8284015250506101409150614967828401614842565b82820152610160915061497b828401614842565b82820152610180915081830151828201526101a0915061499c828401614854565b828201526101c091506149b0828401614854565b828201526101e091506149c4828401614854565b91810191909152949350505050565b80516147ed8161444f565b6000602082840312156149f057600080fd5b81516128c58161444f565b60ff8116811461148957600080fd5b80516147ed816149fb565b600060208284031215614a2757600080fd5b81516128c5816149fb565b600060208284031215614a4457600080fd5b81516128c5816143e1565b80516001600160601b0316825260006102006020830151614a7b60208601826001600160601b03169052565b506040830151614a9760408601826001600160c01b0319169052565b506060830151614ab360608601826001600160c01b0319169052565b506080830151608085015260a083015160a085015260c083015160c085015260e083015160e0850152610100808401518282870152614af483870182614304565b925050506101208084015185830382870152614b108382614304565b9250505061014080840151614b2a8287018261ffff169052565b50506101608381015161ffff169085015261018080840151908501526101a08084015164ffffffffff908116918601919091526101c0808501518216908601526101e0938401511692909301919091525090565b6001600160601b0384168152606060208201526000614ba06060830185614a4f565b905060ff83166040830152949350505050565b600060208284031215614bc557600080fd5b81516128c5816143b3565b600181811c90821680614be457607f821691505b602082108103614c0457634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215614c1c57600080fd5b81516128c5816142ae565b600060208284031215614c3957600080fd5b5051919050565b80516147ed8161469a565b600060408284031215614c5d57600080fd5b604051604081018181106001600160401b0382111715614c7f57614c7f6144be565b604052825181526020928301519281019290925250919050565b60006102408284031215614cac57600080fd5b614cb46144fd565b614cbd83614c40565b8152614ccb60208401614c40565b6020820152614cdc604084016147e2565b6040820152614ced606084016147e2565b6060820152614cff8460808501614c4b565b6080820152614d118460c08501614c4b565b60a0820152610100614d2585828601614c4b565b60c0830152610140614d3986828701614c4b565b60e0840152614d4c866101808701614c4b565b82840152614d5e866101c08701614c4b565b610120840152614d7161020086016149d3565b9083015250614d836102208401614c40565b6101608201529392505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561143157611431614d90565b60006101808284031215614dcc57600080fd5b614dd4614520565b614ddd836147e2565b8152614deb60208401614c40565b602082015260408301516040820152614e078460608501614c4b565b6060820152614e198460a08501614c4b565b6080820152614e2b8460e08501614c4b565b60a0820152614e3d61012084016149d3565b60c0820152614e4f61014084016149d3565b60e0820152614e616101608401614c40565b6101008201529392505050565b8481526001600160401b0360c01b84166020820152826040820152608060608201526000614e9f6080830184614304565b9695505050505050565b600060208284031215614ebb57600080fd5b81516001600160401b03811681146128c557600080fd5b634e487b7160e01b600052603260045260246000fd5b8181038181111561143157611431614d90565b6001600160601b03831681526040602082015260006130266040830184614a4f565b600060208284031215614f2f57600080fd5b81516001600160401b0380821115614f4657600080fd5b9083019060e08286031215614f5a57600080fd5b614f62614543565b614f6b836147e2565b8152614f79602084016147e2565b6020820152614f8a60408401614a0a565b6040820152614f9b606084016149d3565b6060820152614fac60808401614c40565b6080820152614fbd60a08401614c40565b60a082015260c083015182811115614fd457600080fd5b614fe0878286016147fd565b60c08301525095945050505050565b60006020828403121561500157600080fd5b81516001600160401b038082111561501857600080fd5b90830190610140828603121561502d57600080fd5b615035614520565b61503e836147e2565b815261504d8660208501614c4b565b602082015260608301518281111561506457600080fd5b615070878286016147fd565b6040830152506080830151606082015260a0830151608082015260c083015160a082015260e083015160c082015261010091506150ae828401614854565b60e08201526149c46101208401614854565b815181526020808301519082015260408101611431565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000806040838503121561510e57600080fd5b505080516020909101519092909150565b6001600160601b03851681526080602082015260006151416080830186614304565b82810360408401526151538186614304565b91505082606083015295945050505050565b600060c0828403121561517757600080fd5b60405160a081018181106001600160401b0382111715615199576151996144be565b60405282516151a7816142ae565b815260208301516151b78161469a565b60208201526151c98460408501614c4b565b604082015260808301516151dc8161444f565b606082015260a08301516151ef8161469a565b60808201529392505050565b6000806040838503121561520e57600080fd5b82516152198161469a565b60208401519092506144228161469a565b634e487b7160e01b600052601260045260246000fd5b601f82111561528a57600081815260208120601f850160051c810160208610156152675750805b601f850160051c820191505b8181101561528657828155600101615273565b5050505b505050565b81516001600160401b038111156152a8576152a86144be565b6152bc816152b68454614bd0565b84615240565b602080601f8311600181146152f157600084156152d95750858301515b600019600386901b1c1916600185901b178555615286565b600085815260208120601f198616915b8281101561532057888601518255948401946001909101908401615301565b508582101561533e5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a004f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900a2646970667358221220e54c41c624e794b25a3eea084538e5a4d51b15bcc5cdf1508135982b108db2ef64736f6c63430008140033",
975
+ "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b61515480620000e66000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063644c45e011610104578063a4f60839116100a2578063bf7e214f11610071578063bf7e214f14610440578063caf4e3d41461045e578063cc9fc59a14610466578063f7c34ee01461046e57600080fd5b8063a4f60839146103f6578063ada9652e14610409578063b68d18091461041e578063bbfbbfba1461042d57600080fd5b8063893d20e8116100de578063893d20e8146103ac5780638e32e979146103b45780638fb36037146103c75780639ffcede9146103e857600080fd5b8063644c45e014610354578063675393bf146103865780637a9e5e4b1461039957600080fd5b8063214cdb801161017c5780633d3cf0231161014b5780633d3cf023146102f857806349bb9e4b146103095780634d5e16a91461031c5780635ab1bd531461032f57600080fd5b8063214cdb80146102b757806327bb7a33146102ca578063329d6e74146102dd57806336fc697e146102f057600080fd5b80630fec111c116101b85780630fec111c14610252578063138461e0146102675780631c8179721461026f5780631eff4b221461028257600080fd5b806301ffc9a7146101df5780630aaba8e8146102215780630d8e6e2c14610236575b600080fd5b61020c6101ed366004613ec5565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b61023461022f366004613f04565b610481565b005b61023e6109cb565b60405162ffffff9091168152602001610218565b61025a610a55565b6040516102189190613f71565b610234610b76565b61023461027d366004614015565b610d78565b6102a97f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610218565b6102346102c5366004613ec5565b6111f2565b6102346102d83660046141d8565b61121f565b6102346102eb366004614270565b6112c4565b610234611411565b610234610306366004613f04565b50565b6102346103173660046142a4565b611457565b61023461032a3660046142f3565b611556565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610218565b6000805160206150bf833981519152546001600160601b03165b6040516001600160601b039091168152602001610218565b61023461039436600461432c565b611835565b6102346103a736600461432c565b611942565b61033c6119dc565b6102346103c2366004614349565b611b13565b6103cf611d4c565b6040516001600160e01b03199091168152602001610218565b6102346101da366004613f04565b61036e610404366004614389565b611d84565b6102a96000805160206150bf83398151915281565b60405160d38152602001610218565b61023461043b3660046142f3565b611f0c565b6000805160206150df833981519152546001600160a01b031661033c565b61033c6122d2565b61033c6122de565b61023461047c3660046143ae565b6122ea565b600061048d606e612361565b925050506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f591906143dc565b60405163bd7d9d8560e01b81526001600160601b03851660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa158015610548573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610570919081019061448b565b6101c081015160405163790a38ad60e01b815264ffffffffff909116600482015290915073__$d53880c81dc91c20799140d711e5ab8718$__9063790a38ad90602401602060405180830381865af41580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190614641565b15610622576040516308cbe08b60e21b81526001600160601b03851660048201526024015b60405180910390fd5b604051639096a1f360e01b81526001600160601b03851660048201526000906001600160a01b03841690639096a1f390602401602060405180830381865afa158015610672573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106969190614669565b90506106ab8160645b60ff9081169116141590565b156106dd57604051634de91cf360e11b81526001600160601b038616600482015260ff82166024820152604401610619565b610200820151604051638d38cd4b60e01b815264ffffffffff909116600482015273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401602060405180830381865af415801561073a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075e9190614641565b1561078757604051634b80547760e11b81526001600160601b0386166004820152602401610619565b6107998260a001518360c00151612503565b6107db5760a082015160c08301516040516348d5f6c560e01b81526001600160601b038089166004830152928316602482015291166044820152606401610619565b61016082015161ffff161561081f5761016082015160405163a5bb07ed60e01b81526001600160601b038716600482015261ffff9091166024820152604401610619565b73__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015610868573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088c9190614686565b64ffffffffff1661020083015260065460405163a8de511760e01b81526001600160a01b039091169063a8de5117906108cd90879089908790600401614830565b600060405180830381600087803b1580156108e757600080fd5b505af11580156108fb573d6000803e3d6000fd5b50505050836001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561093d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096191906143dc565b6001600160a01b031663985aeba7868460c85b6040518463ffffffff1660e01b81526004016109929392919061486c565b600060405180830381600087803b1580156109ac57600080fd5b505af11580156109c0573d6000803e3d6000fd5b505050505050505050565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af4158015610a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5091906148a1565b905090565b610a5d613e87565b6040805160e081018252600081527f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b038116602084015260ff600160601b8204811694840194909452600160681b90049092161515606082015230608082015260a08101610ad26119dc565b6001600160a01b03168152602001826001018054610aef906148c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1b906148c6565b8015610b685780601f10610b3d57610100808354040283529160200191610b68565b820191906000526020600020905b815481529060010190602001808311610b4b57829003601f168201915b505050505081525091505090565b60006000805160206150bf83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610be5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c099190614641565b15610c355780546040516301ab8b6760e21b81526001600160601b039091166004820152602401610619565b30610c486001546001600160a01b031690565b60405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa158015610c90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb49190614641565b610cdc5760405163b9304b0d60e01b81526001600160a01b0382166004820152602401610619565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038381166004830152919091169063d272ac1e90602401602060405180830381865afa158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d549190614900565b82546bffffffffffffffffffffffff19166001600160601b03919091161790915550565b600080610d85606e612361565b92505091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dee91906143dc565b60405163bd7d9d8560e01b81526001600160601b03881660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa158015610e41573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e69919081019061448b565b80519091506001600160601b03858116911614610eb7578051604051631a06208360e01b81526001600160601b03808a16600483015291821660248201529085166044820152606401610619565b604051639096a1f360e01b81526001600160601b0388166004820152610f33906001600160a01b03841690639096a1f390602401602060405180830381865afa158015610f08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2c9190614669565b600a61069f565b15610f5c57604051631130ddad60e21b81526001600160601b0388166004820152602401610619565b602864ffffffffff86161561101157606464ffffffffff8781166101c0850181905260e08501516040516352bcc5a760e11b81526004810192909252909116602482015290915073__$d53880c81dc91c20799140d711e5ab8718$__9063a5798b4e90604401602060405180830381865af4158015610fdf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110039190614686565b64ffffffffff166101e08301525b600073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801561105c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110809190614900565b905087156110ba57611097858a8560a00151612591565b90506110ab8360c001518460a00151613423565b6001600160601b031660c08401525b846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111c91906143dc565b6001600160a01b031663985aeba78a85856040518463ffffffff1660e01b815260040161114b9392919061486c565b600060405180830381600087803b15801561116557600080fd5b505af1158015611179573d6000803e3d6000fd5b5050600654604051631e63871f60e11b81526001600160a01b039091169250633cc70e3e91506111b59088908a908e908990889060040161491d565b600060405180830381600087803b1580156111cf57600080fd5b505af11580156111e3573d6000803e3d6000fd5b50505050505050505050505050565b6111fa6134ab565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b6112276134ab565b61123182876122ea565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3016112ba83826149b9565b5050505050505050565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c6112e66109cb565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015611326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134a9190614a78565b6000805160206150ff8339815191528054600160401b900460ff168061137d575080546001600160401b03808416911610155b1561139b5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556113c5836134e4565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b6114196134ab565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b6000805160206150ff8339815191528054600160401b810460ff1615906001600160401b031660008115801561148a5750825b90506000826001600160401b031660011480156114a65750303b155b9050811580156114b4575080155b156114d25760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156114fc57845460ff60401b1916600160401b1785555b61150687876134ec565b831561154d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b6000611562606e612361565b925050506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ca91906143dc565b60405163bd7d9d8560e01b81526001600160601b03861660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa15801561161d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611645919081019061448b565b6101c081015160405163790a38ad60e01b815264ffffffffff909116600482015290915073__$d53880c81dc91c20799140d711e5ab8718$__9063790a38ad90602401602060405180830381865af41580156116a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c99190614641565b6117155760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a5052532d3032303a414c52454144595f414354495641544544006044820152606401610619565b64ffffffffff8481166101c0830181905260e08301516040516352bcc5a760e11b81526004810192909252909116602482015273__$d53880c81dc91c20799140d711e5ab8718$__9063a5798b4e90604401602060405180830381865af4158015611784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a89190614686565b64ffffffffff166101e082015260408051631a99b41b60e31b815290516001600160a01b0385169163d4cda0d89160048083019260209291908290030181865afa1580156117fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181e91906143dc565b6001600160a01b031663985aeba786836064610974565b61183d6134ab565b806001600160a01b03163b6000036118735760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610619565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152630a3888e560e31b60048201526301ffc9a790602401602060405180830381865afa9250505080156118ed575060408051601f3d908101601f191682019092526118ea91810190614641565b60015b6119155760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610619565b8061193e5760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610619565b5050565b336119626000805160206150df833981519152546001600160a01b031690565b6001600160a01b0316816001600160a01b03161461199d5760405162d1953b60e31b81526001600160a01b0382166004820152602401610619565b816001600160a01b03163b6000036119d3576040516361798f2f60e11b81526001600160a01b0383166004820152602401610619565b61193e82613a14565b6000806000805160206150bf83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015611a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a709190614641565b15611afd576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af791906143dc565b91505090565b54600160601b90046001600160a01b0316919050565b611b1b6134ab565b611b9b83846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b819190614900565b603c6000856040518060200160405280600081525061121f565b6001600160a01b03821615611bb857611bb382613a75565b611d27565b6000611bcc6001546001600160a01b031690565b6001600160a01b031663d39e60436028604051632392b61b60e21b81526003600482015273__$9dab98ad7ae1a426029e5739f922230a41$__90638e4ad86c90602401602060405180830381865af4158015611c2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c509190614669565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015611c95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb991906143dc565b9050611d25816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2091906143dc565b613a75565b505b611d37634a531f3360e01b6111f2565b611d4763b68d180960e01b6111f2565b505050565b6000805160206150df833981519152805460009190600160a01b900460ff16611d76576000611af7565b638fb3603760e01b91505090565b6040516355205f0f60e01b81526001600160601b03821660048201526000908190611e1090859073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__906355205f0f90602401602060405180830381865af4158015611de7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0b9190614aac565b613a86565b604051632255341b60e11b81526004810182905290915073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__90634c41dd969073__$5ac3274b8cf1e01ea223bf093142af05b0$__906344aa683690602401602060405180830381865af4158015611e7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea39190614aac565b6040518263ffffffff1660e01b8152600401611ec191815260200190565b602060405180830381865af4158015611ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f029190614900565b9150505b92915050565b600080611f19606e612361565b92505091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8291906143dc565b60405163bd7d9d8560e01b81526001600160601b03871660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa158015611fd5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ffd919081019061448b565b90506120118160c001518260a00151612503565b156120485760c0810151604051636cc0f84b60e01b81526001600160601b0380891660048301529091166024820152604401610619565b600061205c8260a001518360c00151613a9b565b9050600061206b858984612591565b905061207b8360c0015183613423565b6001600160601b0390811660c08501526003546020850151604051635ed3256760e01b81526001600160a01b038981166004830152918416602482015292841660448401521690635ed3256790606401600060405180830381600087803b1580156120e557600080fd5b505af11580156120f9573d6000803e3d6000fd5b50505050846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561213b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215f91906143dc565b6001600160a01b031663985aeba7898560ff6040518463ffffffff1660e01b815260040161218f9392919061486c565b600060405180830381600087803b1580156121a957600080fd5b505af11580156121bd573d6000803e3d6000fd5b5050604051638d38cd4b60e01b815264ffffffffff8a16600482015273__$d53880c81dc91c20799140d711e5ab8718$__9250638d38cd4b9150602401602060405180830381865af4158015612217573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223b9190614641565b80156122c357506101c083015160405163790a38ad60e01b815264ffffffffff909116600482015273__$d53880c81dc91c20799140d711e5ab8718$__9063790a38ad90602401602060405180830381865af415801561229f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c39190614641565b156112ba576112ba8888611556565b6000610a506028613ae6565b6000610a506046613ae6565b6122f26134ab565b6122fb81611835565b612303611411565b6001600160a01b03821661232a5760405163f17ef42d60e01b815260040160405180910390fd5b506000805160206150bf83398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b600061236b613e87565b600061237f6001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa1580156123c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e99190614900565b92506123f58385613bf3565b8092508193505050806001600160a01b031663e5f6cd276040518163ffffffff1660e01b8152600401602060405180830381865afa15801561243b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245f91906143dc565b6080830151604051629b7b3560e61b81526001600160a01b0391821660048201529116906326decd4090602401602060405180830381865afa1580156124a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124cd9190614641565b156124fc57608082015160405163d53987e560e01b81526001600160a01b039091166004820152602401610619565b9193909250565b60405163c4cade9d60e01b81526001600160601b0380841660048301528216602482015260009073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__9063c4cade9d90604401602060405180830381865af4158015612566573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258a9190614641565b9392505050565b604051630a4d29dd60e31b81526001600160601b038216600482015260009073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__906352694ee890602401602060405180830381865af41580156125ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126109190614641565b156126895773__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801561265e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126829190614900565b905061258a565b600061269d6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03861660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa1580156126ec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127149190810190614ac5565b6020015190506000856001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561275a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277e91906143dc565b60405163bd7d9d8560e01b81526001600160601b03871660048201526001600160a01b03919091169063bd7d9d8590602401600060405180830381865afa1580156127cd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127f5919081019061448b565b6007546060820151608083015160e084015161010085015160208601516040808801519051637a5ff29d60e11b81529798506000976001600160a01b039097169663f4bfe53a96612852968c969195909491939092600401614b97565b6101e060405180830381865afa158015612870573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128949190614bff565b60405163046e44af60e11b81526001600160601b038716600482015290915073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__906308dc895e90602401602060405180830381865af41580156128ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129139190614aac565b8160400151146129d257858573__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__634c41dd9684604001516040518263ffffffff1660e01b815260040161295c91815260200190565b602060405180830381865af4158015612979573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061299d9190614900565b6040516338b9ad1b60e11b81526001600160601b03938416600482015291831660248301529091166044820152606401610619565b60006129e66001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03891660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612a35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5991906143dc565b90506000886001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612abf91906143dc565b60405163242bdc1960e21b81526001600160601b03871660048201526001600160a01b0391909116906390af70649060240161014060405180830381865afa158015612b0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b339190614d08565b90506000816020015190508360400151816001600160a01b03166321df0da76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ba591906143dc565b604051636eb1769f60e11b81526001600160a01b0386811660048301528481166024830152919091169063dd62ed3e90604401602060405180830381865afa158015612bf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c199190614aac565b1015612c58576040808501519051636d675c4360e01b81526001600160a01b038086166004830152831660248201526044810191909152606401610619565b600073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__634c41dd968660e001518760600151612c889190614dc6565b6040518263ffffffff1660e01b8152600401612ca691815260200190565b602060405180830381865af4158015612cc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ce79190614900565b9050600073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__634c41dd96876101c001518861014001518960c00151612d209190614dc6565b612d2a9190614dd9565b6040518263ffffffff1660e01b8152600401612d4891815260200190565b602060405180830381865af4158015612d65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d899190614900565b905060008661010001518760800151612da29190614dc6565b905060008761012001518860a00151612dbb9190614dc6565b9050600073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__634c41dd9683858c60000151612dea9190614dc6565b612df49190614dc6565b6040518263ffffffff1660e01b8152600401612e1291815260200190565b602060405180830381865af4158015612e2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e539190614900565b8951604051632620eecb60e11b815291925073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__91634c41dd9691612e919160040190815260200190565b602060405180830381865af4158015612eae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed29190614900565b60e088015160405163c661667d60e01b8152919d50906001600160a01b0388169063c661667d90612f0b908c9085908b90600401614dec565b600060405180830381600087803b158015612f2557600080fd5b505af1158015612f39573d6000803e3d6000fd5b505050505060008f6001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa291906143dc565b6040808a01519051639ad69c6760e01b81526001600160601b0390911660048201526001600160a01b039190911690639ad69c679060240161010060405180830381865afa158015612ff8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061301c9190614e18565b608081015160405163c661667d60e01b8152919250906001600160a01b0389169063c661667d90613055908d9085908b90600401614dec565b600060405180830381600087803b15801561306f57600080fd5b505af1158015613083573d6000803e3d6000fd5b50505050600560009054906101000a90046001600160a01b03166001600160a01b03166392e5fab68a604001518e604001518e8a6040518563ffffffff1660e01b81526004016130d69493929190614f51565b600060405180830381600087803b1580156130f057600080fd5b505af1158015613104573d6000803e3d6000fd5b50505050505060008f6001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561314a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061316e91906143dc565b606089015160405163f0ea17c360e01b81526001600160601b0390911660048201526001600160a01b03919091169063f0ea17c390602401600060405180830381865afa1580156131c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131eb9190810190614f94565b6060015160405163c661667d60e01b81529091506001600160a01b0388169063c661667d90613222908c9085908790600401614dec565b600060405180830381600087803b15801561323c57600080fd5b505af1158015613250573d6000803e3d6000fd5b505060065460208e015160405163991cbfb360e01b81526001600160a01b03909216935063991cbfb3925061328b918e908790600401615047565b600060405180830381600087803b1580156132a557600080fd5b505af11580156132b9573d6000803e3d6000fd5b505050505060006132d36132cd8684613423565b87613423565b60405163046e44af60e11b81526001600160601b038216600482015290915073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__906308dc895e90602401602060405180830381865af415801561332e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133529190614aac565b8a6040015114613410578e73__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__634c41dd968c604001516040518263ffffffff1660e01b815260040161339a91815260200190565b602060405180830381865af41580156133b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133db9190614900565b6040516310c696cd60e31b81526001600160601b03928316600482015290821660248201529082166044820152606401610619565b5050505050505050505050509392505050565b60405163274acb3560e01b81526001600160601b0380841660048301528216602482015260009073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__9063274acb35906044015b602060405180830381865af4158015613487573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258a9190614900565b6000805160206150ff83398151915254600160401b900460ff166134e257604051631afcd79f60e31b815260040160405180910390fd5b565b6101da6134ab565b6000805160206150ff8339815191528054600160401b810460ff1615906001600160401b031660008115801561351f5750825b90506000826001600160401b0316600114801561353b5750303b155b905081158015613549575080155b156135675760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561359157845460ff60401b1916600160401b1785555b600080878060200190518101906135a89190615079565b90925090506135b98260008b611b13565b60006135c36109cb565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015613618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061363c9190614669565b90506136506001546001600160a01b031690565b6001600160a01b031663d39e6043608c6040516001600160e01b031960e084901b16815260ff91821660048201529084166024820152604401602060405180830381865afa1580156136a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ca91906143dc565b600680546001600160a01b0319166001600160a01b039283161790556001541663d39e604360dc6040516001600160e01b031960e084901b16815260ff91821660048201529084166024820152604401602060405180830381865afa158015613737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375b91906143dc565b600380546001600160a01b0319166001600160a01b039283161790556001541663d39e604360d46040516001600160e01b031960e084901b16815260ff91821660048201529084166024820152604401602060405180830381865afa1580156137c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137ec91906143dc565b600480546001600160a01b0319166001600160a01b039283161790556001541663d39e604360d26040516001600160e01b031960e084901b16815260ff91821660048201529084166024820152604401602060405180830381865afa158015613859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061387d91906143dc565b600280546001600160a01b0319166001600160a01b039283161790556001541663d39e604360786040516001600160e01b031960e084901b16815260ff91821660048201529084166024820152604401602060405180830381865afa1580156138ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061390e91906143dc565b600580546001600160a01b0319166001600160a01b039283161790556001541663d39e604360e66040516001600160e01b031960e084901b16815260ff91821660048201529084166024820152604401602060405180830381865afa15801561397b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399f91906143dc565b600780546001600160a01b0319166001600160a01b03929092169190911790556139cf63735cb6bd60e11b6111f2565b505050831561154d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001611544565b6000805160206150df83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b613a7d6134ab565b61030681613cf7565b600061258a8383670de0b6b3a7640000613d08565b6040516363cf551160e11b81526001600160601b0380841660048301528216602482015260009073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__9063c79eaa229060440161346a565b6000613afa6001546001600160a01b031690565b6001600160a01b031663d39e604383613b116109cb565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015613b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b8a9190614669565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015613bcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0691906143dc565b613bfb613e87565b6000613c0f6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03861660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa158015613c5e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c869190810190614ac5565b9150613c9d82604001518460ff9081169116141590565b15613ce157608082015160408084015190516304081d4960e41b81526001600160a01b03909216600483015260ff8086166024840152166044820152606401610619565b613cee8260200151613df2565b90509250929050565b613cff6134ab565b61030681613a14565b6000808060001985870985870292508281108382030391505080600003613d4257838281613d3857613d386150a8565b049250505061258a565b808411613d895760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401610619565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000613e066001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa158015613e55573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e7d9190810190614ac5565b6080015192915050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b600060208284031215613ed757600080fd5b81356001600160e01b03198116811461258a57600080fd5b6001600160601b038116811461030657600080fd5b600060208284031215613f1657600080fd5b813561258a81613eef565b60005b83811015613f3c578181015183820152602001613f24565b50506000910152565b60008151808452613f5d816020860160208601613f21565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a0830151613fda60c08401826001600160a01b03169052565b5060c083015160e080840152611f02610100840182613f45565b801515811461030657600080fd5b64ffffffffff8116811461030657600080fd5b60008060006060848603121561402a57600080fd5b833561403581613eef565b9250602084013561404581613ff4565b9150604084013561405581614002565b809150509250925092565b6001600160a01b038116811461030657600080fd5b60ff8116811461030657600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161022081016001600160401b03811182821017156140bd576140bd614084565b60405290565b60405160e081016001600160401b03811182821017156140bd576140bd614084565b6040516101e081016001600160401b03811182821017156140bd576140bd614084565b60405161010081016001600160401b03811182821017156140bd576140bd614084565b604051601f8201601f191681016001600160401b038111828210171561415357614153614084565b604052919050565b60006001600160401b0382111561417457614174614084565b50601f01601f191660200190565b600082601f83011261419357600080fd5b81356141a66141a18261415b565b61412b565b8181528460208386010111156141bb57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c087890312156141f157600080fd5b86356141fc81614060565b9550602087013561420c81613eef565b9450604087013561421c81614075565b9350606087013561422c81613ff4565b9250608087013561423c81614060565b915060a08701356001600160401b0381111561425757600080fd5b61426389828a01614182565b9150509295509295509295565b60006020828403121561428257600080fd5b81356001600160401b0381111561429857600080fd5b611f0284828501614182565b600080604083850312156142b757600080fd5b82356142c281614060565b915060208301356001600160401b038111156142dd57600080fd5b6142e985828601614182565b9150509250929050565b6000806040838503121561430657600080fd5b823561431181613eef565b9150602083013561432181614002565b809150509250929050565b60006020828403121561433e57600080fd5b813561258a81614060565b60008060006060848603121561435e57600080fd5b833561436981614060565b9250602084013561437981614060565b9150604084013561405581614060565b6000806040838503121561439c57600080fd5b82359150602083013561432181613eef565b600080604083850312156143c157600080fd5b82356143cc81614060565b9150602083013561432181614060565b6000602082840312156143ee57600080fd5b815161258a81614060565b805161440481613eef565b919050565b80516001600160c01b03198116811461440457600080fd5b805161440481614002565b600082601f83011261443d57600080fd5b815161444b6141a18261415b565b81815284602083860101111561446057600080fd5b614471826020830160208701613f21565b949350505050565b805161ffff8116811461440457600080fd5b60006020828403121561449d57600080fd5b81516001600160401b03808211156144b457600080fd5b9083019061022082860312156144c957600080fd5b6144d161409a565b6144da836143f9565b81526144e8602084016143f9565b60208201526144f960408401614409565b604082015261450a60608401614409565b606082015261451b608084016143f9565b608082015261452c60a084016143f9565b60a082015261453d60c084016143f9565b60c082015261454e60e08401614421565b60e0820152610100808401518381111561456757600080fd5b6145738882870161442c565b828401525050610120808401518381111561458d57600080fd5b6145998882870161442c565b82840152505061014091506145af828401614479565b8282015261016091506145c3828401614479565b8282015261018091506145d78284016143f9565b828201526101a091506145eb8284016143f9565b828201526101c091506145ff828401614421565b828201526101e09150614613828401614421565b828201526102009150614627828401614421565b91810191909152949350505050565b805161440481613ff4565b60006020828403121561465357600080fd5b815161258a81613ff4565b805161440481614075565b60006020828403121561467b57600080fd5b815161258a81614075565b60006020828403121561469857600080fd5b815161258a81614002565b80516001600160601b03168252600061022060208301516146cf60208601826001600160601b03169052565b5060408301516146eb60408601826001600160c01b0319169052565b50606083015161470760608601826001600160c01b0319169052565b50608083015161472260808601826001600160601b03169052565b5060a083015161473d60a08601826001600160601b03169052565b5060c083015161475860c08601826001600160601b03169052565b5060e083015161477160e086018264ffffffffff169052565b5061010080840151828287015261478a83870182613f45565b9250505061012080840151858303828701526147a68382613f45565b92505050610140808401516147c08287018261ffff169052565b50506101608381015161ffff1690850152610180808401516001600160601b03908116918601919091526101a080850151909116908501526101c08084015164ffffffffff908116918601919091526101e080850151821690860152610200938401511692909301919091525090565b6001600160a01b03841681526001600160601b0383166020820152606060408201819052600090614863908301846146a3565b95945050505050565b6001600160601b038416815260606020820152600061488e60608301856146a3565b905060ff83166040830152949350505050565b6000602082840312156148b357600080fd5b815162ffffff8116811461258a57600080fd5b600181811c908216806148da57607f821691505b6020821081036148fa57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561491257600080fd5b815161258a81613eef565b60018060a01b038616815260006001600160601b038087166020840152808616604084015260a0606084015261495660a08401866146a3565b91508084166080840152509695505050505050565b601f821115611d4757600081815260208120601f850160051c810160208610156149925750805b601f850160051c820191505b818110156149b15782815560010161499e565b505050505050565b81516001600160401b038111156149d2576149d2614084565b6149e6816149e084546148c6565b8461496b565b602080601f831160018114614a1b5760008415614a035750858301515b600019600386901b1c1916600185901b1785556149b1565b600085815260208120601f198616915b82811015614a4a57888601518255948401946001909101908401614a2b565b5085821015614a685787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215614a8a57600080fd5b81516001600160401b038116811461258a57600080fd5b805161440481614060565b600060208284031215614abe57600080fd5b5051919050565b600060208284031215614ad757600080fd5b81516001600160401b0380821115614aee57600080fd5b9083019060e08286031215614b0257600080fd5b614b0a6140c3565b614b13836143f9565b8152614b21602084016143f9565b6020820152614b326040840161465e565b6040820152614b4360608401614636565b6060820152614b5460808401614aa1565b6080820152614b6560a08401614aa1565b60a082015260c083015182811115614b7c57600080fd5b614b888782860161442c565b60c08301525095945050505050565b60006001600160601b03808a1683526001600160401b0360c01b808a166020850152818916604085015264ffffffffff8816606085015260e06080850152614be260e0850188613f45565b9590911660a08401529290921660c0909101525095945050505050565b60006101e08284031215614c1257600080fd5b614c1a6140e5565b825181526020808401519082015260408084015190820152606080840151908201526080808401519082015260a0808401519082015260c0808401519082015260e08084015190820152610100808401519082015261012080840151908201526101408084015190820152610160808401519082015261018080840151908201526101a080840151908201526101c0928301519281019290925250919050565b600060408284031215614ccc57600080fd5b604051604081018181106001600160401b0382111715614cee57614cee614084565b604052825181526020928301519281019290925250919050565b60006101408284031215614d1b57600080fd5b614d23614108565b614d2c83614aa1565b8152614d3a60208401614aa1565b6020820152614d4b604084016143f9565b6040820152614d5c606084016143f9565b6060820152614d6e8460808501614cba565b6080820152614d808460c08501614cba565b60a0820152614d926101008401614636565b60c0820152614da46101208401614aa1565b60e08201529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611f0657611f06614db0565b81810381811115611f0657611f06614db0565b6001600160a01b0393841681529190921660208201526001600160601b03909116604082015260600190565b60006101008284031215614e2b57600080fd5b60405160c081018181106001600160401b0382111715614e4d57614e4d614084565b6040528251614e5b81613eef565b81526020830151614e6b81614060565b6020820152614e7d8460408501614cba565b6040820152614e8f8460808501614cba565b606082015260c0830151614ea281614060565b608082015260e0929092015160a083015250919050565b805182526020808201519083015260408082015190830152606080820151908301526080808201519083015260a0808201519083015260c0808201519083015260e08082015190830152610100808201519083015261012080820151908301526101408082015190830152610160808201519083015261018080820151908301526101a080820151908301526101c090810151910152565b6001600160601b0385811682526001600160c01b031985166020830152610240820190614f816040840186614eb9565b8084166102208401525095945050505050565b600060208284031215614fa657600080fd5b81516001600160401b0380821115614fbd57600080fd5b9083019060e08286031215614fd157600080fd5b614fd96140c3565b825182811115614fe857600080fd5b614ff48782860161442c565b82525061500360208401614aa1565b602082015261501460408401614aa1565b604082015261502560608401614aa1565b6060820152615036608084016143f9565b6080820152614b6560a084016143f9565b6001600160601b0384811682526102208201906150676020840186614eb9565b80841661020084015250949350505050565b6000806040838503121561508c57600080fd5b825161509781614060565b602084015190925061432181614060565b634e487b7160e01b600052601260045260246000fdfe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220290ac94c5ac5ac2e3ee863105cd4dd7612c8b1eaebec25655630e5f9fda55c3c64736f6c63430008140033",
976
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101da5760003560e01c8063644c45e011610104578063a4f60839116100a2578063bf7e214f11610071578063bf7e214f14610440578063caf4e3d41461045e578063cc9fc59a14610466578063f7c34ee01461046e57600080fd5b8063a4f60839146103f6578063ada9652e14610409578063b68d18091461041e578063bbfbbfba1461042d57600080fd5b8063893d20e8116100de578063893d20e8146103ac5780638e32e979146103b45780638fb36037146103c75780639ffcede9146103e857600080fd5b8063644c45e014610354578063675393bf146103865780637a9e5e4b1461039957600080fd5b8063214cdb801161017c5780633d3cf0231161014b5780633d3cf023146102f857806349bb9e4b146103095780634d5e16a91461031c5780635ab1bd531461032f57600080fd5b8063214cdb80146102b757806327bb7a33146102ca578063329d6e74146102dd57806336fc697e146102f057600080fd5b80630fec111c116101b85780630fec111c14610252578063138461e0146102675780631c8179721461026f5780631eff4b221461028257600080fd5b806301ffc9a7146101df5780630aaba8e8146102215780630d8e6e2c14610236575b600080fd5b61020c6101ed366004613ec5565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b61023461022f366004613f04565b610481565b005b61023e6109cb565b60405162ffffff9091168152602001610218565b61025a610a55565b6040516102189190613f71565b610234610b76565b61023461027d366004614015565b610d78565b6102a97f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610218565b6102346102c5366004613ec5565b6111f2565b6102346102d83660046141d8565b61121f565b6102346102eb366004614270565b6112c4565b610234611411565b610234610306366004613f04565b50565b6102346103173660046142a4565b611457565b61023461032a3660046142f3565b611556565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610218565b6000805160206150bf833981519152546001600160601b03165b6040516001600160601b039091168152602001610218565b61023461039436600461432c565b611835565b6102346103a736600461432c565b611942565b61033c6119dc565b6102346103c2366004614349565b611b13565b6103cf611d4c565b6040516001600160e01b03199091168152602001610218565b6102346101da366004613f04565b61036e610404366004614389565b611d84565b6102a96000805160206150bf83398151915281565b60405160d38152602001610218565b61023461043b3660046142f3565b611f0c565b6000805160206150df833981519152546001600160a01b031661033c565b61033c6122d2565b61033c6122de565b61023461047c3660046143ae565b6122ea565b600061048d606e612361565b925050506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f591906143dc565b60405163bd7d9d8560e01b81526001600160601b03851660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa158015610548573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610570919081019061448b565b6101c081015160405163790a38ad60e01b815264ffffffffff909116600482015290915073__$d53880c81dc91c20799140d711e5ab8718$__9063790a38ad90602401602060405180830381865af41580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190614641565b15610622576040516308cbe08b60e21b81526001600160601b03851660048201526024015b60405180910390fd5b604051639096a1f360e01b81526001600160601b03851660048201526000906001600160a01b03841690639096a1f390602401602060405180830381865afa158015610672573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106969190614669565b90506106ab8160645b60ff9081169116141590565b156106dd57604051634de91cf360e11b81526001600160601b038616600482015260ff82166024820152604401610619565b610200820151604051638d38cd4b60e01b815264ffffffffff909116600482015273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401602060405180830381865af415801561073a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075e9190614641565b1561078757604051634b80547760e11b81526001600160601b0386166004820152602401610619565b6107998260a001518360c00151612503565b6107db5760a082015160c08301516040516348d5f6c560e01b81526001600160601b038089166004830152928316602482015291166044820152606401610619565b61016082015161ffff161561081f5761016082015160405163a5bb07ed60e01b81526001600160601b038716600482015261ffff9091166024820152604401610619565b73__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015610868573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088c9190614686565b64ffffffffff1661020083015260065460405163a8de511760e01b81526001600160a01b039091169063a8de5117906108cd90879089908790600401614830565b600060405180830381600087803b1580156108e757600080fd5b505af11580156108fb573d6000803e3d6000fd5b50505050836001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561093d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096191906143dc565b6001600160a01b031663985aeba7868460c85b6040518463ffffffff1660e01b81526004016109929392919061486c565b600060405180830381600087803b1580156109ac57600080fd5b505af11580156109c0573d6000803e3d6000fd5b505050505050505050565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af4158015610a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5091906148a1565b905090565b610a5d613e87565b6040805160e081018252600081527f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b038116602084015260ff600160601b8204811694840194909452600160681b90049092161515606082015230608082015260a08101610ad26119dc565b6001600160a01b03168152602001826001018054610aef906148c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1b906148c6565b8015610b685780601f10610b3d57610100808354040283529160200191610b68565b820191906000526020600020905b815481529060010190602001808311610b4b57829003601f168201915b505050505081525091505090565b60006000805160206150bf83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610be5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c099190614641565b15610c355780546040516301ab8b6760e21b81526001600160601b039091166004820152602401610619565b30610c486001546001600160a01b031690565b60405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa158015610c90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb49190614641565b610cdc5760405163b9304b0d60e01b81526001600160a01b0382166004820152602401610619565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038381166004830152919091169063d272ac1e90602401602060405180830381865afa158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d549190614900565b82546bffffffffffffffffffffffff19166001600160601b03919091161790915550565b600080610d85606e612361565b92505091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dee91906143dc565b60405163bd7d9d8560e01b81526001600160601b03881660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa158015610e41573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e69919081019061448b565b80519091506001600160601b03858116911614610eb7578051604051631a06208360e01b81526001600160601b03808a16600483015291821660248201529085166044820152606401610619565b604051639096a1f360e01b81526001600160601b0388166004820152610f33906001600160a01b03841690639096a1f390602401602060405180830381865afa158015610f08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2c9190614669565b600a61069f565b15610f5c57604051631130ddad60e21b81526001600160601b0388166004820152602401610619565b602864ffffffffff86161561101157606464ffffffffff8781166101c0850181905260e08501516040516352bcc5a760e11b81526004810192909252909116602482015290915073__$d53880c81dc91c20799140d711e5ab8718$__9063a5798b4e90604401602060405180830381865af4158015610fdf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110039190614686565b64ffffffffff166101e08301525b600073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801561105c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110809190614900565b905087156110ba57611097858a8560a00151612591565b90506110ab8360c001518460a00151613423565b6001600160601b031660c08401525b846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111c91906143dc565b6001600160a01b031663985aeba78a85856040518463ffffffff1660e01b815260040161114b9392919061486c565b600060405180830381600087803b15801561116557600080fd5b505af1158015611179573d6000803e3d6000fd5b5050600654604051631e63871f60e11b81526001600160a01b039091169250633cc70e3e91506111b59088908a908e908990889060040161491d565b600060405180830381600087803b1580156111cf57600080fd5b505af11580156111e3573d6000803e3d6000fd5b50505050505050505050505050565b6111fa6134ab565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b6112276134ab565b61123182876122ea565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3016112ba83826149b9565b5050505050505050565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c6112e66109cb565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015611326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134a9190614a78565b6000805160206150ff8339815191528054600160401b900460ff168061137d575080546001600160401b03808416911610155b1561139b5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556113c5836134e4565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b6114196134ab565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b6000805160206150ff8339815191528054600160401b810460ff1615906001600160401b031660008115801561148a5750825b90506000826001600160401b031660011480156114a65750303b155b9050811580156114b4575080155b156114d25760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156114fc57845460ff60401b1916600160401b1785555b61150687876134ec565b831561154d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b6000611562606e612361565b925050506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ca91906143dc565b60405163bd7d9d8560e01b81526001600160601b03861660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa15801561161d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611645919081019061448b565b6101c081015160405163790a38ad60e01b815264ffffffffff909116600482015290915073__$d53880c81dc91c20799140d711e5ab8718$__9063790a38ad90602401602060405180830381865af41580156116a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c99190614641565b6117155760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a5052532d3032303a414c52454144595f414354495641544544006044820152606401610619565b64ffffffffff8481166101c0830181905260e08301516040516352bcc5a760e11b81526004810192909252909116602482015273__$d53880c81dc91c20799140d711e5ab8718$__9063a5798b4e90604401602060405180830381865af4158015611784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a89190614686565b64ffffffffff166101e082015260408051631a99b41b60e31b815290516001600160a01b0385169163d4cda0d89160048083019260209291908290030181865afa1580156117fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181e91906143dc565b6001600160a01b031663985aeba786836064610974565b61183d6134ab565b806001600160a01b03163b6000036118735760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610619565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152630a3888e560e31b60048201526301ffc9a790602401602060405180830381865afa9250505080156118ed575060408051601f3d908101601f191682019092526118ea91810190614641565b60015b6119155760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610619565b8061193e5760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610619565b5050565b336119626000805160206150df833981519152546001600160a01b031690565b6001600160a01b0316816001600160a01b03161461199d5760405162d1953b60e31b81526001600160a01b0382166004820152602401610619565b816001600160a01b03163b6000036119d3576040516361798f2f60e11b81526001600160a01b0383166004820152602401610619565b61193e82613a14565b6000806000805160206150bf83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015611a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a709190614641565b15611afd576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af791906143dc565b91505090565b54600160601b90046001600160a01b0316919050565b611b1b6134ab565b611b9b83846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b819190614900565b603c6000856040518060200160405280600081525061121f565b6001600160a01b03821615611bb857611bb382613a75565b611d27565b6000611bcc6001546001600160a01b031690565b6001600160a01b031663d39e60436028604051632392b61b60e21b81526003600482015273__$9dab98ad7ae1a426029e5739f922230a41$__90638e4ad86c90602401602060405180830381865af4158015611c2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c509190614669565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015611c95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb991906143dc565b9050611d25816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2091906143dc565b613a75565b505b611d37634a531f3360e01b6111f2565b611d4763b68d180960e01b6111f2565b505050565b6000805160206150df833981519152805460009190600160a01b900460ff16611d76576000611af7565b638fb3603760e01b91505090565b6040516355205f0f60e01b81526001600160601b03821660048201526000908190611e1090859073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__906355205f0f90602401602060405180830381865af4158015611de7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0b9190614aac565b613a86565b604051632255341b60e11b81526004810182905290915073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__90634c41dd969073__$5ac3274b8cf1e01ea223bf093142af05b0$__906344aa683690602401602060405180830381865af4158015611e7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea39190614aac565b6040518263ffffffff1660e01b8152600401611ec191815260200190565b602060405180830381865af4158015611ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f029190614900565b9150505b92915050565b600080611f19606e612361565b92505091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8291906143dc565b60405163bd7d9d8560e01b81526001600160601b03871660048201529091506000906001600160a01b0383169063bd7d9d8590602401600060405180830381865afa158015611fd5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ffd919081019061448b565b90506120118160c001518260a00151612503565b156120485760c0810151604051636cc0f84b60e01b81526001600160601b0380891660048301529091166024820152604401610619565b600061205c8260a001518360c00151613a9b565b9050600061206b858984612591565b905061207b8360c0015183613423565b6001600160601b0390811660c08501526003546020850151604051635ed3256760e01b81526001600160a01b038981166004830152918416602482015292841660448401521690635ed3256790606401600060405180830381600087803b1580156120e557600080fd5b505af11580156120f9573d6000803e3d6000fd5b50505050846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561213b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215f91906143dc565b6001600160a01b031663985aeba7898560ff6040518463ffffffff1660e01b815260040161218f9392919061486c565b600060405180830381600087803b1580156121a957600080fd5b505af11580156121bd573d6000803e3d6000fd5b5050604051638d38cd4b60e01b815264ffffffffff8a16600482015273__$d53880c81dc91c20799140d711e5ab8718$__9250638d38cd4b9150602401602060405180830381865af4158015612217573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223b9190614641565b80156122c357506101c083015160405163790a38ad60e01b815264ffffffffff909116600482015273__$d53880c81dc91c20799140d711e5ab8718$__9063790a38ad90602401602060405180830381865af415801561229f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c39190614641565b156112ba576112ba8888611556565b6000610a506028613ae6565b6000610a506046613ae6565b6122f26134ab565b6122fb81611835565b612303611411565b6001600160a01b03821661232a5760405163f17ef42d60e01b815260040160405180910390fd5b506000805160206150bf83398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b600061236b613e87565b600061237f6001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa1580156123c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e99190614900565b92506123f58385613bf3565b8092508193505050806001600160a01b031663e5f6cd276040518163ffffffff1660e01b8152600401602060405180830381865afa15801561243b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245f91906143dc565b6080830151604051629b7b3560e61b81526001600160a01b0391821660048201529116906326decd4090602401602060405180830381865afa1580156124a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124cd9190614641565b156124fc57608082015160405163d53987e560e01b81526001600160a01b039091166004820152602401610619565b9193909250565b60405163c4cade9d60e01b81526001600160601b0380841660048301528216602482015260009073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__9063c4cade9d90604401602060405180830381865af4158015612566573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258a9190614641565b9392505050565b604051630a4d29dd60e31b81526001600160601b038216600482015260009073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__906352694ee890602401602060405180830381865af41580156125ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126109190614641565b156126895773__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801561265e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126829190614900565b905061258a565b600061269d6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03861660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa1580156126ec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127149190810190614ac5565b6020015190506000856001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561275a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277e91906143dc565b60405163bd7d9d8560e01b81526001600160601b03871660048201526001600160a01b03919091169063bd7d9d8590602401600060405180830381865afa1580156127cd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127f5919081019061448b565b6007546060820151608083015160e084015161010085015160208601516040808801519051637a5ff29d60e11b81529798506000976001600160a01b039097169663f4bfe53a96612852968c969195909491939092600401614b97565b6101e060405180830381865afa158015612870573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128949190614bff565b60405163046e44af60e11b81526001600160601b038716600482015290915073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__906308dc895e90602401602060405180830381865af41580156128ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129139190614aac565b8160400151146129d257858573__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__634c41dd9684604001516040518263ffffffff1660e01b815260040161295c91815260200190565b602060405180830381865af4158015612979573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061299d9190614900565b6040516338b9ad1b60e11b81526001600160601b03938416600482015291831660248301529091166044820152606401610619565b60006129e66001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03891660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612a35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5991906143dc565b90506000886001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612abf91906143dc565b60405163242bdc1960e21b81526001600160601b03871660048201526001600160a01b0391909116906390af70649060240161014060405180830381865afa158015612b0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b339190614d08565b90506000816020015190508360400151816001600160a01b03166321df0da76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ba591906143dc565b604051636eb1769f60e11b81526001600160a01b0386811660048301528481166024830152919091169063dd62ed3e90604401602060405180830381865afa158015612bf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c199190614aac565b1015612c58576040808501519051636d675c4360e01b81526001600160a01b038086166004830152831660248201526044810191909152606401610619565b600073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__634c41dd968660e001518760600151612c889190614dc6565b6040518263ffffffff1660e01b8152600401612ca691815260200190565b602060405180830381865af4158015612cc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ce79190614900565b9050600073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__634c41dd96876101c001518861014001518960c00151612d209190614dc6565b612d2a9190614dd9565b6040518263ffffffff1660e01b8152600401612d4891815260200190565b602060405180830381865af4158015612d65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d899190614900565b905060008661010001518760800151612da29190614dc6565b905060008761012001518860a00151612dbb9190614dc6565b9050600073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__634c41dd9683858c60000151612dea9190614dc6565b612df49190614dc6565b6040518263ffffffff1660e01b8152600401612e1291815260200190565b602060405180830381865af4158015612e2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e539190614900565b8951604051632620eecb60e11b815291925073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__91634c41dd9691612e919160040190815260200190565b602060405180830381865af4158015612eae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed29190614900565b60e088015160405163c661667d60e01b8152919d50906001600160a01b0388169063c661667d90612f0b908c9085908b90600401614dec565b600060405180830381600087803b158015612f2557600080fd5b505af1158015612f39573d6000803e3d6000fd5b505050505060008f6001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa291906143dc565b6040808a01519051639ad69c6760e01b81526001600160601b0390911660048201526001600160a01b039190911690639ad69c679060240161010060405180830381865afa158015612ff8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061301c9190614e18565b608081015160405163c661667d60e01b8152919250906001600160a01b0389169063c661667d90613055908d9085908b90600401614dec565b600060405180830381600087803b15801561306f57600080fd5b505af1158015613083573d6000803e3d6000fd5b50505050600560009054906101000a90046001600160a01b03166001600160a01b03166392e5fab68a604001518e604001518e8a6040518563ffffffff1660e01b81526004016130d69493929190614f51565b600060405180830381600087803b1580156130f057600080fd5b505af1158015613104573d6000803e3d6000fd5b50505050505060008f6001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561314a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061316e91906143dc565b606089015160405163f0ea17c360e01b81526001600160601b0390911660048201526001600160a01b03919091169063f0ea17c390602401600060405180830381865afa1580156131c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131eb9190810190614f94565b6060015160405163c661667d60e01b81529091506001600160a01b0388169063c661667d90613222908c9085908790600401614dec565b600060405180830381600087803b15801561323c57600080fd5b505af1158015613250573d6000803e3d6000fd5b505060065460208e015160405163991cbfb360e01b81526001600160a01b03909216935063991cbfb3925061328b918e908790600401615047565b600060405180830381600087803b1580156132a557600080fd5b505af11580156132b9573d6000803e3d6000fd5b505050505060006132d36132cd8684613423565b87613423565b60405163046e44af60e11b81526001600160601b038216600482015290915073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__906308dc895e90602401602060405180830381865af415801561332e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133529190614aac565b8a6040015114613410578e73__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__634c41dd968c604001516040518263ffffffff1660e01b815260040161339a91815260200190565b602060405180830381865af41580156133b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133db9190614900565b6040516310c696cd60e31b81526001600160601b03928316600482015290821660248201529082166044820152606401610619565b5050505050505050505050509392505050565b60405163274acb3560e01b81526001600160601b0380841660048301528216602482015260009073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__9063274acb35906044015b602060405180830381865af4158015613487573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258a9190614900565b6000805160206150ff83398151915254600160401b900460ff166134e257604051631afcd79f60e31b815260040160405180910390fd5b565b6101da6134ab565b6000805160206150ff8339815191528054600160401b810460ff1615906001600160401b031660008115801561351f5750825b90506000826001600160401b0316600114801561353b5750303b155b905081158015613549575080155b156135675760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561359157845460ff60401b1916600160401b1785555b600080878060200190518101906135a89190615079565b90925090506135b98260008b611b13565b60006135c36109cb565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015613618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061363c9190614669565b90506136506001546001600160a01b031690565b6001600160a01b031663d39e6043608c6040516001600160e01b031960e084901b16815260ff91821660048201529084166024820152604401602060405180830381865afa1580156136a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ca91906143dc565b600680546001600160a01b0319166001600160a01b039283161790556001541663d39e604360dc6040516001600160e01b031960e084901b16815260ff91821660048201529084166024820152604401602060405180830381865afa158015613737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375b91906143dc565b600380546001600160a01b0319166001600160a01b039283161790556001541663d39e604360d46040516001600160e01b031960e084901b16815260ff91821660048201529084166024820152604401602060405180830381865afa1580156137c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137ec91906143dc565b600480546001600160a01b0319166001600160a01b039283161790556001541663d39e604360d26040516001600160e01b031960e084901b16815260ff91821660048201529084166024820152604401602060405180830381865afa158015613859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061387d91906143dc565b600280546001600160a01b0319166001600160a01b039283161790556001541663d39e604360786040516001600160e01b031960e084901b16815260ff91821660048201529084166024820152604401602060405180830381865afa1580156138ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061390e91906143dc565b600580546001600160a01b0319166001600160a01b039283161790556001541663d39e604360e66040516001600160e01b031960e084901b16815260ff91821660048201529084166024820152604401602060405180830381865afa15801561397b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399f91906143dc565b600780546001600160a01b0319166001600160a01b03929092169190911790556139cf63735cb6bd60e11b6111f2565b505050831561154d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001611544565b6000805160206150df83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b613a7d6134ab565b61030681613cf7565b600061258a8383670de0b6b3a7640000613d08565b6040516363cf551160e11b81526001600160601b0380841660048301528216602482015260009073__$ea4dcf94bcd4a5d2e83a2341ef616bff8d$__9063c79eaa229060440161346a565b6000613afa6001546001600160a01b031690565b6001600160a01b031663d39e604383613b116109cb565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015613b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b8a9190614669565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015613bcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0691906143dc565b613bfb613e87565b6000613c0f6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03861660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa158015613c5e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c869190810190614ac5565b9150613c9d82604001518460ff9081169116141590565b15613ce157608082015160408084015190516304081d4960e41b81526001600160a01b03909216600483015260ff8086166024840152166044820152606401610619565b613cee8260200151613df2565b90509250929050565b613cff6134ab565b61030681613a14565b6000808060001985870985870292508281108382030391505080600003613d4257838281613d3857613d386150a8565b049250505061258a565b808411613d895760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401610619565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000613e066001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa158015613e55573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e7d9190810190614ac5565b6080015192915050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b600060208284031215613ed757600080fd5b81356001600160e01b03198116811461258a57600080fd5b6001600160601b038116811461030657600080fd5b600060208284031215613f1657600080fd5b813561258a81613eef565b60005b83811015613f3c578181015183820152602001613f24565b50506000910152565b60008151808452613f5d816020860160208601613f21565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a0830151613fda60c08401826001600160a01b03169052565b5060c083015160e080840152611f02610100840182613f45565b801515811461030657600080fd5b64ffffffffff8116811461030657600080fd5b60008060006060848603121561402a57600080fd5b833561403581613eef565b9250602084013561404581613ff4565b9150604084013561405581614002565b809150509250925092565b6001600160a01b038116811461030657600080fd5b60ff8116811461030657600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161022081016001600160401b03811182821017156140bd576140bd614084565b60405290565b60405160e081016001600160401b03811182821017156140bd576140bd614084565b6040516101e081016001600160401b03811182821017156140bd576140bd614084565b60405161010081016001600160401b03811182821017156140bd576140bd614084565b604051601f8201601f191681016001600160401b038111828210171561415357614153614084565b604052919050565b60006001600160401b0382111561417457614174614084565b50601f01601f191660200190565b600082601f83011261419357600080fd5b81356141a66141a18261415b565b61412b565b8181528460208386010111156141bb57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c087890312156141f157600080fd5b86356141fc81614060565b9550602087013561420c81613eef565b9450604087013561421c81614075565b9350606087013561422c81613ff4565b9250608087013561423c81614060565b915060a08701356001600160401b0381111561425757600080fd5b61426389828a01614182565b9150509295509295509295565b60006020828403121561428257600080fd5b81356001600160401b0381111561429857600080fd5b611f0284828501614182565b600080604083850312156142b757600080fd5b82356142c281614060565b915060208301356001600160401b038111156142dd57600080fd5b6142e985828601614182565b9150509250929050565b6000806040838503121561430657600080fd5b823561431181613eef565b9150602083013561432181614002565b809150509250929050565b60006020828403121561433e57600080fd5b813561258a81614060565b60008060006060848603121561435e57600080fd5b833561436981614060565b9250602084013561437981614060565b9150604084013561405581614060565b6000806040838503121561439c57600080fd5b82359150602083013561432181613eef565b600080604083850312156143c157600080fd5b82356143cc81614060565b9150602083013561432181614060565b6000602082840312156143ee57600080fd5b815161258a81614060565b805161440481613eef565b919050565b80516001600160c01b03198116811461440457600080fd5b805161440481614002565b600082601f83011261443d57600080fd5b815161444b6141a18261415b565b81815284602083860101111561446057600080fd5b614471826020830160208701613f21565b949350505050565b805161ffff8116811461440457600080fd5b60006020828403121561449d57600080fd5b81516001600160401b03808211156144b457600080fd5b9083019061022082860312156144c957600080fd5b6144d161409a565b6144da836143f9565b81526144e8602084016143f9565b60208201526144f960408401614409565b604082015261450a60608401614409565b606082015261451b608084016143f9565b608082015261452c60a084016143f9565b60a082015261453d60c084016143f9565b60c082015261454e60e08401614421565b60e0820152610100808401518381111561456757600080fd5b6145738882870161442c565b828401525050610120808401518381111561458d57600080fd5b6145998882870161442c565b82840152505061014091506145af828401614479565b8282015261016091506145c3828401614479565b8282015261018091506145d78284016143f9565b828201526101a091506145eb8284016143f9565b828201526101c091506145ff828401614421565b828201526101e09150614613828401614421565b828201526102009150614627828401614421565b91810191909152949350505050565b805161440481613ff4565b60006020828403121561465357600080fd5b815161258a81613ff4565b805161440481614075565b60006020828403121561467b57600080fd5b815161258a81614075565b60006020828403121561469857600080fd5b815161258a81614002565b80516001600160601b03168252600061022060208301516146cf60208601826001600160601b03169052565b5060408301516146eb60408601826001600160c01b0319169052565b50606083015161470760608601826001600160c01b0319169052565b50608083015161472260808601826001600160601b03169052565b5060a083015161473d60a08601826001600160601b03169052565b5060c083015161475860c08601826001600160601b03169052565b5060e083015161477160e086018264ffffffffff169052565b5061010080840151828287015261478a83870182613f45565b9250505061012080840151858303828701526147a68382613f45565b92505050610140808401516147c08287018261ffff169052565b50506101608381015161ffff1690850152610180808401516001600160601b03908116918601919091526101a080850151909116908501526101c08084015164ffffffffff908116918601919091526101e080850151821690860152610200938401511692909301919091525090565b6001600160a01b03841681526001600160601b0383166020820152606060408201819052600090614863908301846146a3565b95945050505050565b6001600160601b038416815260606020820152600061488e60608301856146a3565b905060ff83166040830152949350505050565b6000602082840312156148b357600080fd5b815162ffffff8116811461258a57600080fd5b600181811c908216806148da57607f821691505b6020821081036148fa57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561491257600080fd5b815161258a81613eef565b60018060a01b038616815260006001600160601b038087166020840152808616604084015260a0606084015261495660a08401866146a3565b91508084166080840152509695505050505050565b601f821115611d4757600081815260208120601f850160051c810160208610156149925750805b601f850160051c820191505b818110156149b15782815560010161499e565b505050505050565b81516001600160401b038111156149d2576149d2614084565b6149e6816149e084546148c6565b8461496b565b602080601f831160018114614a1b5760008415614a035750858301515b600019600386901b1c1916600185901b1785556149b1565b600085815260208120601f198616915b82811015614a4a57888601518255948401946001909101908401614a2b565b5085821015614a685787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215614a8a57600080fd5b81516001600160401b038116811461258a57600080fd5b805161440481614060565b600060208284031215614abe57600080fd5b5051919050565b600060208284031215614ad757600080fd5b81516001600160401b0380821115614aee57600080fd5b9083019060e08286031215614b0257600080fd5b614b0a6140c3565b614b13836143f9565b8152614b21602084016143f9565b6020820152614b326040840161465e565b6040820152614b4360608401614636565b6060820152614b5460808401614aa1565b6080820152614b6560a08401614aa1565b60a082015260c083015182811115614b7c57600080fd5b614b888782860161442c565b60c08301525095945050505050565b60006001600160601b03808a1683526001600160401b0360c01b808a166020850152818916604085015264ffffffffff8816606085015260e06080850152614be260e0850188613f45565b9590911660a08401529290921660c0909101525095945050505050565b60006101e08284031215614c1257600080fd5b614c1a6140e5565b825181526020808401519082015260408084015190820152606080840151908201526080808401519082015260a0808401519082015260c0808401519082015260e08084015190820152610100808401519082015261012080840151908201526101408084015190820152610160808401519082015261018080840151908201526101a080840151908201526101c0928301519281019290925250919050565b600060408284031215614ccc57600080fd5b604051604081018181106001600160401b0382111715614cee57614cee614084565b604052825181526020928301519281019290925250919050565b60006101408284031215614d1b57600080fd5b614d23614108565b614d2c83614aa1565b8152614d3a60208401614aa1565b6020820152614d4b604084016143f9565b6040820152614d5c606084016143f9565b6060820152614d6e8460808501614cba565b6080820152614d808460c08501614cba565b60a0820152614d926101008401614636565b60c0820152614da46101208401614aa1565b60e08201529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611f0657611f06614db0565b81810381811115611f0657611f06614db0565b6001600160a01b0393841681529190921660208201526001600160601b03909116604082015260600190565b60006101008284031215614e2b57600080fd5b60405160c081018181106001600160401b0382111715614e4d57614e4d614084565b6040528251614e5b81613eef565b81526020830151614e6b81614060565b6020820152614e7d8460408501614cba565b6040820152614e8f8460808501614cba565b606082015260c0830151614ea281614060565b608082015260e0929092015160a083015250919050565b805182526020808201519083015260408082015190830152606080820151908301526080808201519083015260a0808201519083015260c0808201519083015260e08082015190830152610100808201519083015261012080820151908301526101408082015190830152610160808201519083015261018080820151908301526101a080820151908301526101c090810151910152565b6001600160601b0385811682526001600160c01b031985166020830152610240820190614f816040840186614eb9565b8084166102208401525095945050505050565b600060208284031215614fa657600080fd5b81516001600160401b0380821115614fbd57600080fd5b9083019060e08286031215614fd157600080fd5b614fd96140c3565b825182811115614fe857600080fd5b614ff48782860161442c565b82525061500360208401614aa1565b602082015261501460408401614aa1565b604082015261502560608401614aa1565b6060820152615036608084016143f9565b6080820152614b6560a084016143f9565b6001600160601b0384811682526102208201906150676020840186614eb9565b80841661020084015250949350505050565b6000806040838503121561508c57600080fd5b825161509781614060565b602084015190925061432181614060565b634e487b7160e01b600052601260045260246000fdfe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220290ac94c5ac5ac2e3ee863105cd4dd7612c8b1eaebec25655630e5f9fda55c3c64736f6c63430008140033",
975
977
  "linkReferences": {
976
- "contracts/types/Blocknumber.sol": {
977
- "BlocknumberLib": [
978
+ "contracts/types/Amount.sol": {
979
+ "AmountLib": [
978
980
  {
979
981
  "length": 20,
980
- "start": 5123
981
- }
982
- ]
983
- },
984
- "contracts/types/Fee.sol": {
985
- "FeeLib": [
982
+ "start": 4347
983
+ },
984
+ {
985
+ "length": 20,
986
+ "start": 7827
987
+ },
988
+ {
989
+ "length": 20,
990
+ "start": 7951
991
+ },
992
+ {
993
+ "length": 20,
994
+ "start": 9746
995
+ },
996
+ {
997
+ "length": 20,
998
+ "start": 9880
999
+ },
1000
+ {
1001
+ "length": 20,
1002
+ "start": 9981
1003
+ },
986
1004
  {
987
1005
  "length": 20,
988
- "start": 11809
1006
+ "start": 10651
989
1007
  },
990
1008
  {
991
1009
  "length": 20,
992
- "start": 12072
1010
+ "start": 10759
993
1011
  },
994
1012
  {
995
1013
  "length": 20,
996
- "start": 13746
1014
+ "start": 11586
997
1015
  },
998
1016
  {
999
1017
  "length": 20,
1000
- "start": 14009
1018
+ "start": 11731
1001
1019
  },
1002
1020
  {
1003
1021
  "length": 20,
1004
- "start": 14375
1022
+ "start": 11943
1005
1023
  },
1006
1024
  {
1007
1025
  "length": 20,
1008
- "start": 14515
1026
+ "start": 12109
1027
+ },
1028
+ {
1029
+ "length": 20,
1030
+ "start": 13274
1031
+ },
1032
+ {
1033
+ "length": 20,
1034
+ "start": 13381
1035
+ },
1036
+ {
1037
+ "length": 20,
1038
+ "start": 13618
1039
+ },
1040
+ {
1041
+ "length": 20,
1042
+ "start": 15274
1009
1043
  }
1010
1044
  ]
1011
1045
  },
@@ -1013,11 +1047,11 @@
1013
1047
  "NftIdLib": [
1014
1048
  {
1015
1049
  "length": 20,
1016
- "start": 3918
1050
+ "start": 3217
1017
1051
  },
1018
1052
  {
1019
1053
  "length": 20,
1020
- "start": 7011
1054
+ "start": 6904
1021
1055
  }
1022
1056
  ]
1023
1057
  },
@@ -1025,47 +1059,35 @@
1025
1059
  "TimestampLib": [
1026
1060
  {
1027
1061
  "length": 20,
1028
- "start": 1996
1029
- },
1030
- {
1031
- "length": 20,
1032
- "start": 2345
1033
- },
1034
- {
1035
- "length": 20,
1036
- "start": 2624
1037
- },
1038
- {
1039
- "length": 20,
1040
- "start": 2773
1062
+ "start": 1660
1041
1063
  },
1042
1064
  {
1043
1065
  "length": 20,
1044
- "start": 2950
1066
+ "start": 2022
1045
1067
  },
1046
1068
  {
1047
1069
  "length": 20,
1048
- "start": 4695
1070
+ "start": 2311
1049
1071
  },
1050
1072
  {
1051
1073
  "length": 20,
1052
- "start": 4914
1074
+ "start": 4235
1053
1075
  },
1054
1076
  {
1055
1077
  "length": 20,
1056
- "start": 6363
1078
+ "start": 5969
1057
1079
  },
1058
1080
  {
1059
1081
  "length": 20,
1060
- "start": 8558
1082
+ "start": 6192
1061
1083
  },
1062
1084
  {
1063
1085
  "length": 20,
1064
- "start": 8696
1086
+ "start": 8897
1065
1087
  },
1066
1088
  {
1067
1089
  "length": 20,
1068
- "start": 14942
1090
+ "start": 9035
1069
1091
  }
1070
1092
  ]
1071
1093
  },
@@ -1073,11 +1095,7 @@
1073
1095
  "UFixedLib": [
1074
1096
  {
1075
1097
  "length": 20,
1076
- "start": 5251
1077
- },
1078
- {
1079
- "length": 20,
1080
- "start": 5384
1098
+ "start": 7979
1081
1099
  }
1082
1100
  ]
1083
1101
  },
@@ -1085,53 +1103,95 @@
1085
1103
  "VersionLib": [
1086
1104
  {
1087
1105
  "length": 20,
1088
- "start": 3357
1106
+ "start": 2776
1107
+ },
1108
+ {
1109
+ "length": 20,
1110
+ "start": 5036
1089
1111
  },
1090
1112
  {
1091
1113
  "length": 20,
1092
- "start": 7473
1114
+ "start": 14020
1093
1115
  },
1094
1116
  {
1095
1117
  "length": 20,
1096
- "start": 9741
1118
+ "start": 15378
1119
+ }
1120
+ ],
1121
+ "VersionPartLib": [
1122
+ {
1123
+ "length": 20,
1124
+ "start": 7384
1097
1125
  }
1098
1126
  ]
1099
1127
  }
1100
1128
  },
1101
1129
  "deployedLinkReferences": {
1102
- "contracts/types/Blocknumber.sol": {
1103
- "BlocknumberLib": [
1130
+ "contracts/types/Amount.sol": {
1131
+ "AmountLib": [
1104
1132
  {
1105
1133
  "length": 20,
1106
- "start": 4809
1107
- }
1108
- ]
1109
- },
1110
- "contracts/types/Fee.sol": {
1111
- "FeeLib": [
1134
+ "start": 4117
1135
+ },
1136
+ {
1137
+ "length": 20,
1138
+ "start": 7597
1139
+ },
1140
+ {
1141
+ "length": 20,
1142
+ "start": 7721
1143
+ },
1112
1144
  {
1113
1145
  "length": 20,
1114
- "start": 11495
1146
+ "start": 9516
1115
1147
  },
1116
1148
  {
1117
1149
  "length": 20,
1118
- "start": 11758
1150
+ "start": 9650
1119
1151
  },
1120
1152
  {
1121
1153
  "length": 20,
1122
- "start": 13432
1154
+ "start": 9751
1123
1155
  },
1124
1156
  {
1125
1157
  "length": 20,
1126
- "start": 13695
1158
+ "start": 10421
1127
1159
  },
1128
1160
  {
1129
1161
  "length": 20,
1130
- "start": 14061
1162
+ "start": 10529
1131
1163
  },
1132
1164
  {
1133
1165
  "length": 20,
1134
- "start": 14201
1166
+ "start": 11356
1167
+ },
1168
+ {
1169
+ "length": 20,
1170
+ "start": 11501
1171
+ },
1172
+ {
1173
+ "length": 20,
1174
+ "start": 11713
1175
+ },
1176
+ {
1177
+ "length": 20,
1178
+ "start": 11879
1179
+ },
1180
+ {
1181
+ "length": 20,
1182
+ "start": 13044
1183
+ },
1184
+ {
1185
+ "length": 20,
1186
+ "start": 13151
1187
+ },
1188
+ {
1189
+ "length": 20,
1190
+ "start": 13388
1191
+ },
1192
+ {
1193
+ "length": 20,
1194
+ "start": 15044
1135
1195
  }
1136
1196
  ]
1137
1197
  },
@@ -1139,11 +1199,11 @@
1139
1199
  "NftIdLib": [
1140
1200
  {
1141
1201
  "length": 20,
1142
- "start": 3604
1202
+ "start": 2987
1143
1203
  },
1144
1204
  {
1145
1205
  "length": 20,
1146
- "start": 6697
1206
+ "start": 6674
1147
1207
  }
1148
1208
  ]
1149
1209
  },
@@ -1151,47 +1211,35 @@
1151
1211
  "TimestampLib": [
1152
1212
  {
1153
1213
  "length": 20,
1154
- "start": 1682
1155
- },
1156
- {
1157
- "length": 20,
1158
- "start": 2031
1159
- },
1160
- {
1161
- "length": 20,
1162
- "start": 2310
1163
- },
1164
- {
1165
- "length": 20,
1166
- "start": 2459
1214
+ "start": 1430
1167
1215
  },
1168
1216
  {
1169
1217
  "length": 20,
1170
- "start": 2636
1218
+ "start": 1792
1171
1219
  },
1172
1220
  {
1173
1221
  "length": 20,
1174
- "start": 4381
1222
+ "start": 2081
1175
1223
  },
1176
1224
  {
1177
1225
  "length": 20,
1178
- "start": 4600
1226
+ "start": 4005
1179
1227
  },
1180
1228
  {
1181
1229
  "length": 20,
1182
- "start": 6049
1230
+ "start": 5739
1183
1231
  },
1184
1232
  {
1185
1233
  "length": 20,
1186
- "start": 8244
1234
+ "start": 5962
1187
1235
  },
1188
1236
  {
1189
1237
  "length": 20,
1190
- "start": 8382
1238
+ "start": 8667
1191
1239
  },
1192
1240
  {
1193
1241
  "length": 20,
1194
- "start": 14628
1242
+ "start": 8805
1195
1243
  }
1196
1244
  ]
1197
1245
  },
@@ -1199,11 +1247,7 @@
1199
1247
  "UFixedLib": [
1200
1248
  {
1201
1249
  "length": 20,
1202
- "start": 4937
1203
- },
1204
- {
1205
- "length": 20,
1206
- "start": 5070
1250
+ "start": 7749
1207
1251
  }
1208
1252
  ]
1209
1253
  },
@@ -1211,15 +1255,25 @@
1211
1255
  "VersionLib": [
1212
1256
  {
1213
1257
  "length": 20,
1214
- "start": 3043
1258
+ "start": 2546
1259
+ },
1260
+ {
1261
+ "length": 20,
1262
+ "start": 4806
1215
1263
  },
1216
1264
  {
1217
1265
  "length": 20,
1218
- "start": 7159
1266
+ "start": 13790
1219
1267
  },
1220
1268
  {
1221
1269
  "length": 20,
1222
- "start": 9427
1270
+ "start": 15148
1271
+ }
1272
+ ],
1273
+ "VersionPartLib": [
1274
+ {
1275
+ "length": 20,
1276
+ "start": 7154
1223
1277
  }
1224
1278
  ]
1225
1279
  }