@etherisc/gif-next 0.0.2-d679de9-140 → 0.0.2-d8b116d-201
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +235 -7
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +176 -23
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +618 -0
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +129 -23
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +152 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +74 -181
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +55 -177
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +463 -63
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +494 -70
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +2 -2
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +2 -2
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +2 -2
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +2 -2
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +2 -2
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +2 -2
- package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +101 -0
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +1132 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +750 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +915 -1096
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +480 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2518 -1092
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +917 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1422 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +931 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +508 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +272 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +276 -36
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +51 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +45 -127
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +55 -245
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +6 -6
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +211 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IDistribution.sol/IDistribution.json} +2 -2
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
- package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +401 -65
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +716 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +444 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +177 -75
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/{base/ServiceBase.sol/ServiceBase.json → service/IDistributionService.sol/IDistributionService.json} +204 -58
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +342 -49
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +334 -51
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +551 -51
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +460 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +552 -78
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +488 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +186 -12
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +377 -37
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +947 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +487 -123
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1293 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +517 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +410 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +127 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +117 -37
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +175 -54
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -14
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +190 -37
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/RegisterableUpgradable.sol/RegisterableUpgradable.json} +199 -83
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/shared/Service.sol/Service.json +468 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -14
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +10 -10
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +204 -36
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +44 -10
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +283 -62
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +12 -12
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +103 -23
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
- package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +52 -13
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +4 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +40 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
- package/contracts/components/BaseComponent.sol +26 -23
- package/contracts/components/Distribution.sol +163 -0
- package/contracts/components/IBaseComponent.sol +9 -3
- package/contracts/components/IDistributionComponent.sol +44 -0
- package/contracts/components/IPoolComponent.sol +15 -10
- package/contracts/components/IProductComponent.sol +25 -9
- package/contracts/components/Pool.sol +106 -33
- package/contracts/components/Product.sol +204 -32
- package/contracts/experiment/cloning/Cloner.sol +47 -0
- package/contracts/instance/AccessManagedSimple.sol +115 -0
- package/contracts/instance/AccessManagerSimple.sol +692 -0
- package/contracts/instance/BundleManager.sol +143 -0
- package/contracts/instance/Cloneable.sol +47 -0
- package/contracts/instance/IAccessManagerSimple.sol +391 -0
- package/contracts/instance/IInstance.sol +47 -45
- package/contracts/instance/IInstanceService.sol +30 -0
- package/contracts/instance/Instance.sol +426 -51
- package/contracts/instance/InstanceAccessManager.sol +288 -0
- package/contracts/instance/InstanceReader.sol +315 -0
- package/contracts/instance/InstanceService.sol +201 -0
- package/contracts/instance/InstanceServiceManager.sol +57 -0
- package/contracts/instance/ObjectManager.sol +95 -0
- package/contracts/instance/base/ComponentServiceBase.sol +102 -10
- package/contracts/instance/base/IInstanceBase.sol +11 -2
- package/contracts/instance/base/IKeyValueStore.sol +13 -13
- package/contracts/instance/base/ILifecycle.sol +3 -3
- package/contracts/instance/base/KeyValueStore.sol +53 -37
- package/contracts/instance/base/Lifecycle.sol +16 -11
- package/contracts/instance/module/IAccess.sol +38 -0
- package/contracts/instance/module/IBundle.sol +20 -0
- package/contracts/instance/module/IDistribution.sol +39 -0
- package/contracts/instance/module/IPolicy.sol +45 -0
- package/contracts/instance/module/IRisk.sol +11 -0
- package/contracts/instance/module/ISetup.sol +46 -0
- package/contracts/instance/module/ITreasury.sol +23 -0
- package/contracts/instance/service/ComponentOwnerService.sol +244 -97
- package/contracts/instance/service/DistributionService.sol +88 -0
- package/contracts/instance/service/DistributionServiceManager.sol +54 -0
- package/contracts/instance/service/IComponentOwnerService.sol +1 -3
- package/contracts/instance/service/IDistributionService.sol +12 -0
- package/contracts/instance/service/IPoolService.sol +14 -1
- package/contracts/instance/service/IProductService.sol +59 -7
- package/contracts/instance/service/PoolService.sol +123 -42
- package/contracts/instance/service/PoolServiceManager.sol +54 -0
- package/contracts/instance/service/ProductService.sol +340 -133
- package/contracts/instance/service/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +80 -37
- package/contracts/registry/IRegistry.sol +49 -25
- package/contracts/registry/IRegistryService.sol +50 -0
- package/contracts/registry/ITransferInterceptor.sol +6 -0
- package/contracts/registry/Registry.sol +337 -270
- package/contracts/registry/RegistryService.sol +358 -0
- package/contracts/registry/RegistryServiceManager.sol +80 -0
- package/contracts/registry/TokenRegistry.sol +111 -0
- package/contracts/shared/ContractDeployerLib.sol +72 -0
- package/contracts/shared/ERC165.sol +6 -2
- package/contracts/shared/INftOwnable.sol +22 -0
- package/contracts/shared/IRegisterable.sol +8 -15
- package/contracts/{instance/base → shared}/IService.sol +3 -3
- package/contracts/shared/IVersionable.sol +55 -11
- package/contracts/shared/NftOwnable.sol +134 -0
- package/contracts/shared/ProxyManager.sol +94 -0
- package/contracts/shared/Registerable.sol +63 -59
- package/contracts/shared/RegisterableUpgradable.sol +16 -0
- package/contracts/shared/Service.sol +55 -0
- package/contracts/shared/TokenHandler.sol +27 -0
- package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
- package/contracts/shared/Versionable.sol +113 -55
- package/contracts/test/TestFee.sol +2 -2
- package/contracts/test/TestRegisterable.sol +5 -6
- package/contracts/test/TestRoleId.sol +2 -2
- package/contracts/test/TestService.sol +5 -13
- package/contracts/test/Usdc.sol +26 -0
- package/contracts/types/DistributorType.sol +55 -0
- package/contracts/types/Fee.sol +10 -5
- package/contracts/types/Key32.sol +8 -3
- package/contracts/types/NftIdSet.sol +26 -24
- package/contracts/types/NumberId.sol +52 -0
- package/contracts/types/ObjectType.sol +51 -14
- package/contracts/types/Referral.sol +85 -0
- package/contracts/types/RiskId.sol +43 -0
- package/contracts/types/RoleId.sol +65 -11
- package/contracts/types/StateId.sol +5 -1
- package/contracts/types/Timestamp.sol +7 -3
- package/contracts/types/UFixed.sol +139 -24
- package/contracts/types/Version.sol +13 -1
- package/package.json +7 -3
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
- package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -296
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -296
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -10
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -10
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
- package/contracts/experiment/statemachine/README.md +0 -112
- package/contracts/instance/IInstanceLinked.sol +0 -8
- package/contracts/instance/base/InstanceBase.sol +0 -80
- package/contracts/instance/base/ModuleBase.sol +0 -52
- package/contracts/instance/base/ServiceBase.sol +0 -37
- package/contracts/instance/module/access/Access.sol +0 -149
- package/contracts/instance/module/access/IAccess.sol +0 -53
- package/contracts/instance/module/bundle/BundleModule.sol +0 -136
- package/contracts/instance/module/bundle/IBundle.sol +0 -58
- package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
- package/contracts/instance/module/compensation/ICompensation.sol +0 -10
- package/contracts/instance/module/component/ComponentModule.sol +0 -95
- package/contracts/instance/module/component/IComponent.sol +0 -53
- package/contracts/instance/module/policy/IPolicy.sol +0 -60
- package/contracts/instance/module/policy/PolicyModule.sol +0 -76
- package/contracts/instance/module/pool/IPoolModule.sol +0 -41
- package/contracts/instance/module/pool/PoolModule.sol +0 -87
- package/contracts/instance/module/risk/IRisk.sol +0 -10
- package/contracts/instance/module/risk/RiskModule.sol +0 -8
- package/contracts/instance/module/treasury/ITreasury.sol +0 -103
- package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
- package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
- package/contracts/registry/IChainNft.sol +0 -21
- package/contracts/registry/IRegistryLinked.sol +0 -8
- package/contracts/shared/IOwnable.sol +0 -6
- package/contracts/test/TestPool.sol +0 -22
- package/contracts/test/TestProduct.sol +0 -44
@@ -14,6 +14,156 @@
|
|
14
14
|
"stateMutability": "nonpayable",
|
15
15
|
"type": "constructor"
|
16
16
|
},
|
17
|
+
{
|
18
|
+
"inputs": [
|
19
|
+
{
|
20
|
+
"internalType": "address",
|
21
|
+
"name": "caller",
|
22
|
+
"type": "address"
|
23
|
+
}
|
24
|
+
],
|
25
|
+
"name": "CallerNotRegistry",
|
26
|
+
"type": "error"
|
27
|
+
},
|
28
|
+
{
|
29
|
+
"inputs": [],
|
30
|
+
"name": "ERC721EnumerableForbiddenBatchMint",
|
31
|
+
"type": "error"
|
32
|
+
},
|
33
|
+
{
|
34
|
+
"inputs": [
|
35
|
+
{
|
36
|
+
"internalType": "address",
|
37
|
+
"name": "sender",
|
38
|
+
"type": "address"
|
39
|
+
},
|
40
|
+
{
|
41
|
+
"internalType": "uint256",
|
42
|
+
"name": "tokenId",
|
43
|
+
"type": "uint256"
|
44
|
+
},
|
45
|
+
{
|
46
|
+
"internalType": "address",
|
47
|
+
"name": "owner",
|
48
|
+
"type": "address"
|
49
|
+
}
|
50
|
+
],
|
51
|
+
"name": "ERC721IncorrectOwner",
|
52
|
+
"type": "error"
|
53
|
+
},
|
54
|
+
{
|
55
|
+
"inputs": [
|
56
|
+
{
|
57
|
+
"internalType": "address",
|
58
|
+
"name": "operator",
|
59
|
+
"type": "address"
|
60
|
+
},
|
61
|
+
{
|
62
|
+
"internalType": "uint256",
|
63
|
+
"name": "tokenId",
|
64
|
+
"type": "uint256"
|
65
|
+
}
|
66
|
+
],
|
67
|
+
"name": "ERC721InsufficientApproval",
|
68
|
+
"type": "error"
|
69
|
+
},
|
70
|
+
{
|
71
|
+
"inputs": [
|
72
|
+
{
|
73
|
+
"internalType": "address",
|
74
|
+
"name": "approver",
|
75
|
+
"type": "address"
|
76
|
+
}
|
77
|
+
],
|
78
|
+
"name": "ERC721InvalidApprover",
|
79
|
+
"type": "error"
|
80
|
+
},
|
81
|
+
{
|
82
|
+
"inputs": [
|
83
|
+
{
|
84
|
+
"internalType": "address",
|
85
|
+
"name": "operator",
|
86
|
+
"type": "address"
|
87
|
+
}
|
88
|
+
],
|
89
|
+
"name": "ERC721InvalidOperator",
|
90
|
+
"type": "error"
|
91
|
+
},
|
92
|
+
{
|
93
|
+
"inputs": [
|
94
|
+
{
|
95
|
+
"internalType": "address",
|
96
|
+
"name": "owner",
|
97
|
+
"type": "address"
|
98
|
+
}
|
99
|
+
],
|
100
|
+
"name": "ERC721InvalidOwner",
|
101
|
+
"type": "error"
|
102
|
+
},
|
103
|
+
{
|
104
|
+
"inputs": [
|
105
|
+
{
|
106
|
+
"internalType": "address",
|
107
|
+
"name": "receiver",
|
108
|
+
"type": "address"
|
109
|
+
}
|
110
|
+
],
|
111
|
+
"name": "ERC721InvalidReceiver",
|
112
|
+
"type": "error"
|
113
|
+
},
|
114
|
+
{
|
115
|
+
"inputs": [
|
116
|
+
{
|
117
|
+
"internalType": "address",
|
118
|
+
"name": "sender",
|
119
|
+
"type": "address"
|
120
|
+
}
|
121
|
+
],
|
122
|
+
"name": "ERC721InvalidSender",
|
123
|
+
"type": "error"
|
124
|
+
},
|
125
|
+
{
|
126
|
+
"inputs": [
|
127
|
+
{
|
128
|
+
"internalType": "uint256",
|
129
|
+
"name": "tokenId",
|
130
|
+
"type": "uint256"
|
131
|
+
}
|
132
|
+
],
|
133
|
+
"name": "ERC721NonexistentToken",
|
134
|
+
"type": "error"
|
135
|
+
},
|
136
|
+
{
|
137
|
+
"inputs": [
|
138
|
+
{
|
139
|
+
"internalType": "address",
|
140
|
+
"name": "owner",
|
141
|
+
"type": "address"
|
142
|
+
},
|
143
|
+
{
|
144
|
+
"internalType": "uint256",
|
145
|
+
"name": "index",
|
146
|
+
"type": "uint256"
|
147
|
+
}
|
148
|
+
],
|
149
|
+
"name": "ERC721OutOfBoundsIndex",
|
150
|
+
"type": "error"
|
151
|
+
},
|
152
|
+
{
|
153
|
+
"inputs": [],
|
154
|
+
"name": "NftUriAlreadySet",
|
155
|
+
"type": "error"
|
156
|
+
},
|
157
|
+
{
|
158
|
+
"inputs": [],
|
159
|
+
"name": "NftUriEmpty",
|
160
|
+
"type": "error"
|
161
|
+
},
|
162
|
+
{
|
163
|
+
"inputs": [],
|
164
|
+
"name": "RegistryAddressZero",
|
165
|
+
"type": "error"
|
166
|
+
},
|
17
167
|
{
|
18
168
|
"anonymous": false,
|
19
169
|
"inputs": [
|
@@ -248,6 +398,25 @@
|
|
248
398
|
"stateMutability": "view",
|
249
399
|
"type": "function"
|
250
400
|
},
|
401
|
+
{
|
402
|
+
"inputs": [
|
403
|
+
{
|
404
|
+
"internalType": "uint256",
|
405
|
+
"name": "tokenId",
|
406
|
+
"type": "uint256"
|
407
|
+
}
|
408
|
+
],
|
409
|
+
"name": "getInterceptor",
|
410
|
+
"outputs": [
|
411
|
+
{
|
412
|
+
"internalType": "address",
|
413
|
+
"name": "",
|
414
|
+
"type": "address"
|
415
|
+
}
|
416
|
+
],
|
417
|
+
"stateMutability": "view",
|
418
|
+
"type": "function"
|
419
|
+
},
|
251
420
|
{
|
252
421
|
"inputs": [],
|
253
422
|
"name": "getRegistryAddress",
|
@@ -292,14 +461,25 @@
|
|
292
461
|
"name": "to",
|
293
462
|
"type": "address"
|
294
463
|
},
|
464
|
+
{
|
465
|
+
"internalType": "address",
|
466
|
+
"name": "interceptor",
|
467
|
+
"type": "address"
|
468
|
+
},
|
469
|
+
{
|
470
|
+
"internalType": "string",
|
471
|
+
"name": "uri",
|
472
|
+
"type": "string"
|
473
|
+
}
|
474
|
+
],
|
475
|
+
"name": "mint",
|
476
|
+
"outputs": [
|
295
477
|
{
|
296
478
|
"internalType": "uint256",
|
297
479
|
"name": "tokenId",
|
298
480
|
"type": "uint256"
|
299
481
|
}
|
300
482
|
],
|
301
|
-
"name": "mint",
|
302
|
-
"outputs": [],
|
303
483
|
"stateMutability": "nonpayable",
|
304
484
|
"type": "function"
|
305
485
|
},
|
@@ -310,20 +490,14 @@
|
|
310
490
|
"name": "to",
|
311
491
|
"type": "address"
|
312
492
|
},
|
313
|
-
{
|
314
|
-
"internalType": "string",
|
315
|
-
"name": "uri",
|
316
|
-
"type": "string"
|
317
|
-
}
|
318
|
-
],
|
319
|
-
"name": "mint",
|
320
|
-
"outputs": [
|
321
493
|
{
|
322
494
|
"internalType": "uint256",
|
323
495
|
"name": "tokenId",
|
324
496
|
"type": "uint256"
|
325
497
|
}
|
326
498
|
],
|
499
|
+
"name": "mint",
|
500
|
+
"outputs": [],
|
327
501
|
"stateMutability": "nonpayable",
|
328
502
|
"type": "function"
|
329
503
|
},
|
@@ -590,8 +764,8 @@
|
|
590
764
|
"type": "function"
|
591
765
|
}
|
592
766
|
],
|
593
|
-
"bytecode": "0x60806040523480156200001157600080fd5b506040516200429038038062004290833981810160405281019062000037919062000248565b60405180606001604052806029815260200162004267602991396040518060400160405280600481526020017f44495052000000000000000000000000000000000000000000000000000000008152508160009081620000989190620004f4565b508060019081620000aa9190620004f4565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200011f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000116906200063c565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555046600c819055506200017a600c54620001a660201b60201c565b600d81905550600d54600a620001919190620007e1565b600e819055506003600f8190555050620008e6565b60005b60008214620001d9578080620001bf9062000832565b915050600a82620001d19190620008ae565b9150620001a9565b919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200021082620001e3565b9050919050565b620002228162000203565b81146200022e57600080fd5b50565b600081519050620002428162000217565b92915050565b600060208284031215620002615762000260620001de565b5b6000620002718482850162000231565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002fc57607f821691505b602082108103620003125762000311620002b4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200037c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200033d565b6200038886836200033d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003d5620003cf620003c984620003a0565b620003aa565b620003a0565b9050919050565b6000819050919050565b620003f183620003b4565b620004096200040082620003dc565b8484546200034a565b825550505050565b600090565b6200042062000411565b6200042d818484620003e6565b505050565b5b8181101562000455576200044960008262000416565b60018101905062000433565b5050565b601f821115620004a4576200046e8162000318565b62000479846200032d565b8101602085101562000489578190505b620004a162000498856200032d565b83018262000432565b50505b505050565b600082821c905092915050565b6000620004c960001984600802620004a9565b1980831691505092915050565b6000620004e48383620004b6565b9150826002028217905092915050565b620004ff826200027a565b67ffffffffffffffff8111156200051b576200051a62000285565b5b620005278254620002e3565b6200053482828562000459565b600060209050601f8311600181146200056c576000841562000557578287015190505b620005638582620004d6565b865550620005d3565b601f1984166200057c8662000318565b60005b82811015620005a6578489015182556001820191506020850194506020810190506200057f565b86831015620005c65784890151620005c2601f891682620004b6565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f4552524f523a4e46542d3031303a52454749535452595f5a45524f0000000000600082015250565b600062000624601b83620005db565b91506200063182620005ec565b602082019050919050565b60006020820190508181036000830152620006578162000615565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620006ec57808604811115620006c457620006c36200065e565b5b6001851615620006d45780820291505b8081029050620006e4856200068d565b9450620006a4565b94509492505050565b600082620007075760019050620007da565b81620007175760009050620007da565b81600181146200073057600281146200073b5762000771565b6001915050620007da565b60ff84111562000750576200074f6200065e565b5b8360020a9150848211156200076a57620007696200065e565b5b50620007da565b5060208310610133831016604e8410600b8410161715620007ab5782820a905083811115620007a557620007a46200065e565b5b620007da565b620007ba84848460016200069a565b92509050818404811115620007d457620007d36200065e565b5b81810290505b9392505050565b6000620007ee82620003a0565b9150620007fb83620003a0565b92506200082a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006f5565b905092915050565b60006200083f82620003a0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200087457620008736200065e565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008bb82620003a0565b9150620008c883620003a0565b925082620008db57620008da6200087f565b5b828204905092915050565b61397180620008f66000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063598e2892116100f9578063a3f4df7e11610097578063d0def52111610071578063d0def5211461052b578063e985e9c51461055b578063f21de1e81461058b578063f76f8d78146105a9576101c4565b8063a3f4df7e146104c1578063b88d4fde146104df578063c87b56dd146104fb576101c4565b8063862440e2116100d3578063862440e21461044d57806395d89b4114610469578063a22cb46514610487578063a2309ff8146104a3576101c4565b8063598e2892146103cf5780636352211e146103ed57806370a082311461041d576101c4565b80632e85b1f31161016657806342842e0e1161014057806342842e0e1461033757806342966c68146103535780634f558e791461036f5780634f6ccce71461039f576101c4565b80632e85b1f3146102cd5780632f745c59146102eb57806340c10f191461031b576101c4565b8063081812fc116101a2578063081812fc14610247578063095ea7b31461027757806318160ddd1461029357806323b872dd146102b1576101c4565b806301ffc9a7146101c95780630559ea47146101f957806306fdde0314610229575b600080fd5b6101e360048036038101906101de91906124c9565b6105c7565b6040516101f09190612511565b60405180910390f35b610213600480360381019061020e9190612562565b610641565b604051610220919061259e565b60405180910390f35b61023161067e565b60405161023e9190612649565b60405180910390f35b610261600480360381019061025c9190612562565b610710565b60405161026e91906126ac565b60405180910390f35b610291600480360381019061028c91906126f3565b610756565b005b61029b61086d565b6040516102a8919061259e565b60405180910390f35b6102cb60048036038101906102c69190612733565b61087a565b005b6102d56108da565b6040516102e2919061259e565b60405180910390f35b610305600480360381019061030091906126f3565b6108e0565b604051610312919061259e565b60405180910390f35b610335600480360381019061033091906126f3565b610985565b005b610351600480360381019061034c9190612733565b610a3b565b005b61036d60048036038101906103689190612562565b610a5b565b005b61038960048036038101906103849190612562565b610b1f565b6040516103969190612511565b60405180910390f35b6103b960048036038101906103b49190612562565b610b31565b6040516103c6919061259e565b60405180910390f35b6103d7610ba2565b6040516103e4919061259e565b60405180910390f35b61040760048036038101906104029190612562565b610ba8565b60405161041491906126ac565b60405180910390f35b61043760048036038101906104329190612786565b610c2e565b604051610444919061259e565b60405180910390f35b610467600480360381019061046291906128e8565b610ce5565b005b610471610de7565b60405161047e9190612649565b60405180910390f35b6104a1600480360381019061049c9190612970565b610e79565b005b6104ab610e8f565b6040516104b8919061259e565b60405180910390f35b6104c9610e99565b6040516104d69190612649565b60405180910390f35b6104f960048036038101906104f49190612a51565b610eb5565b005b61051560048036038101906105109190612562565b610f17565b6040516105229190612649565b60405180910390f35b61054560048036038101906105409190612ad4565b610fc5565b604051610552919061259e565b60405180910390f35b61057560048036038101906105709190612b30565b6110b5565b6040516105829190612511565b60405180910390f35b610593611149565b6040516105a091906126ac565b60405180910390f35b6105b1611173565b6040516105be9190612649565b60405180910390f35b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061063a5750610639826111ac565b5b9050919050565b6000600d546064600c54600e54856106599190612b9f565b6106639190612be1565b61066d9190612b9f565b6106779190612be1565b9050919050565b60606000805461068d90612c44565b80601f01602080910402602001604051908101604052809291908181526020018280546106b990612c44565b80156107065780601f106106db57610100808354040283529160200191610706565b820191906000526020600020905b8154815290600101906020018083116106e957829003601f168201915b5050505050905090565b600061071b8261128e565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061076182610ba8565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c890612ce7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107f06112d9565b73ffffffffffffffffffffffffffffffffffffffff16148061081f575061081e816108196112d9565b6110b5565b5b61085e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085590612d79565b60405180910390fd5b61086883836112e1565b505050565b6000600880549050905090565b61088b6108856112d9565b8261139a565b6108ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c190612e0b565b60405180910390fd5b6108d583838361142f565b505050565b61083581565b60006108eb83610c2e565b821061092c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092390612e9d565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0c90612f2f565b60405180910390fd5b60106000815480929190610a2890612f4f565b9190505550610a378282611728565b5050565b610a5683838360405180602001604052806000815250610eb5565b505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae290612f2f565b60405180910390fd5b610af48161128e565b610afd81611746565b600a60008281526020019081526020016000206000610b1c9190612400565b50565b6000610b2a82611894565b9050919050565b6000610b3b61086d565b8210610b7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7390613009565b60405180910390fd5b60088281548110610b9057610b8f613029565b5b90600052602060002001549050919050565b61044d81565b600080610bb4836118d5565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1c906130a4565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9590613136565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6c90612f2f565b60405180910390fd5b6000815111610db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db0906131a2565b60405180910390fd5b610dc28261128e565b80600a60008481526020019081526020016000209081610de2919061336e565b505050565b606060018054610df690612c44565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2290612c44565b8015610e6f5780601f10610e4457610100808354040283529160200191610e6f565b820191906000526020600020905b815481529060010190602001808311610e5257829003601f168201915b5050505050905090565b610e8b610e846112d9565b8383611912565b5050565b6000601054905090565b6040518060600160405280602981526020016139136029913981565b610ec6610ec06112d9565b8361139a565b610f05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efc90612e0b565b60405180910390fd5b610f1184848484611a7e565b50505050565b6060610f228261128e565b600a60008381526020019081526020016000208054610f4090612c44565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6c90612c44565b8015610fb95780601f10610f8e57610100808354040283529160200191610fb9565b820191906000526020600020905b815481529060010190602001808311610f9c57829003601f168201915b50505050509050919050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e90612f2f565b60405180910390fd5b61105f611ada565b905060008251111561108d5781600a6000838152602001908152602001600020908161108b919061336e565b505b6110978382611728565b601060008154809291906110aa90612f4f565b919050555092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6040518060400160405280600481526020017f444950520000000000000000000000000000000000000000000000000000000081525081565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061127757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611287575061128682611b04565b5b9050919050565b61129781611894565b6112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd906130a4565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661135483610ba8565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806113a683610ba8565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806113e857506113e781856110b5565b5b8061142657508373ffffffffffffffffffffffffffffffffffffffff1661140e84610710565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661144f82610ba8565b73ffffffffffffffffffffffffffffffffffffffff16146114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149c906134b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150b90613544565b60405180910390fd5b6115218383836001611b6e565b8273ffffffffffffffffffffffffffffffffffffffff1661154182610ba8565b73ffffffffffffffffffffffffffffffffffffffff1614611597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158e906134b2565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46117238383836001611ccc565b505050565b611742828260405180602001604052806000815250611cd2565b5050565b600061175182610ba8565b9050611761816000846001611b6e565b61176a82610ba8565b90506004600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611890816000846001611ccc565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff166118b6836118d5565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611980576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611977906135b0565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611a719190612511565b60405180910390a3505050565b611a8984848461142f565b611a9584848484611d2d565b611ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acb90613642565b60405180910390fd5b50505050565b6000611ae7600f54610641565b9050600f6000815480929190611afc90612f4f565b919050555090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611b7a84848484611eb4565b6001811115611bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb5906136d4565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611c0557611c0081611eba565b611c44565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611c4357611c428582611f03565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c8657611c8181612070565b611cc5565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611cc457611cc38482612141565b5b5b5050505050565b50505050565b611cdc83836121c0565b611ce96000848484611d2d565b611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f90613642565b60405180910390fd5b505050565b6000611d4e8473ffffffffffffffffffffffffffffffffffffffff166123dd565b15611ea7578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611d776112d9565b8786866040518563ffffffff1660e01b8152600401611d999493929190613749565b6020604051808303816000875af1925050508015611dd557506040513d601f19601f82011682018060405250810190611dd291906137aa565b60015b611e57573d8060008114611e05576040519150601f19603f3d011682016040523d82523d6000602084013e611e0a565b606091505b506000815103611e4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4690613642565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611eac565b600190505b949350505050565b50505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001611f1084610c2e565b611f1a91906137d7565b9050600060076000848152602001908152602001600020549050818114611fff576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061208491906137d7565b90506000600960008481526020019081526020016000205490506000600883815481106120b4576120b3613029565b5b9060005260206000200154905080600883815481106120d6576120d5613029565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806121255761212461380b565b5b6001900381819060005260206000200160009055905550505050565b600061214c83610c2e565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361222f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222690613886565b60405180910390fd5b61223881611894565b15612278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226f906138f2565b60405180910390fd5b612286600083836001611b6e565b61228f81611894565b156122cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c6906138f2565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46123d9600083836001611ccc565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b50805461240c90612c44565b6000825580601f1061241e575061243d565b601f01602090049060005260206000209081019061243c9190612440565b5b50565b5b80821115612459576000816000905550600101612441565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6124a681612471565b81146124b157600080fd5b50565b6000813590506124c38161249d565b92915050565b6000602082840312156124df576124de612467565b5b60006124ed848285016124b4565b91505092915050565b60008115159050919050565b61250b816124f6565b82525050565b60006020820190506125266000830184612502565b92915050565b6000819050919050565b61253f8161252c565b811461254a57600080fd5b50565b60008135905061255c81612536565b92915050565b60006020828403121561257857612577612467565b5b60006125868482850161254d565b91505092915050565b6125988161252c565b82525050565b60006020820190506125b3600083018461258f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156125f35780820151818401526020810190506125d8565b60008484015250505050565b6000601f19601f8301169050919050565b600061261b826125b9565b61262581856125c4565b93506126358185602086016125d5565b61263e816125ff565b840191505092915050565b600060208201905081810360008301526126638184612610565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126968261266b565b9050919050565b6126a68161268b565b82525050565b60006020820190506126c1600083018461269d565b92915050565b6126d08161268b565b81146126db57600080fd5b50565b6000813590506126ed816126c7565b92915050565b6000806040838503121561270a57612709612467565b5b6000612718858286016126de565b92505060206127298582860161254d565b9150509250929050565b60008060006060848603121561274c5761274b612467565b5b600061275a868287016126de565b935050602061276b868287016126de565b925050604061277c8682870161254d565b9150509250925092565b60006020828403121561279c5761279b612467565b5b60006127aa848285016126de565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6127f5826125ff565b810181811067ffffffffffffffff82111715612814576128136127bd565b5b80604052505050565b600061282761245d565b905061283382826127ec565b919050565b600067ffffffffffffffff821115612853576128526127bd565b5b61285c826125ff565b9050602081019050919050565b82818337600083830152505050565b600061288b61288684612838565b61281d565b9050828152602081018484840111156128a7576128a66127b8565b5b6128b2848285612869565b509392505050565b600082601f8301126128cf576128ce6127b3565b5b81356128df848260208601612878565b91505092915050565b600080604083850312156128ff576128fe612467565b5b600061290d8582860161254d565b925050602083013567ffffffffffffffff81111561292e5761292d61246c565b5b61293a858286016128ba565b9150509250929050565b61294d816124f6565b811461295857600080fd5b50565b60008135905061296a81612944565b92915050565b6000806040838503121561298757612986612467565b5b6000612995858286016126de565b92505060206129a68582860161295b565b9150509250929050565b600067ffffffffffffffff8211156129cb576129ca6127bd565b5b6129d4826125ff565b9050602081019050919050565b60006129f46129ef846129b0565b61281d565b905082815260208101848484011115612a1057612a0f6127b8565b5b612a1b848285612869565b509392505050565b600082601f830112612a3857612a376127b3565b5b8135612a488482602086016129e1565b91505092915050565b60008060008060808587031215612a6b57612a6a612467565b5b6000612a79878288016126de565b9450506020612a8a878288016126de565b9350506040612a9b8782880161254d565b925050606085013567ffffffffffffffff811115612abc57612abb61246c565b5b612ac887828801612a23565b91505092959194509250565b60008060408385031215612aeb57612aea612467565b5b6000612af9858286016126de565b925050602083013567ffffffffffffffff811115612b1a57612b1961246c565b5b612b26858286016128ba565b9150509250929050565b60008060408385031215612b4757612b46612467565b5b6000612b55858286016126de565b9250506020612b66858286016126de565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612baa8261252c565b9150612bb58361252c565b9250828202612bc38161252c565b91508282048414831517612bda57612bd9612b70565b5b5092915050565b6000612bec8261252c565b9150612bf78361252c565b9250828201905080821115612c0f57612c0e612b70565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612c5c57607f821691505b602082108103612c6f57612c6e612c15565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612cd16021836125c4565b9150612cdc82612c75565b604082019050919050565b60006020820190508181036000830152612d0081612cc4565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000612d63603d836125c4565b9150612d6e82612d07565b604082019050919050565b60006020820190508181036000830152612d9281612d56565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000612df5602d836125c4565b9150612e0082612d99565b604082019050919050565b60006020820190508181036000830152612e2481612de8565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000612e87602b836125c4565b9150612e9282612e2b565b604082019050919050565b60006020820190508181036000830152612eb681612e7a565b9050919050565b7f4552524f523a4e46542d3030313a43414c4c45525f4e4f545f5245474953545260008201527f5900000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f196021836125c4565b9150612f2482612ebd565b604082019050919050565b60006020820190508181036000830152612f4881612f0c565b9050919050565b6000612f5a8261252c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f8c57612f8b612b70565b5b600182019050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000612ff3602c836125c4565b9150612ffe82612f97565b604082019050919050565b6000602082019050818103600083015261302281612fe6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b600061308e6018836125c4565b915061309982613058565b602082019050919050565b600060208201905081810360008301526130bd81613081565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006131206029836125c4565b915061312b826130c4565b604082019050919050565b6000602082019050818103600083015261314f81613113565b9050919050565b7f4552524f523a4352472d3031313a5552495f454d505459000000000000000000600082015250565b600061318c6017836125c4565b915061319782613156565b602082019050919050565b600060208201905081810360008301526131bb8161317f565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026132247fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826131e7565b61322e86836131e7565b95508019841693508086168417925050509392505050565b6000819050919050565b600061326b6132666132618461252c565b613246565b61252c565b9050919050565b6000819050919050565b61328583613250565b61329961329182613272565b8484546131f4565b825550505050565b600090565b6132ae6132a1565b6132b981848461327c565b505050565b5b818110156132dd576132d26000826132a6565b6001810190506132bf565b5050565b601f821115613322576132f3816131c2565b6132fc846131d7565b8101602085101561330b578190505b61331f613317856131d7565b8301826132be565b50505b505050565b600082821c905092915050565b600061334560001984600802613327565b1980831691505092915050565b600061335e8383613334565b9150826002028217905092915050565b613377826125b9565b67ffffffffffffffff8111156133905761338f6127bd565b5b61339a8254612c44565b6133a58282856132e1565b600060209050601f8311600181146133d857600084156133c6578287015190505b6133d08582613352565b865550613438565b601f1984166133e6866131c2565b60005b8281101561340e578489015182556001820191506020850194506020810190506133e9565b8683101561342b5784890151613427601f891682613334565b8355505b6001600288020188555050505b505050505050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b600061349c6025836125c4565b91506134a782613440565b604082019050919050565b600060208201905081810360008301526134cb8161348f565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061352e6024836125c4565b9150613539826134d2565b604082019050919050565b6000602082019050818103600083015261355d81613521565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061359a6019836125c4565b91506135a582613564565b602082019050919050565b600060208201905081810360008301526135c98161358d565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061362c6032836125c4565b9150613637826135d0565b604082019050919050565b6000602082019050818103600083015261365b8161361f565b9050919050565b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b60006136be6035836125c4565b91506136c982613662565b604082019050919050565b600060208201905081810360008301526136ed816136b1565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061371b826136f4565b61372581856136ff565b93506137358185602086016125d5565b61373e816125ff565b840191505092915050565b600060808201905061375e600083018761269d565b61376b602083018661269d565b613778604083018561258f565b818103606083015261378a8184613710565b905095945050505050565b6000815190506137a48161249d565b92915050565b6000602082840312156137c0576137bf612467565b5b60006137ce84828501613795565b91505092915050565b60006137e28261252c565b91506137ed8361252c565b925082820390508181111561380557613804612b70565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006138706020836125c4565b915061387b8261383a565b602082019050919050565b6000602082019050818103600083015261389f81613863565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b60006138dc601c836125c4565b91506138e7826138a6565b602082019050919050565b6000602082019050818103600083015261390b816138cf565b905091905056fe44657a656e7472616c697a656420496e737572616e63652050726f746f636f6c205265676973747279a26469706673582212207aa4e02bdaafea8b9e4c8cf55d062e2091ac80190615fb6e2ba4b980fc8a1dae64736f6c6343000814003344657a656e7472616c697a656420496e737572616e63652050726f746f636f6c205265676973747279",
|
594
|
-
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101c45760003560e01c8063598e2892116100f9578063a3f4df7e11610097578063d0def52111610071578063d0def5211461052b578063e985e9c51461055b578063f21de1e81461058b578063f76f8d78146105a9576101c4565b8063a3f4df7e146104c1578063b88d4fde146104df578063c87b56dd146104fb576101c4565b8063862440e2116100d3578063862440e21461044d57806395d89b4114610469578063a22cb46514610487578063a2309ff8146104a3576101c4565b8063598e2892146103cf5780636352211e146103ed57806370a082311461041d576101c4565b80632e85b1f31161016657806342842e0e1161014057806342842e0e1461033757806342966c68146103535780634f558e791461036f5780634f6ccce71461039f576101c4565b80632e85b1f3146102cd5780632f745c59146102eb57806340c10f191461031b576101c4565b8063081812fc116101a2578063081812fc14610247578063095ea7b31461027757806318160ddd1461029357806323b872dd146102b1576101c4565b806301ffc9a7146101c95780630559ea47146101f957806306fdde0314610229575b600080fd5b6101e360048036038101906101de91906124c9565b6105c7565b6040516101f09190612511565b60405180910390f35b610213600480360381019061020e9190612562565b610641565b604051610220919061259e565b60405180910390f35b61023161067e565b60405161023e9190612649565b60405180910390f35b610261600480360381019061025c9190612562565b610710565b60405161026e91906126ac565b60405180910390f35b610291600480360381019061028c91906126f3565b610756565b005b61029b61086d565b6040516102a8919061259e565b60405180910390f35b6102cb60048036038101906102c69190612733565b61087a565b005b6102d56108da565b6040516102e2919061259e565b60405180910390f35b610305600480360381019061030091906126f3565b6108e0565b604051610312919061259e565b60405180910390f35b610335600480360381019061033091906126f3565b610985565b005b610351600480360381019061034c9190612733565b610a3b565b005b61036d60048036038101906103689190612562565b610a5b565b005b61038960048036038101906103849190612562565b610b1f565b6040516103969190612511565b60405180910390f35b6103b960048036038101906103b49190612562565b610b31565b6040516103c6919061259e565b60405180910390f35b6103d7610ba2565b6040516103e4919061259e565b60405180910390f35b61040760048036038101906104029190612562565b610ba8565b60405161041491906126ac565b60405180910390f35b61043760048036038101906104329190612786565b610c2e565b604051610444919061259e565b60405180910390f35b610467600480360381019061046291906128e8565b610ce5565b005b610471610de7565b60405161047e9190612649565b60405180910390f35b6104a1600480360381019061049c9190612970565b610e79565b005b6104ab610e8f565b6040516104b8919061259e565b60405180910390f35b6104c9610e99565b6040516104d69190612649565b60405180910390f35b6104f960048036038101906104f49190612a51565b610eb5565b005b61051560048036038101906105109190612562565b610f17565b6040516105229190612649565b60405180910390f35b61054560048036038101906105409190612ad4565b610fc5565b604051610552919061259e565b60405180910390f35b61057560048036038101906105709190612b30565b6110b5565b6040516105829190612511565b60405180910390f35b610593611149565b6040516105a091906126ac565b60405180910390f35b6105b1611173565b6040516105be9190612649565b60405180910390f35b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061063a5750610639826111ac565b5b9050919050565b6000600d546064600c54600e54856106599190612b9f565b6106639190612be1565b61066d9190612b9f565b6106779190612be1565b9050919050565b60606000805461068d90612c44565b80601f01602080910402602001604051908101604052809291908181526020018280546106b990612c44565b80156107065780601f106106db57610100808354040283529160200191610706565b820191906000526020600020905b8154815290600101906020018083116106e957829003601f168201915b5050505050905090565b600061071b8261128e565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061076182610ba8565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c890612ce7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107f06112d9565b73ffffffffffffffffffffffffffffffffffffffff16148061081f575061081e816108196112d9565b6110b5565b5b61085e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085590612d79565b60405180910390fd5b61086883836112e1565b505050565b6000600880549050905090565b61088b6108856112d9565b8261139a565b6108ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c190612e0b565b60405180910390fd5b6108d583838361142f565b505050565b61083581565b60006108eb83610c2e565b821061092c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092390612e9d565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0c90612f2f565b60405180910390fd5b60106000815480929190610a2890612f4f565b9190505550610a378282611728565b5050565b610a5683838360405180602001604052806000815250610eb5565b505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae290612f2f565b60405180910390fd5b610af48161128e565b610afd81611746565b600a60008281526020019081526020016000206000610b1c9190612400565b50565b6000610b2a82611894565b9050919050565b6000610b3b61086d565b8210610b7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7390613009565b60405180910390fd5b60088281548110610b9057610b8f613029565b5b90600052602060002001549050919050565b61044d81565b600080610bb4836118d5565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1c906130a4565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9590613136565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6c90612f2f565b60405180910390fd5b6000815111610db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db0906131a2565b60405180910390fd5b610dc28261128e565b80600a60008481526020019081526020016000209081610de2919061336e565b505050565b606060018054610df690612c44565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2290612c44565b8015610e6f5780601f10610e4457610100808354040283529160200191610e6f565b820191906000526020600020905b815481529060010190602001808311610e5257829003601f168201915b5050505050905090565b610e8b610e846112d9565b8383611912565b5050565b6000601054905090565b6040518060600160405280602981526020016139136029913981565b610ec6610ec06112d9565b8361139a565b610f05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efc90612e0b565b60405180910390fd5b610f1184848484611a7e565b50505050565b6060610f228261128e565b600a60008381526020019081526020016000208054610f4090612c44565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6c90612c44565b8015610fb95780601f10610f8e57610100808354040283529160200191610fb9565b820191906000526020600020905b815481529060010190602001808311610f9c57829003601f168201915b50505050509050919050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e90612f2f565b60405180910390fd5b61105f611ada565b905060008251111561108d5781600a6000838152602001908152602001600020908161108b919061336e565b505b6110978382611728565b601060008154809291906110aa90612f4f565b919050555092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6040518060400160405280600481526020017f444950520000000000000000000000000000000000000000000000000000000081525081565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061127757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611287575061128682611b04565b5b9050919050565b61129781611894565b6112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd906130a4565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661135483610ba8565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806113a683610ba8565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806113e857506113e781856110b5565b5b8061142657508373ffffffffffffffffffffffffffffffffffffffff1661140e84610710565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661144f82610ba8565b73ffffffffffffffffffffffffffffffffffffffff16146114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149c906134b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150b90613544565b60405180910390fd5b6115218383836001611b6e565b8273ffffffffffffffffffffffffffffffffffffffff1661154182610ba8565b73ffffffffffffffffffffffffffffffffffffffff1614611597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158e906134b2565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46117238383836001611ccc565b505050565b611742828260405180602001604052806000815250611cd2565b5050565b600061175182610ba8565b9050611761816000846001611b6e565b61176a82610ba8565b90506004600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611890816000846001611ccc565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff166118b6836118d5565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611980576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611977906135b0565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611a719190612511565b60405180910390a3505050565b611a8984848461142f565b611a9584848484611d2d565b611ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acb90613642565b60405180910390fd5b50505050565b6000611ae7600f54610641565b9050600f6000815480929190611afc90612f4f565b919050555090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611b7a84848484611eb4565b6001811115611bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb5906136d4565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611c0557611c0081611eba565b611c44565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611c4357611c428582611f03565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c8657611c8181612070565b611cc5565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611cc457611cc38482612141565b5b5b5050505050565b50505050565b611cdc83836121c0565b611ce96000848484611d2d565b611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f90613642565b60405180910390fd5b505050565b6000611d4e8473ffffffffffffffffffffffffffffffffffffffff166123dd565b15611ea7578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611d776112d9565b8786866040518563ffffffff1660e01b8152600401611d999493929190613749565b6020604051808303816000875af1925050508015611dd557506040513d601f19601f82011682018060405250810190611dd291906137aa565b60015b611e57573d8060008114611e05576040519150601f19603f3d011682016040523d82523d6000602084013e611e0a565b606091505b506000815103611e4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4690613642565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611eac565b600190505b949350505050565b50505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001611f1084610c2e565b611f1a91906137d7565b9050600060076000848152602001908152602001600020549050818114611fff576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061208491906137d7565b90506000600960008481526020019081526020016000205490506000600883815481106120b4576120b3613029565b5b9060005260206000200154905080600883815481106120d6576120d5613029565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806121255761212461380b565b5b6001900381819060005260206000200160009055905550505050565b600061214c83610c2e565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361222f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222690613886565b60405180910390fd5b61223881611894565b15612278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226f906138f2565b60405180910390fd5b612286600083836001611b6e565b61228f81611894565b156122cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c6906138f2565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46123d9600083836001611ccc565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b50805461240c90612c44565b6000825580601f1061241e575061243d565b601f01602090049060005260206000209081019061243c9190612440565b5b50565b5b80821115612459576000816000905550600101612441565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6124a681612471565b81146124b157600080fd5b50565b6000813590506124c38161249d565b92915050565b6000602082840312156124df576124de612467565b5b60006124ed848285016124b4565b91505092915050565b60008115159050919050565b61250b816124f6565b82525050565b60006020820190506125266000830184612502565b92915050565b6000819050919050565b61253f8161252c565b811461254a57600080fd5b50565b60008135905061255c81612536565b92915050565b60006020828403121561257857612577612467565b5b60006125868482850161254d565b91505092915050565b6125988161252c565b82525050565b60006020820190506125b3600083018461258f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156125f35780820151818401526020810190506125d8565b60008484015250505050565b6000601f19601f8301169050919050565b600061261b826125b9565b61262581856125c4565b93506126358185602086016125d5565b61263e816125ff565b840191505092915050565b600060208201905081810360008301526126638184612610565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126968261266b565b9050919050565b6126a68161268b565b82525050565b60006020820190506126c1600083018461269d565b92915050565b6126d08161268b565b81146126db57600080fd5b50565b6000813590506126ed816126c7565b92915050565b6000806040838503121561270a57612709612467565b5b6000612718858286016126de565b92505060206127298582860161254d565b9150509250929050565b60008060006060848603121561274c5761274b612467565b5b600061275a868287016126de565b935050602061276b868287016126de565b925050604061277c8682870161254d565b9150509250925092565b60006020828403121561279c5761279b612467565b5b60006127aa848285016126de565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6127f5826125ff565b810181811067ffffffffffffffff82111715612814576128136127bd565b5b80604052505050565b600061282761245d565b905061283382826127ec565b919050565b600067ffffffffffffffff821115612853576128526127bd565b5b61285c826125ff565b9050602081019050919050565b82818337600083830152505050565b600061288b61288684612838565b61281d565b9050828152602081018484840111156128a7576128a66127b8565b5b6128b2848285612869565b509392505050565b600082601f8301126128cf576128ce6127b3565b5b81356128df848260208601612878565b91505092915050565b600080604083850312156128ff576128fe612467565b5b600061290d8582860161254d565b925050602083013567ffffffffffffffff81111561292e5761292d61246c565b5b61293a858286016128ba565b9150509250929050565b61294d816124f6565b811461295857600080fd5b50565b60008135905061296a81612944565b92915050565b6000806040838503121561298757612986612467565b5b6000612995858286016126de565b92505060206129a68582860161295b565b9150509250929050565b600067ffffffffffffffff8211156129cb576129ca6127bd565b5b6129d4826125ff565b9050602081019050919050565b60006129f46129ef846129b0565b61281d565b905082815260208101848484011115612a1057612a0f6127b8565b5b612a1b848285612869565b509392505050565b600082601f830112612a3857612a376127b3565b5b8135612a488482602086016129e1565b91505092915050565b60008060008060808587031215612a6b57612a6a612467565b5b6000612a79878288016126de565b9450506020612a8a878288016126de565b9350506040612a9b8782880161254d565b925050606085013567ffffffffffffffff811115612abc57612abb61246c565b5b612ac887828801612a23565b91505092959194509250565b60008060408385031215612aeb57612aea612467565b5b6000612af9858286016126de565b925050602083013567ffffffffffffffff811115612b1a57612b1961246c565b5b612b26858286016128ba565b9150509250929050565b60008060408385031215612b4757612b46612467565b5b6000612b55858286016126de565b9250506020612b66858286016126de565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612baa8261252c565b9150612bb58361252c565b9250828202612bc38161252c565b91508282048414831517612bda57612bd9612b70565b5b5092915050565b6000612bec8261252c565b9150612bf78361252c565b9250828201905080821115612c0f57612c0e612b70565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612c5c57607f821691505b602082108103612c6f57612c6e612c15565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612cd16021836125c4565b9150612cdc82612c75565b604082019050919050565b60006020820190508181036000830152612d0081612cc4565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000612d63603d836125c4565b9150612d6e82612d07565b604082019050919050565b60006020820190508181036000830152612d9281612d56565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000612df5602d836125c4565b9150612e0082612d99565b604082019050919050565b60006020820190508181036000830152612e2481612de8565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000612e87602b836125c4565b9150612e9282612e2b565b604082019050919050565b60006020820190508181036000830152612eb681612e7a565b9050919050565b7f4552524f523a4e46542d3030313a43414c4c45525f4e4f545f5245474953545260008201527f5900000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f196021836125c4565b9150612f2482612ebd565b604082019050919050565b60006020820190508181036000830152612f4881612f0c565b9050919050565b6000612f5a8261252c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f8c57612f8b612b70565b5b600182019050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000612ff3602c836125c4565b9150612ffe82612f97565b604082019050919050565b6000602082019050818103600083015261302281612fe6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b600061308e6018836125c4565b915061309982613058565b602082019050919050565b600060208201905081810360008301526130bd81613081565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006131206029836125c4565b915061312b826130c4565b604082019050919050565b6000602082019050818103600083015261314f81613113565b9050919050565b7f4552524f523a4352472d3031313a5552495f454d505459000000000000000000600082015250565b600061318c6017836125c4565b915061319782613156565b602082019050919050565b600060208201905081810360008301526131bb8161317f565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026132247fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826131e7565b61322e86836131e7565b95508019841693508086168417925050509392505050565b6000819050919050565b600061326b6132666132618461252c565b613246565b61252c565b9050919050565b6000819050919050565b61328583613250565b61329961329182613272565b8484546131f4565b825550505050565b600090565b6132ae6132a1565b6132b981848461327c565b505050565b5b818110156132dd576132d26000826132a6565b6001810190506132bf565b5050565b601f821115613322576132f3816131c2565b6132fc846131d7565b8101602085101561330b578190505b61331f613317856131d7565b8301826132be565b50505b505050565b600082821c905092915050565b600061334560001984600802613327565b1980831691505092915050565b600061335e8383613334565b9150826002028217905092915050565b613377826125b9565b67ffffffffffffffff8111156133905761338f6127bd565b5b61339a8254612c44565b6133a58282856132e1565b600060209050601f8311600181146133d857600084156133c6578287015190505b6133d08582613352565b865550613438565b601f1984166133e6866131c2565b60005b8281101561340e578489015182556001820191506020850194506020810190506133e9565b8683101561342b5784890151613427601f891682613334565b8355505b6001600288020188555050505b505050505050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b600061349c6025836125c4565b91506134a782613440565b604082019050919050565b600060208201905081810360008301526134cb8161348f565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061352e6024836125c4565b9150613539826134d2565b604082019050919050565b6000602082019050818103600083015261355d81613521565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061359a6019836125c4565b91506135a582613564565b602082019050919050565b600060208201905081810360008301526135c98161358d565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061362c6032836125c4565b9150613637826135d0565b604082019050919050565b6000602082019050818103600083015261365b8161361f565b9050919050565b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b60006136be6035836125c4565b91506136c982613662565b604082019050919050565b600060208201905081810360008301526136ed816136b1565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061371b826136f4565b61372581856136ff565b93506137358185602086016125d5565b61373e816125ff565b840191505092915050565b600060808201905061375e600083018761269d565b61376b602083018661269d565b613778604083018561258f565b818103606083015261378a8184613710565b905095945050505050565b6000815190506137a48161249d565b92915050565b6000602082840312156137c0576137bf612467565b5b60006137ce84828501613795565b91505092915050565b60006137e28261252c565b91506137ed8361252c565b925082820390508181111561380557613804612b70565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006138706020836125c4565b915061387b8261383a565b602082019050919050565b6000602082019050818103600083015261389f81613863565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b60006138dc601c836125c4565b91506138e7826138a6565b602082019050919050565b6000602082019050818103600083015261390b816138cf565b905091905056fe44657a656e7472616c697a656420496e737572616e63652050726f746f636f6c205265676973747279a26469706673582212207aa4e02bdaafea8b9e4c8cf55d062e2091ac80190615fb6e2ba4b980fc8a1dae64736f6c63430008140033",
|
767
|
+
"bytecode": "0x60806040523480156200001157600080fd5b5060405162001e3d38038062001e3d83398101604081905262000034916200012e565b60405180606001604052806024815260200162001e196024913960408051808201909152600681526511125413919560d21b6020820152600062000079838262000205565b50600162000088828262000205565b5050506001600160a01b038116620000b357604051630ae1413f60e11b815260040160405180910390fd5b600c80546001600160a01b0319166001600160a01b03831617905546600d8190556000600e555b80156200010e57600e8054906000620000f383620002e7565b90915550620001069050600a8262000303565b9050620000da565b600e546200011e90600a62000425565b600f555050600460105562000433565b6000602082840312156200014157600080fd5b81516001600160a01b03811681146200015957600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018b57607f821691505b602082108103620001ac57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020057600081815260208120601f850160051c81016020861015620001db5750805b601f850160051c820191505b81811015620001fc57828155600101620001e7565b5050505b505050565b81516001600160401b0381111562000221576200022162000160565b620002398162000232845462000176565b84620001b2565b602080601f831160018114620002715760008415620002585750858301515b600019600386901b1c1916600185901b178555620001fc565b600085815260208120601f198616915b82811015620002a25788860151825594840194600190910190840162000281565b5085821015620002c15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201620002fc57620002fc620002d1565b5060010190565b6000826200032157634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620003675781600019048211156200034b576200034b620002d1565b808516156200035957918102915b93841c93908002906200032b565b509250929050565b60008262000380575060016200041f565b816200038f575060006200041f565b8160018114620003a85760028114620003b357620003d3565b60019150506200041f565b60ff841115620003c757620003c7620002d1565b50506001821b6200041f565b5060208310610133831016604e8410600b8410161715620003f8575081810a6200041f565b62000404838362000326565b80600019048211156200041b576200041b620002d1565b0290505b92915050565b60006200015983836200036f565b6119d680620004436000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80634f558e7911610104578063a22cb465116100a2578063c87b56dd11610071578063c87b56dd146103dc578063e985e9c5146103ef578063f21de1e814610402578063f76f8d781461041357600080fd5b8063a22cb465146103a6578063a2309ff8146103b9578063a3f4df7e146103c1578063b88d4fde146103c957600080fd5b80636352211e116100de5780636352211e1461036557806370a0823114610378578063862440e21461038b57806395d89b411461039e57600080fd5b80634f558e791461031e5780634f6ccce714610349578063598e28921461035c57600080fd5b806323b872dd11610171578063342ec4431161014b578063342ec443146102bc57806340c10f19146102e557806342842e0e146102f857806342966c681461030b57600080fd5b806323b872dd1461028d5780632e85b1f3146102a05780632f745c59146102a957600080fd5b8063081812fc116101ad578063081812fc14610232578063095ea7b31461025d57806318160ddd14610272578063221375a61461027a57600080fd5b806301ffc9a7146101d45780630559ea47146101fc57806306fdde031461021d575b600080fd5b6101e76101e23660046113da565b610438565b60405190151581526020015b60405180910390f35b61020f61020a3660046113f7565b610463565b6040519081526020016101f3565b610225610498565b6040516101f39190611456565b6102456102403660046113f7565b61052a565b6040516001600160a01b0390911681526020016101f3565b61027061026b366004611485565b610553565b005b60085461020f565b61020f61028836600461155b565b610562565b61027061029b3660046115b9565b61061f565b61020f61083581565b61020f6102b7366004611485565b6106c8565b6102456102ca3660046113f7565b6000908152600a60205260409020546001600160a01b031690565b6102706102f3366004611485565b61072d565b6102706103063660046115b9565b610779565b6102706103193660046113f7565b610794565b6101e761032c3660046113f7565b6000908152600260205260409020546001600160a01b0316151590565b61020f6103573660046113f7565b6107ee565b61020f61044d81565b6102456103733660046113f7565b610847565b61020f6103863660046115f5565b610852565b610270610399366004611610565b61089a565b610225610945565b6102706103b4366004611657565b610954565b60115461020f565b61022561095f565b6102706103d7366004611693565b61097b565b6102256103ea3660046113f7565b610998565b6101e76103fd36600461170f565b610a42565b600c546001600160a01b0316610245565b6102256040518060400160405280600681526020016511125413919560d21b81525081565b60006001600160e01b0319821663780e9d6360e01b148061045d575061045d82610a70565b92915050565b6000600e54600d54600f54846104799190611758565b610483919061176f565b61048e906064611758565b61045d919061176f565b6060600080546104a790611782565b80601f01602080910402602001604051908101604052809291908181526020018280546104d390611782565b80156105205780601f106104f557610100808354040283529160200191610520565b820191906000526020600020905b81548152906001019060200180831161050357829003601f168201915b5050505050905090565b600061053582610ac0565b506000828152600460205260409020546001600160a01b031661045d565b61055e828233610af9565b5050565b600c546000906001600160a01b03163314610597576040516399c6cd7160e01b81523360048201526024015b60405180910390fd5b61059f610b06565b90506001600160a01b038316156105d8576000818152600a6020526040902080546001600160a01b0319166001600160a01b0385161790555b8151156105f9576000818152600b602052604090206105f7838261180a565b505b60118054906000610609836118ca565b91905055506106188482610b2d565b9392505050565b61062a838383610b47565b6000818152600a60205260409020546001600160a01b0316156106c3576000818152600a6020526040908190205490516373fbfdc360e11b81526001600160a01b0385811660048301528481166024830152604482018490529091169063e7f7fb8690606401600060405180830381600087803b1580156106aa57600080fd5b505af11580156106be573d6000803e3d6000fd5b505050505b505050565b60006106d383610852565b82106107045760405163295f44f760e21b81526001600160a01b03841660048201526024810183905260440161058e565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b600c546001600160a01b0316331461075a576040516399c6cd7160e01b815233600482015260240161058e565b6011805490600061076a836118ca565b919050555061055e8282610b2d565b6106c38383836040518060200160405280600081525061097b565b600c546001600160a01b031633146107c1576040516399c6cd7160e01b815233600482015260240161058e565b6107ca81610ac0565b506107d481610bcc565b6000818152600b602052604081206107eb91611376565b50565b60006107f960085490565b82106108225760405163295f44f760e21b8152600060048201526024810183905260440161058e565b60088281548110610835576108356118e3565b90600052602060002001549050919050565b600061045d82610ac0565b60006001600160a01b03821661087e576040516322718ad960e21b81526000600482015260240161058e565b506001600160a01b031660009081526003602052604090205490565b600c546001600160a01b031633146108c7576040516399c6cd7160e01b815233600482015260240161058e565b80516000036108e957604051638e45096160e01b815260040160405180910390fd5b6000828152600b60205260408120805461090290611782565b905011156109235760405163303822c760e21b815260040160405180910390fd5b61092c82610ac0565b506000828152600b602052604090206106c3828261180a565b6060600180546104a790611782565b61055e338383610c07565b60405180606001604052806024815260200161197d6024913981565b61098684848461061f565b61099284848484610ca6565b50505050565b60606109a382610ac0565b506000828152600b6020526040902080546109bd90611782565b80601f01602080910402602001604051908101604052809291908181526020018280546109e990611782565b8015610a365780601f10610a0b57610100808354040283529160200191610a36565b820191906000526020600020905b815481529060010190602001808311610a1957829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b1480610aa157506001600160e01b03198216635b5e139f60e01b145b8061045d57506301ffc9a760e01b6001600160e01b031983161461045d565b6000818152600260205260408120546001600160a01b03168061045d57604051637e27328960e01b81526004810184905260240161058e565b6106c38383836001610dcf565b6000610b13601054610463565b601080549192506000610b25836118ca565b919050555090565b61055e828260405180602001604052806000815250610ed5565b6001600160a01b038216610b7157604051633250574960e11b81526000600482015260240161058e565b6000610b7e838333610eec565b9050836001600160a01b0316816001600160a01b031614610992576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161058e565b6000610bdb6000836000610eec565b90506001600160a01b03811661055e57604051637e27328960e01b81526004810183905260240161058e565b6001600160a01b038216610c3957604051630b61174360e31b81526001600160a01b038316600482015260240161058e565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561099257604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610ce89033908890879087906004016118f9565b6020604051808303816000875af1925050508015610d23575060408051601f3d908101601f19168201909252610d2091810190611936565b60015b610d8c573d808015610d51576040519150601f19603f3d011682016040523d82523d6000602084013e610d56565b606091505b508051600003610d8457604051633250574960e11b81526001600160a01b038516600482015260240161058e565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610dc857604051633250574960e11b81526001600160a01b038516600482015260240161058e565b5050505050565b8080610de357506001600160a01b03821615155b15610ea5576000610df384610ac0565b90506001600160a01b03831615801590610e1f5750826001600160a01b0316816001600160a01b031614155b8015610e325750610e308184610a42565b155b15610e5b5760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161058e565b8115610ea35783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610edf8383610fc1565b6106c36000848484610ca6565b600080610efa858585611026565b90506001600160a01b038116610f5757610f5284600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b610f7a565b846001600160a01b0316816001600160a01b031614610f7a57610f7a818561111f565b6001600160a01b038516610f9657610f91846111b0565b610fb9565b846001600160a01b0316816001600160a01b031614610fb957610fb9858561125f565b949350505050565b6001600160a01b038216610feb57604051633250574960e11b81526000600482015260240161058e565b6000610ff983836000610eec565b90506001600160a01b038116156106c3576040516339e3563760e11b81526000600482015260240161058e565b6000828152600260205260408120546001600160a01b0390811690831615611053576110538184866112af565b6001600160a01b0381161561109157611070600085600080610dcf565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b038516156110c0576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b600061112a83610852565b60008381526007602052604090205490915080821461117d576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008546000906111c290600190611953565b600083815260096020526040812054600880549394509092849081106111ea576111ea6118e3565b90600052602060002001549050806008838154811061120b5761120b6118e3565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061124357611243611966565b6001900381819060005260206000200160009055905550505050565b6000600161126c84610852565b6112769190611953565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6112ba838383611313565b6106c3576001600160a01b0383166112e857604051637e27328960e01b81526004810182905260240161058e565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161058e565b60006001600160a01b03831615801590610fb95750826001600160a01b0316846001600160a01b0316148061134d575061134d8484610a42565b80610fb95750506000908152600460205260409020546001600160a01b03908116911614919050565b50805461138290611782565b6000825580601f10611392575050565b601f0160209004906000526020600020908101906107eb91905b808211156113c057600081556001016113ac565b5090565b6001600160e01b0319811681146107eb57600080fd5b6000602082840312156113ec57600080fd5b8135610618816113c4565b60006020828403121561140957600080fd5b5035919050565b6000815180845260005b818110156114365760208185018101518683018201520161141a565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006106186020830184611410565b80356001600160a01b038116811461148057600080fd5b919050565b6000806040838503121561149857600080fd5b6114a183611469565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156114e0576114e06114af565b604051601f8501601f19908116603f01168101908282118183101715611508576115086114af565b8160405280935085815286868601111561152157600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261154c57600080fd5b610618838335602085016114c5565b60008060006060848603121561157057600080fd5b61157984611469565b925061158760208501611469565b9150604084013567ffffffffffffffff8111156115a357600080fd5b6115af8682870161153b565b9150509250925092565b6000806000606084860312156115ce57600080fd5b6115d784611469565b92506115e560208501611469565b9150604084013590509250925092565b60006020828403121561160757600080fd5b61061882611469565b6000806040838503121561162357600080fd5b82359150602083013567ffffffffffffffff81111561164157600080fd5b61164d8582860161153b565b9150509250929050565b6000806040838503121561166a57600080fd5b61167383611469565b91506020830135801515811461168857600080fd5b809150509250929050565b600080600080608085870312156116a957600080fd5b6116b285611469565b93506116c060208601611469565b925060408501359150606085013567ffffffffffffffff8111156116e357600080fd5b8501601f810187136116f457600080fd5b611703878235602084016114c5565b91505092959194509250565b6000806040838503121561172257600080fd5b61172b83611469565b915061173960208401611469565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761045d5761045d611742565b8082018082111561045d5761045d611742565b600181811c9082168061179657607f821691505b6020821081036117b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156106c357600081815260208120601f850160051c810160208610156117e35750805b601f850160051c820191505b81811015611802578281556001016117ef565b505050505050565b815167ffffffffffffffff811115611824576118246114af565b611838816118328454611782565b846117bc565b602080601f83116001811461186d57600084156118555750858301515b600019600386901b1c1916600185901b178555611802565b600085815260208120601f198616915b8281101561189c5788860151825594840194600190910190840161187d565b50858210156118ba5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000600182016118dc576118dc611742565b5060010190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061192c90830184611410565b9695505050505050565b60006020828403121561194857600080fd5b8151610618816113c4565b8181038181111561045d5761045d611742565b634e487b7160e01b600052603160045260246000fdfe44657a656e7472616c697a656420496e737572616e63652050726f746f636f6c204e4654a2646970667358221220c02111bfc1745238d5ed0c2884c130c5bf93d8ad7a5e25aae3575fdca7d43f7564736f6c6343000814003344657a656e7472616c697a656420496e737572616e63652050726f746f636f6c204e4654",
|
768
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c80634f558e7911610104578063a22cb465116100a2578063c87b56dd11610071578063c87b56dd146103dc578063e985e9c5146103ef578063f21de1e814610402578063f76f8d781461041357600080fd5b8063a22cb465146103a6578063a2309ff8146103b9578063a3f4df7e146103c1578063b88d4fde146103c957600080fd5b80636352211e116100de5780636352211e1461036557806370a0823114610378578063862440e21461038b57806395d89b411461039e57600080fd5b80634f558e791461031e5780634f6ccce714610349578063598e28921461035c57600080fd5b806323b872dd11610171578063342ec4431161014b578063342ec443146102bc57806340c10f19146102e557806342842e0e146102f857806342966c681461030b57600080fd5b806323b872dd1461028d5780632e85b1f3146102a05780632f745c59146102a957600080fd5b8063081812fc116101ad578063081812fc14610232578063095ea7b31461025d57806318160ddd14610272578063221375a61461027a57600080fd5b806301ffc9a7146101d45780630559ea47146101fc57806306fdde031461021d575b600080fd5b6101e76101e23660046113da565b610438565b60405190151581526020015b60405180910390f35b61020f61020a3660046113f7565b610463565b6040519081526020016101f3565b610225610498565b6040516101f39190611456565b6102456102403660046113f7565b61052a565b6040516001600160a01b0390911681526020016101f3565b61027061026b366004611485565b610553565b005b60085461020f565b61020f61028836600461155b565b610562565b61027061029b3660046115b9565b61061f565b61020f61083581565b61020f6102b7366004611485565b6106c8565b6102456102ca3660046113f7565b6000908152600a60205260409020546001600160a01b031690565b6102706102f3366004611485565b61072d565b6102706103063660046115b9565b610779565b6102706103193660046113f7565b610794565b6101e761032c3660046113f7565b6000908152600260205260409020546001600160a01b0316151590565b61020f6103573660046113f7565b6107ee565b61020f61044d81565b6102456103733660046113f7565b610847565b61020f6103863660046115f5565b610852565b610270610399366004611610565b61089a565b610225610945565b6102706103b4366004611657565b610954565b60115461020f565b61022561095f565b6102706103d7366004611693565b61097b565b6102256103ea3660046113f7565b610998565b6101e76103fd36600461170f565b610a42565b600c546001600160a01b0316610245565b6102256040518060400160405280600681526020016511125413919560d21b81525081565b60006001600160e01b0319821663780e9d6360e01b148061045d575061045d82610a70565b92915050565b6000600e54600d54600f54846104799190611758565b610483919061176f565b61048e906064611758565b61045d919061176f565b6060600080546104a790611782565b80601f01602080910402602001604051908101604052809291908181526020018280546104d390611782565b80156105205780601f106104f557610100808354040283529160200191610520565b820191906000526020600020905b81548152906001019060200180831161050357829003601f168201915b5050505050905090565b600061053582610ac0565b506000828152600460205260409020546001600160a01b031661045d565b61055e828233610af9565b5050565b600c546000906001600160a01b03163314610597576040516399c6cd7160e01b81523360048201526024015b60405180910390fd5b61059f610b06565b90506001600160a01b038316156105d8576000818152600a6020526040902080546001600160a01b0319166001600160a01b0385161790555b8151156105f9576000818152600b602052604090206105f7838261180a565b505b60118054906000610609836118ca565b91905055506106188482610b2d565b9392505050565b61062a838383610b47565b6000818152600a60205260409020546001600160a01b0316156106c3576000818152600a6020526040908190205490516373fbfdc360e11b81526001600160a01b0385811660048301528481166024830152604482018490529091169063e7f7fb8690606401600060405180830381600087803b1580156106aa57600080fd5b505af11580156106be573d6000803e3d6000fd5b505050505b505050565b60006106d383610852565b82106107045760405163295f44f760e21b81526001600160a01b03841660048201526024810183905260440161058e565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b600c546001600160a01b0316331461075a576040516399c6cd7160e01b815233600482015260240161058e565b6011805490600061076a836118ca565b919050555061055e8282610b2d565b6106c38383836040518060200160405280600081525061097b565b600c546001600160a01b031633146107c1576040516399c6cd7160e01b815233600482015260240161058e565b6107ca81610ac0565b506107d481610bcc565b6000818152600b602052604081206107eb91611376565b50565b60006107f960085490565b82106108225760405163295f44f760e21b8152600060048201526024810183905260440161058e565b60088281548110610835576108356118e3565b90600052602060002001549050919050565b600061045d82610ac0565b60006001600160a01b03821661087e576040516322718ad960e21b81526000600482015260240161058e565b506001600160a01b031660009081526003602052604090205490565b600c546001600160a01b031633146108c7576040516399c6cd7160e01b815233600482015260240161058e565b80516000036108e957604051638e45096160e01b815260040160405180910390fd5b6000828152600b60205260408120805461090290611782565b905011156109235760405163303822c760e21b815260040160405180910390fd5b61092c82610ac0565b506000828152600b602052604090206106c3828261180a565b6060600180546104a790611782565b61055e338383610c07565b60405180606001604052806024815260200161197d6024913981565b61098684848461061f565b61099284848484610ca6565b50505050565b60606109a382610ac0565b506000828152600b6020526040902080546109bd90611782565b80601f01602080910402602001604051908101604052809291908181526020018280546109e990611782565b8015610a365780601f10610a0b57610100808354040283529160200191610a36565b820191906000526020600020905b815481529060010190602001808311610a1957829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b1480610aa157506001600160e01b03198216635b5e139f60e01b145b8061045d57506301ffc9a760e01b6001600160e01b031983161461045d565b6000818152600260205260408120546001600160a01b03168061045d57604051637e27328960e01b81526004810184905260240161058e565b6106c38383836001610dcf565b6000610b13601054610463565b601080549192506000610b25836118ca565b919050555090565b61055e828260405180602001604052806000815250610ed5565b6001600160a01b038216610b7157604051633250574960e11b81526000600482015260240161058e565b6000610b7e838333610eec565b9050836001600160a01b0316816001600160a01b031614610992576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161058e565b6000610bdb6000836000610eec565b90506001600160a01b03811661055e57604051637e27328960e01b81526004810183905260240161058e565b6001600160a01b038216610c3957604051630b61174360e31b81526001600160a01b038316600482015260240161058e565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561099257604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610ce89033908890879087906004016118f9565b6020604051808303816000875af1925050508015610d23575060408051601f3d908101601f19168201909252610d2091810190611936565b60015b610d8c573d808015610d51576040519150601f19603f3d011682016040523d82523d6000602084013e610d56565b606091505b508051600003610d8457604051633250574960e11b81526001600160a01b038516600482015260240161058e565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610dc857604051633250574960e11b81526001600160a01b038516600482015260240161058e565b5050505050565b8080610de357506001600160a01b03821615155b15610ea5576000610df384610ac0565b90506001600160a01b03831615801590610e1f5750826001600160a01b0316816001600160a01b031614155b8015610e325750610e308184610a42565b155b15610e5b5760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161058e565b8115610ea35783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610edf8383610fc1565b6106c36000848484610ca6565b600080610efa858585611026565b90506001600160a01b038116610f5757610f5284600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b610f7a565b846001600160a01b0316816001600160a01b031614610f7a57610f7a818561111f565b6001600160a01b038516610f9657610f91846111b0565b610fb9565b846001600160a01b0316816001600160a01b031614610fb957610fb9858561125f565b949350505050565b6001600160a01b038216610feb57604051633250574960e11b81526000600482015260240161058e565b6000610ff983836000610eec565b90506001600160a01b038116156106c3576040516339e3563760e11b81526000600482015260240161058e565b6000828152600260205260408120546001600160a01b0390811690831615611053576110538184866112af565b6001600160a01b0381161561109157611070600085600080610dcf565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b038516156110c0576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b600061112a83610852565b60008381526007602052604090205490915080821461117d576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008546000906111c290600190611953565b600083815260096020526040812054600880549394509092849081106111ea576111ea6118e3565b90600052602060002001549050806008838154811061120b5761120b6118e3565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061124357611243611966565b6001900381819060005260206000200160009055905550505050565b6000600161126c84610852565b6112769190611953565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6112ba838383611313565b6106c3576001600160a01b0383166112e857604051637e27328960e01b81526004810182905260240161058e565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161058e565b60006001600160a01b03831615801590610fb95750826001600160a01b0316846001600160a01b0316148061134d575061134d8484610a42565b80610fb95750506000908152600460205260409020546001600160a01b03908116911614919050565b50805461138290611782565b6000825580601f10611392575050565b601f0160209004906000526020600020908101906107eb91905b808211156113c057600081556001016113ac565b5090565b6001600160e01b0319811681146107eb57600080fd5b6000602082840312156113ec57600080fd5b8135610618816113c4565b60006020828403121561140957600080fd5b5035919050565b6000815180845260005b818110156114365760208185018101518683018201520161141a565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006106186020830184611410565b80356001600160a01b038116811461148057600080fd5b919050565b6000806040838503121561149857600080fd5b6114a183611469565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156114e0576114e06114af565b604051601f8501601f19908116603f01168101908282118183101715611508576115086114af565b8160405280935085815286868601111561152157600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261154c57600080fd5b610618838335602085016114c5565b60008060006060848603121561157057600080fd5b61157984611469565b925061158760208501611469565b9150604084013567ffffffffffffffff8111156115a357600080fd5b6115af8682870161153b565b9150509250925092565b6000806000606084860312156115ce57600080fd5b6115d784611469565b92506115e560208501611469565b9150604084013590509250925092565b60006020828403121561160757600080fd5b61061882611469565b6000806040838503121561162357600080fd5b82359150602083013567ffffffffffffffff81111561164157600080fd5b61164d8582860161153b565b9150509250929050565b6000806040838503121561166a57600080fd5b61167383611469565b91506020830135801515811461168857600080fd5b809150509250929050565b600080600080608085870312156116a957600080fd5b6116b285611469565b93506116c060208601611469565b925060408501359150606085013567ffffffffffffffff8111156116e357600080fd5b8501601f810187136116f457600080fd5b611703878235602084016114c5565b91505092959194509250565b6000806040838503121561172257600080fd5b61172b83611469565b915061173960208401611469565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761045d5761045d611742565b8082018082111561045d5761045d611742565b600181811c9082168061179657607f821691505b6020821081036117b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156106c357600081815260208120601f850160051c810160208610156117e35750805b601f850160051c820191505b81811015611802578281556001016117ef565b505050505050565b815167ffffffffffffffff811115611824576118246114af565b611838816118328454611782565b846117bc565b602080601f83116001811461186d57600084156118555750858301515b600019600386901b1c1916600185901b178555611802565b600085815260208120601f198616915b8281101561189c5788860151825594840194600190910190840161187d565b50858210156118ba5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000600182016118dc576118dc611742565b5060010190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061192c90830184611410565b9695505050505050565b60006020828403121561194857600080fd5b8151610618816113c4565b8181038181111561045d5761045d611742565b634e487b7160e01b600052603160045260246000fdfe44657a656e7472616c697a656420496e737572616e63652050726f746f636f6c204e4654a2646970667358221220c02111bfc1745238d5ed0c2884c130c5bf93d8ad7a5e25aae3575fdca7d43f7564736f6c63430008140033",
|
595
769
|
"linkReferences": {},
|
596
770
|
"deployedLinkReferences": {}
|
597
771
|
}
|