diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..140ea9eed --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "lib/openzeppelin-contracts"] + path = lib/openzeppelin-contracts + url = https://github.com/OpenZeppelin/openzeppelin-contracts diff --git a/contracts/interfaces/IClaimAdapter.sol b/contracts/interfaces/IClaimAdapter.sol index dc5dbac0a..db88e833f 100644 --- a/contracts/interfaces/IClaimAdapter.sol +++ b/contracts/interfaces/IClaimAdapter.sol @@ -16,7 +16,7 @@ SPDX-License-Identifier: Apache License, Version 2.0 */ -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; import { ISetToken } from "../interfaces/ISetToken.sol"; diff --git a/contracts/interfaces/IModuleIssuanceHook.sol b/contracts/interfaces/IModuleIssuanceHook.sol index 6224b87f9..1822af612 100644 --- a/contracts/interfaces/IModuleIssuanceHook.sol +++ b/contracts/interfaces/IModuleIssuanceHook.sol @@ -17,7 +17,7 @@ */ pragma solidity 0.6.10; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; import { ISetToken } from "./ISetToken.sol"; diff --git a/contracts/interfaces/IModuleIssuanceHookV2.sol b/contracts/interfaces/IModuleIssuanceHookV2.sol index 09218aa04..b2bb1bb5d 100644 --- a/contracts/interfaces/IModuleIssuanceHookV2.sol +++ b/contracts/interfaces/IModuleIssuanceHookV2.sol @@ -17,7 +17,7 @@ */ pragma solidity 0.6.10; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; import { ISetToken } from "./ISetToken.sol"; diff --git a/contracts/interfaces/IPerpV2LeverageModule.sol b/contracts/interfaces/IPerpV2LeverageModule.sol index 673ba86e4..91aa88216 100644 --- a/contracts/interfaces/IPerpV2LeverageModule.sol +++ b/contracts/interfaces/IPerpV2LeverageModule.sol @@ -18,7 +18,7 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; import { ISetToken } from "./ISetToken.sol"; import { IDebtIssuanceModule } from "./IDebtIssuanceModule.sol"; diff --git a/contracts/interfaces/ISetToken.sol b/contracts/interfaces/ISetToken.sol index b4e6d398c..b9ea1a972 100644 --- a/contracts/interfaces/ISetToken.sol +++ b/contracts/interfaces/ISetToken.sol @@ -18,7 +18,7 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; /** * @title ISetToken diff --git a/contracts/interfaces/external/ICErc20.sol b/contracts/interfaces/external/ICErc20.sol index 4f5a5f2db..9750077bc 100644 --- a/contracts/interfaces/external/ICErc20.sol +++ b/contracts/interfaces/external/ICErc20.sol @@ -18,7 +18,7 @@ pragma solidity 0.6.10; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; /** diff --git a/contracts/interfaces/external/ICEth.sol b/contracts/interfaces/external/ICEth.sol index bb9dbe507..52b8db1b3 100644 --- a/contracts/interfaces/external/ICEth.sol +++ b/contracts/interfaces/external/ICEth.sol @@ -18,7 +18,7 @@ pragma solidity 0.6.10; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; /** diff --git a/contracts/interfaces/external/IDMMFactory.sol b/contracts/interfaces/external/IDMMFactory.sol index e58d87770..bd2e7801f 100644 --- a/contracts/interfaces/external/IDMMFactory.sol +++ b/contracts/interfaces/external/IDMMFactory.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: BUSL-1.1 pragma solidity 0.6.10; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/token/ERC20/IERC20.sol"; interface IDMMFactory { function createPool( diff --git a/contracts/interfaces/external/IDMMPool.sol b/contracts/interfaces/external/IDMMPool.sol index 1a29a69c4..f0ed0758f 100644 --- a/contracts/interfaces/external/IDMMPool.sol +++ b/contracts/interfaces/external/IDMMPool.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: BUSL-1.1 pragma solidity 0.6.10; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/token/ERC20/IERC20.sol"; import "./IDMMFactory.sol"; diff --git a/contracts/interfaces/external/IWETH.sol b/contracts/interfaces/external/IWETH.sol index 328ecfd7b..2a83c75a6 100644 --- a/contracts/interfaces/external/IWETH.sol +++ b/contracts/interfaces/external/IWETH.sol @@ -18,7 +18,7 @@ pragma solidity 0.6.10; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; /** * @title IWETH diff --git a/contracts/interfaces/external/aave-v2/IAToken.sol b/contracts/interfaces/external/aave-v2/IAToken.sol index 21ac91d8e..8c92a37fa 100644 --- a/contracts/interfaces/external/aave-v2/IAToken.sol +++ b/contracts/interfaces/external/aave-v2/IAToken.sol @@ -17,7 +17,7 @@ */ pragma solidity 0.6.10; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; interface IAToken is IERC20 { function UNDERLYING_ASSET_ADDRESS() external view returns (address); } diff --git a/contracts/interfaces/external/aave-v2/IStableDebtToken.sol b/contracts/interfaces/external/aave-v2/IStableDebtToken.sol index cd6df6f33..6d3986fd7 100644 --- a/contracts/interfaces/external/aave-v2/IStableDebtToken.sol +++ b/contracts/interfaces/external/aave-v2/IStableDebtToken.sol @@ -17,7 +17,7 @@ */ pragma solidity 0.6.10; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; /** * @title IStableDebtToken diff --git a/contracts/interfaces/external/aave-v2/IVariableDebtToken.sol b/contracts/interfaces/external/aave-v2/IVariableDebtToken.sol index cd5a74bb2..822ff07eb 100644 --- a/contracts/interfaces/external/aave-v2/IVariableDebtToken.sol +++ b/contracts/interfaces/external/aave-v2/IVariableDebtToken.sol @@ -17,7 +17,7 @@ */ pragma solidity 0.6.10; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; /** * @title IVariableDebtToken diff --git a/contracts/lib/ExplicitERC20.sol b/contracts/lib/ExplicitERC20.sol index 7684e1ae7..e2b96cb22 100644 --- a/contracts/lib/ExplicitERC20.sol +++ b/contracts/lib/ExplicitERC20.sol @@ -18,9 +18,9 @@ pragma solidity 0.6.10; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/SafeERC20.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { SafeERC20 } from "@openzeppelin/token/ERC20/SafeERC20.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; /** * @title ExplicitERC20 diff --git a/contracts/lib/PreciseUnitMath.sol b/contracts/lib/PreciseUnitMath.sol index ebf02454b..8111962ad 100644 --- a/contracts/lib/PreciseUnitMath.sol +++ b/contracts/lib/PreciseUnitMath.sol @@ -19,9 +19,9 @@ pragma solidity 0.6.10; pragma experimental ABIEncoderV2; -import { SafeCast } from "@openzeppelin/contracts/utils/SafeCast.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; -import { SignedSafeMath } from "@openzeppelin/contracts/math/SignedSafeMath.sol"; +import { SafeCast } from "@openzeppelin/utils/SafeCast.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; +import { SignedSafeMath } from "@openzeppelin/math/SignedSafeMath.sol"; /** diff --git a/contracts/lib/UnitConversionUtils.sol b/contracts/lib/UnitConversionUtils.sol index b597eb88e..e72e35959 100644 --- a/contracts/lib/UnitConversionUtils.sol +++ b/contracts/lib/UnitConversionUtils.sol @@ -18,8 +18,8 @@ pragma solidity 0.6.10; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; -import { SignedSafeMath } from "@openzeppelin/contracts/math/SignedSafeMath.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; +import { SignedSafeMath } from "@openzeppelin/math/SignedSafeMath.sol"; /** * @title UnitConversionUtils diff --git a/contracts/mocks/ContractCallerMock.sol b/contracts/mocks/ContractCallerMock.sol index e80e8ac38..5a76825d3 100644 --- a/contracts/mocks/ContractCallerMock.sol +++ b/contracts/mocks/ContractCallerMock.sol @@ -18,7 +18,7 @@ pragma solidity 0.6.10; -import { Address } from "@openzeppelin/contracts/utils/Address.sol"; +import { Address } from "@openzeppelin/utils/Address.sol"; contract ContractCallerMock { diff --git a/contracts/mocks/ExplicitERC20Mock.sol b/contracts/mocks/ExplicitERC20Mock.sol index ffe35aec8..21a5b2356 100644 --- a/contracts/mocks/ExplicitERC20Mock.sol +++ b/contracts/mocks/ExplicitERC20Mock.sol @@ -20,7 +20,7 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; import { ExplicitERC20 } from "../lib/ExplicitERC20.sol"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; contract ExplicitERC20Mock { diff --git a/contracts/mocks/OracleAdapterMock.sol b/contracts/mocks/OracleAdapterMock.sol index b5784bcb9..737035bab 100644 --- a/contracts/mocks/OracleAdapterMock.sol +++ b/contracts/mocks/OracleAdapterMock.sol @@ -18,8 +18,8 @@ pragma solidity 0.6.10; -import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; +import { Ownable } from "@openzeppelin/access/Ownable.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; import { IOracle } from "../interfaces/IOracle.sol"; diff --git a/contracts/mocks/StandardTokenMock.sol b/contracts/mocks/StandardTokenMock.sol index e17f8447e..80c4218b2 100644 --- a/contracts/mocks/StandardTokenMock.sol +++ b/contracts/mocks/StandardTokenMock.sol @@ -18,7 +18,7 @@ pragma solidity 0.6.10; -import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import "@openzeppelin/token/ERC20/ERC20.sol"; // mock class using BasicToken contract StandardTokenMock is ERC20 { diff --git a/contracts/mocks/StandardTokenWithFeeMock.sol b/contracts/mocks/StandardTokenWithFeeMock.sol index 317ffbc10..cdcb951f1 100644 --- a/contracts/mocks/StandardTokenWithFeeMock.sol +++ b/contracts/mocks/StandardTokenWithFeeMock.sol @@ -18,7 +18,7 @@ pragma solidity 0.6.10; -import "@openzeppelin/contracts/math/SafeMath.sol"; +import "@openzeppelin/math/SafeMath.sol"; // mock class using BasicToken diff --git a/contracts/mocks/StandardTokenWithRoundingErrorMock.sol b/contracts/mocks/StandardTokenWithRoundingErrorMock.sol index e39bb7071..616cb8700 100644 --- a/contracts/mocks/StandardTokenWithRoundingErrorMock.sol +++ b/contracts/mocks/StandardTokenWithRoundingErrorMock.sol @@ -19,9 +19,9 @@ pragma solidity 0.6.10; import "./StandardTokenMock.sol"; -import "@openzeppelin/contracts/math/SignedSafeMath.sol"; -import "@openzeppelin/contracts/math/SafeMath.sol"; -import "@openzeppelin/contracts/utils/SafeCast.sol"; +import "@openzeppelin/math/SignedSafeMath.sol"; +import "@openzeppelin/math/SafeMath.sol"; +import "@openzeppelin/utils/SafeCast.sol"; contract StandardTokenWithRoundingErrorMock { using SignedSafeMath for int256; diff --git a/contracts/mocks/external/ComptrollerMock.sol b/contracts/mocks/external/ComptrollerMock.sol index 310f38f76..06370a77f 100644 --- a/contracts/mocks/external/ComptrollerMock.sol +++ b/contracts/mocks/external/ComptrollerMock.sol @@ -18,7 +18,7 @@ pragma solidity 0.6.10; -import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import { ERC20 } from "@openzeppelin/token/ERC20/ERC20.sol"; import { ICErc20 } from "../../interfaces/external/ICErc20.sol"; contract ComptrollerMock { diff --git a/contracts/mocks/external/KyberNetworkProxyMock.sol b/contracts/mocks/external/KyberNetworkProxyMock.sol index c63fd035d..f1e10a82b 100644 --- a/contracts/mocks/external/KyberNetworkProxyMock.sol +++ b/contracts/mocks/external/KyberNetworkProxyMock.sol @@ -18,8 +18,8 @@ pragma solidity 0.6.10; -import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; +import { ERC20 } from "@openzeppelin/token/ERC20/ERC20.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; // Mock contract implementation of KyberNetworkProxy, where token can only be traded against WETH for simplicity. // Adapted from Argent mock Kyber implementation diff --git a/contracts/mocks/external/OneInchExchangeMock.sol b/contracts/mocks/external/OneInchExchangeMock.sol index 4056e9c0a..c9196d626 100644 --- a/contracts/mocks/external/OneInchExchangeMock.sol +++ b/contracts/mocks/external/OneInchExchangeMock.sol @@ -18,8 +18,8 @@ pragma solidity 0.6.10; -import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; +import { ERC20 } from "@openzeppelin/token/ERC20/ERC20.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; // Mock contract implementation of 1Inch contract OneInchExchangeMock { diff --git a/contracts/mocks/external/SynthetixExchangerMock.sol b/contracts/mocks/external/SynthetixExchangerMock.sol index 5b0713115..54641f20a 100644 --- a/contracts/mocks/external/SynthetixExchangerMock.sol +++ b/contracts/mocks/external/SynthetixExchangerMock.sol @@ -18,7 +18,7 @@ pragma solidity 0.6.10; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; import { SynthMock } from "./SynthMock.sol"; contract SynthetixExchangerMock { diff --git a/contracts/mocks/external/YearnStrategyMock.sol b/contracts/mocks/external/YearnStrategyMock.sol index 27758a0f9..b459b00c3 100644 --- a/contracts/mocks/external/YearnStrategyMock.sol +++ b/contracts/mocks/external/YearnStrategyMock.sol @@ -2,7 +2,7 @@ pragma solidity 0.6.10; pragma experimental ABIEncoderV2; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/token/ERC20/IERC20.sol"; import {BaseStrategyInitializable, StrategyParams, VaultAPI} from "../../../external/contracts/yearn/BaseStrategy.sol"; /* diff --git a/contracts/mocks/external/ZeroExMock.sol b/contracts/mocks/external/ZeroExMock.sol index f54e9f0a2..04ddad64a 100644 --- a/contracts/mocks/external/ZeroExMock.sol +++ b/contracts/mocks/external/ZeroExMock.sol @@ -19,7 +19,7 @@ pragma solidity 0.6.10; pragma experimental ABIEncoderV2; -import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import { ERC20 } from "@openzeppelin/token/ERC20/ERC20.sol"; // Minimal 0x Exchange Proxy contract interface. contract ZeroExMock { diff --git a/contracts/mocks/integrations/AmmAdapterMock.sol b/contracts/mocks/integrations/AmmAdapterMock.sol index dffb0a5e9..18ef415d1 100644 --- a/contracts/mocks/integrations/AmmAdapterMock.sol +++ b/contracts/mocks/integrations/AmmAdapterMock.sol @@ -18,8 +18,8 @@ pragma solidity 0.6.10; -import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { ERC20 } from "@openzeppelin/token/ERC20/ERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; /** diff --git a/contracts/mocks/integrations/ClaimAdapterMock.sol b/contracts/mocks/integrations/ClaimAdapterMock.sol index ff0383a51..63c07ffa8 100644 --- a/contracts/mocks/integrations/ClaimAdapterMock.sol +++ b/contracts/mocks/integrations/ClaimAdapterMock.sol @@ -18,8 +18,8 @@ pragma solidity 0.6.10; -import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { ERC20 } from "@openzeppelin/token/ERC20/ERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; import { ISetToken } from "../../interfaces/ISetToken.sol"; diff --git a/contracts/mocks/integrations/GovernanceAdapterMock.sol b/contracts/mocks/integrations/GovernanceAdapterMock.sol index 5ee46f046..9137d6e81 100644 --- a/contracts/mocks/integrations/GovernanceAdapterMock.sol +++ b/contracts/mocks/integrations/GovernanceAdapterMock.sol @@ -19,7 +19,7 @@ pragma solidity 0.6.10; pragma experimental ABIEncoderV2; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; /** diff --git a/contracts/mocks/integrations/StakingAdapterMock.sol b/contracts/mocks/integrations/StakingAdapterMock.sol index fa2a0ca8b..753298d2e 100644 --- a/contracts/mocks/integrations/StakingAdapterMock.sol +++ b/contracts/mocks/integrations/StakingAdapterMock.sol @@ -18,9 +18,9 @@ pragma solidity 0.6.10; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; /** diff --git a/contracts/mocks/integrations/TradeAdapterMock.sol b/contracts/mocks/integrations/TradeAdapterMock.sol index 259308095..140f6aa46 100644 --- a/contracts/mocks/integrations/TradeAdapterMock.sol +++ b/contracts/mocks/integrations/TradeAdapterMock.sol @@ -19,7 +19,7 @@ pragma solidity 0.6.10; pragma experimental ABIEncoderV2; -import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import { ERC20 } from "@openzeppelin/token/ERC20/ERC20.sol"; /** * @title TradeAdapterMock diff --git a/contracts/mocks/integrations/WrapAdapterMock.sol b/contracts/mocks/integrations/WrapAdapterMock.sol index 39ae15ea1..62ede274e 100644 --- a/contracts/mocks/integrations/WrapAdapterMock.sol +++ b/contracts/mocks/integrations/WrapAdapterMock.sol @@ -18,8 +18,8 @@ pragma solidity 0.6.10; -import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { ERC20 } from "@openzeppelin/token/ERC20/ERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; /** diff --git a/contracts/mocks/integrations/WrapV2AdapterMock.sol b/contracts/mocks/integrations/WrapV2AdapterMock.sol index 8fa2cfdf6..dffb5e20d 100644 --- a/contracts/mocks/integrations/WrapV2AdapterMock.sol +++ b/contracts/mocks/integrations/WrapV2AdapterMock.sol @@ -18,8 +18,8 @@ pragma solidity 0.6.10; -import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { ERC20 } from "@openzeppelin/token/ERC20/ERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; /** diff --git a/contracts/mocks/protocol/integration/lib/PerpV2Mock.sol b/contracts/mocks/protocol/integration/lib/PerpV2Mock.sol index 6e26fd6c6..9f0e31547 100644 --- a/contracts/mocks/protocol/integration/lib/PerpV2Mock.sol +++ b/contracts/mocks/protocol/integration/lib/PerpV2Mock.sol @@ -19,7 +19,7 @@ pragma solidity 0.6.10; pragma experimental ABIEncoderV2; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; import { IClearingHouse } from "../../../../interfaces/external/perp-v2/IClearingHouse.sol"; import { IVault } from "../../../../interfaces/external/perp-v2/IVault.sol"; import { IQuoter } from "../../../../interfaces/external/perp-v2/IQuoter.sol"; diff --git a/contracts/mocks/protocol/lib/ModuleBaseMock.sol b/contracts/mocks/protocol/lib/ModuleBaseMock.sol index 8a51080e6..ee2a06362 100644 --- a/contracts/mocks/protocol/lib/ModuleBaseMock.sol +++ b/contracts/mocks/protocol/lib/ModuleBaseMock.sol @@ -18,7 +18,7 @@ pragma solidity 0.6.10; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; import { IController } from "../../../interfaces/IController.sol"; import { ISetToken } from "../../../interfaces/ISetToken.sol"; diff --git a/contracts/mocks/protocol/module/DebtIssuanceMock.sol b/contracts/mocks/protocol/module/DebtIssuanceMock.sol index 53d9ac247..97d30cd06 100644 --- a/contracts/mocks/protocol/module/DebtIssuanceMock.sol +++ b/contracts/mocks/protocol/module/DebtIssuanceMock.sol @@ -17,7 +17,7 @@ */ pragma solidity 0.6.10; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; import { ISetToken } from "../../../interfaces/ISetToken.sol"; diff --git a/contracts/mocks/protocol/module/DebtModuleMock.sol b/contracts/mocks/protocol/module/DebtModuleMock.sol index 15bf9ec90..fa0774643 100644 --- a/contracts/mocks/protocol/module/DebtModuleMock.sol +++ b/contracts/mocks/protocol/module/DebtModuleMock.sol @@ -19,10 +19,10 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { SafeCast } from "@openzeppelin/contracts/utils/SafeCast.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; -import { SignedSafeMath } from "@openzeppelin/contracts/math/SignedSafeMath.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { SafeCast } from "@openzeppelin/utils/SafeCast.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; +import { SignedSafeMath } from "@openzeppelin/math/SignedSafeMath.sol"; import { Invoke } from "../../../protocol/lib/Invoke.sol"; import { IController } from "../../../interfaces/IController.sol"; diff --git a/contracts/mocks/protocol/module/ModuleIssuanceHookMock.sol b/contracts/mocks/protocol/module/ModuleIssuanceHookMock.sol index 4e5cf4def..751e05996 100644 --- a/contracts/mocks/protocol/module/ModuleIssuanceHookMock.sol +++ b/contracts/mocks/protocol/module/ModuleIssuanceHookMock.sol @@ -17,8 +17,8 @@ */ pragma solidity 0.6.10; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { SafeCast } from "@openzeppelin/contracts/utils/SafeCast.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { SafeCast } from "@openzeppelin/utils/SafeCast.sol"; import { ISetToken } from "../../../interfaces/ISetToken.sol"; import { IModuleIssuanceHook } from "../../../interfaces/IModuleIssuanceHook.sol"; diff --git a/contracts/mocks/protocol/module/NAVIssuanceCaller.sol b/contracts/mocks/protocol/module/NAVIssuanceCaller.sol index bfaf3b8e4..3f4c0256a 100644 --- a/contracts/mocks/protocol/module/NAVIssuanceCaller.sol +++ b/contracts/mocks/protocol/module/NAVIssuanceCaller.sol @@ -19,7 +19,7 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; import { INAVIssuanceModule } from "../../../interfaces/INAVIssuanceModule.sol"; import { ISetToken } from "../../../interfaces/ISetToken.sol"; diff --git a/contracts/product/AMMSplitter.sol b/contracts/product/AMMSplitter.sol index 819e7ebdd..91c4f94fd 100644 --- a/contracts/product/AMMSplitter.sol +++ b/contracts/product/AMMSplitter.sol @@ -19,9 +19,9 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/SafeERC20.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { SafeERC20 } from "@openzeppelin/token/ERC20/SafeERC20.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; import { IUniswapV2Factory } from "../interfaces/external/IUniswapV2Factory.sol"; import { IUniswapV2Router } from "../interfaces/external/IUniswapV2Router.sol"; diff --git a/contracts/product/AssetLimitHook.sol b/contracts/product/AssetLimitHook.sol index 40fe26b12..79bc3b01a 100644 --- a/contracts/product/AssetLimitHook.sol +++ b/contracts/product/AssetLimitHook.sol @@ -19,7 +19,7 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; +import { Ownable } from "@openzeppelin/access/Ownable.sol"; import { AddressArrayUtils } from "../lib/AddressArrayUtils.sol"; import { INAVIssuanceHook } from "../interfaces/INAVIssuanceHook.sol"; diff --git a/contracts/product/UniswapYieldHook.sol b/contracts/product/UniswapYieldHook.sol index e48a5bbb6..d1c1a2bae 100644 --- a/contracts/product/UniswapYieldHook.sol +++ b/contracts/product/UniswapYieldHook.sol @@ -19,7 +19,7 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; +import { Ownable } from "@openzeppelin/access/Ownable.sol"; import { AddressArrayUtils } from "../lib/AddressArrayUtils.sol"; import { INAVIssuanceHook } from "../interfaces/INAVIssuanceHook.sol"; diff --git a/contracts/protocol-viewers/ERC20Viewer.sol b/contracts/protocol-viewers/ERC20Viewer.sol index 81872c09f..a388c7fad 100644 --- a/contracts/protocol-viewers/ERC20Viewer.sol +++ b/contracts/protocol-viewers/ERC20Viewer.sol @@ -18,7 +18,7 @@ pragma solidity 0.6.10; -import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import { ERC20 } from "@openzeppelin/token/ERC20/ERC20.sol"; /** diff --git a/contracts/protocol-viewers/SetTokenViewer.sol b/contracts/protocol-viewers/SetTokenViewer.sol index 023efb02f..2efd4a183 100644 --- a/contracts/protocol-viewers/SetTokenViewer.sol +++ b/contracts/protocol-viewers/SetTokenViewer.sol @@ -19,7 +19,7 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import { ERC20 } from "@openzeppelin/token/ERC20/ERC20.sol"; import { ISetToken } from "../interfaces/ISetToken.sol"; diff --git a/contracts/protocol/Controller.sol b/contracts/protocol/Controller.sol index 80dc559f0..4e69ff79a 100644 --- a/contracts/protocol/Controller.sol +++ b/contracts/protocol/Controller.sol @@ -18,8 +18,8 @@ pragma solidity 0.6.10; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { Ownable } from "@openzeppelin/access/Ownable.sol"; import { AddressArrayUtils } from "../lib/AddressArrayUtils.sol"; diff --git a/contracts/protocol/IntegrationRegistry.sol b/contracts/protocol/IntegrationRegistry.sol index 761a75087..ce7dc7a14 100644 --- a/contracts/protocol/IntegrationRegistry.sol +++ b/contracts/protocol/IntegrationRegistry.sol @@ -20,7 +20,7 @@ pragma solidity 0.6.10; pragma experimental ABIEncoderV2; import { IController } from "../interfaces/IController.sol"; -import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; +import { Ownable } from "@openzeppelin/access/Ownable.sol"; /** * @title IntegrationRegistry diff --git a/contracts/protocol/PriceOracle.sol b/contracts/protocol/PriceOracle.sol index 8a89381e1..520d5be57 100644 --- a/contracts/protocol/PriceOracle.sol +++ b/contracts/protocol/PriceOracle.sol @@ -19,7 +19,7 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; +import { Ownable } from "@openzeppelin/access/Ownable.sol"; import { AddressArrayUtils } from "../lib/AddressArrayUtils.sol"; import { IController } from "../interfaces/IController.sol"; diff --git a/contracts/protocol/SetToken.sol b/contracts/protocol/SetToken.sol index 370525c6f..c5dc92827 100644 --- a/contracts/protocol/SetToken.sol +++ b/contracts/protocol/SetToken.sol @@ -19,11 +19,11 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { Address } from "@openzeppelin/contracts/utils/Address.sol"; -import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import { SafeCast } from "@openzeppelin/contracts/utils/SafeCast.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; -import { SignedSafeMath } from "@openzeppelin/contracts/math/SignedSafeMath.sol"; +import { Address } from "@openzeppelin/utils/Address.sol"; +import { ERC20 } from "@openzeppelin/token/ERC20/ERC20.sol"; +import { SafeCast } from "@openzeppelin/utils/SafeCast.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; +import { SignedSafeMath } from "@openzeppelin/math/SignedSafeMath.sol"; import { IController } from "../interfaces/IController.sol"; import { IModule } from "../interfaces/IModule.sol"; diff --git a/contracts/protocol/SetValuer.sol b/contracts/protocol/SetValuer.sol index 98dc29662..134b3511c 100644 --- a/contracts/protocol/SetValuer.sol +++ b/contracts/protocol/SetValuer.sol @@ -19,9 +19,9 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import { SafeCast } from "@openzeppelin/contracts/utils/SafeCast.sol"; -import { SignedSafeMath } from "@openzeppelin/contracts/math/SignedSafeMath.sol"; +import { ERC20 } from "@openzeppelin/token/ERC20/ERC20.sol"; +import { SafeCast } from "@openzeppelin/utils/SafeCast.sol"; +import { SignedSafeMath } from "@openzeppelin/math/SignedSafeMath.sol"; import { IController } from "../interfaces/IController.sol"; import { ISetToken } from "../interfaces/ISetToken.sol"; diff --git a/contracts/protocol/integration/amm/UniswapV2AmmAdapter.sol b/contracts/protocol/integration/amm/UniswapV2AmmAdapter.sol index c0cf8ab3c..7493111b5 100644 --- a/contracts/protocol/integration/amm/UniswapV2AmmAdapter.sol +++ b/contracts/protocol/integration/amm/UniswapV2AmmAdapter.sol @@ -22,8 +22,8 @@ import "../../../interfaces/external/IUniswapV2Router.sol"; import "../../../interfaces/external/IUniswapV2Pair.sol"; import "../../../interfaces/external/IUniswapV2Factory.sol"; import "../../../interfaces/IAmmAdapter.sol"; -import "@openzeppelin/contracts/math/Math.sol"; -import "@openzeppelin/contracts/math/SafeMath.sol"; +import "@openzeppelin/math/Math.sol"; +import "@openzeppelin/math/SafeMath.sol"; /** * @title UniswapV2AmmAdapter diff --git a/contracts/protocol/integration/exchange/KyberExchangeAdapter.sol b/contracts/protocol/integration/exchange/KyberExchangeAdapter.sol index 5b4e01cd2..4b22f0e2f 100644 --- a/contracts/protocol/integration/exchange/KyberExchangeAdapter.sol +++ b/contracts/protocol/integration/exchange/KyberExchangeAdapter.sol @@ -26,8 +26,8 @@ pragma experimental "ABIEncoderV2"; * Exchange adapter for Kyber that returns data for trades */ -import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; +import { ERC20 } from "@openzeppelin/token/ERC20/ERC20.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; import { PreciseUnitMath } from "../../../lib/PreciseUnitMath.sol"; import { IKyberNetworkProxy } from "../../../interfaces/external/IKyberNetworkProxy.sol"; diff --git a/contracts/protocol/integration/index-exchange/KyberV3IndexExchangeAdapter.sol b/contracts/protocol/integration/index-exchange/KyberV3IndexExchangeAdapter.sol index d58e3c70f..8e2a28f65 100644 --- a/contracts/protocol/integration/index-exchange/KyberV3IndexExchangeAdapter.sol +++ b/contracts/protocol/integration/index-exchange/KyberV3IndexExchangeAdapter.sol @@ -21,7 +21,7 @@ pragma experimental "ABIEncoderV2"; import { BytesLib } from "external/contracts/uniswap/v3/lib/BytesLib.sol"; import { IDMMFactory } from "../../../interfaces/external/IDMMFactory.sol"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; import { IIndexExchangeAdapter } from "../../../interfaces/IIndexExchangeAdapter.sol"; /** diff --git a/contracts/protocol/integration/lib/AaveV2.sol b/contracts/protocol/integration/lib/AaveV2.sol index f622273a6..d94b18d02 100644 --- a/contracts/protocol/integration/lib/AaveV2.sol +++ b/contracts/protocol/integration/lib/AaveV2.sol @@ -18,7 +18,7 @@ pragma solidity 0.6.10; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; import { ILendingPool } from "../../../interfaces/external/aave-v2/ILendingPool.sol"; import { ISetToken } from "../../../interfaces/ISetToken.sol"; diff --git a/contracts/protocol/integration/lib/PerpV2.sol b/contracts/protocol/integration/lib/PerpV2.sol index 7be99a0e1..0298188cc 100644 --- a/contracts/protocol/integration/lib/PerpV2.sol +++ b/contracts/protocol/integration/lib/PerpV2.sol @@ -19,7 +19,7 @@ pragma solidity 0.6.10; pragma experimental ABIEncoderV2; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; import { IClearingHouse } from "../../../interfaces/external/perp-v2/IClearingHouse.sol"; import { IVault } from "../../../interfaces/external/perp-v2/IVault.sol"; import { IQuoter } from "../../../interfaces/external/perp-v2/IQuoter.sol"; diff --git a/contracts/protocol/integration/oracles/CTokenOracle.sol b/contracts/protocol/integration/oracles/CTokenOracle.sol index fc0f8a5b5..2ff0ffd06 100644 --- a/contracts/protocol/integration/oracles/CTokenOracle.sol +++ b/contracts/protocol/integration/oracles/CTokenOracle.sol @@ -18,7 +18,7 @@ pragma solidity 0.6.10; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; import { PreciseUnitMath } from "../../../lib/PreciseUnitMath.sol"; import { ICErc20 } from "../../../interfaces/external/ICErc20.sol"; diff --git a/contracts/protocol/integration/oracles/UniswapPairPriceAdapter.sol b/contracts/protocol/integration/oracles/UniswapPairPriceAdapter.sol index cc7c70e2b..b70b96d7f 100644 --- a/contracts/protocol/integration/oracles/UniswapPairPriceAdapter.sol +++ b/contracts/protocol/integration/oracles/UniswapPairPriceAdapter.sol @@ -18,9 +18,9 @@ pragma solidity 0.6.10; -import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; +import { ERC20 } from "@openzeppelin/token/ERC20/ERC20.sol"; +import { Ownable } from "@openzeppelin/access/Ownable.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; import { AddressArrayUtils } from "../../../lib/AddressArrayUtils.sol"; import { IController } from "../../../interfaces/IController.sol"; diff --git a/contracts/protocol/integration/oracles/YearnVaultOracle.sol b/contracts/protocol/integration/oracles/YearnVaultOracle.sol index 47cce3e6d..98968cae6 100644 --- a/contracts/protocol/integration/oracles/YearnVaultOracle.sol +++ b/contracts/protocol/integration/oracles/YearnVaultOracle.sol @@ -18,7 +18,7 @@ pragma solidity 0.6.10; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; import { PreciseUnitMath } from "../../../lib/PreciseUnitMath.sol"; import { IYearnVault } from "../../../interfaces/external/IYearnVault.sol"; diff --git a/contracts/protocol/integration/wrap/AxieInfinityMigrationWrapAdapter.sol b/contracts/protocol/integration/wrap/AxieInfinityMigrationWrapAdapter.sol index 17b152b60..a99aef70d 100644 --- a/contracts/protocol/integration/wrap/AxieInfinityMigrationWrapAdapter.sol +++ b/contracts/protocol/integration/wrap/AxieInfinityMigrationWrapAdapter.sol @@ -18,8 +18,8 @@ pragma solidity 0.6.10; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/SafeERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { SafeERC20 } from "@openzeppelin/token/ERC20/SafeERC20.sol"; interface ITokenSwap { function swapToken() external; diff --git a/contracts/protocol/lib/Invoke.sol b/contracts/protocol/lib/Invoke.sol index 4c8712dc6..4b8898500 100644 --- a/contracts/protocol/lib/Invoke.sol +++ b/contracts/protocol/lib/Invoke.sol @@ -18,8 +18,8 @@ pragma solidity 0.6.10; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; import { ISetToken } from "../../interfaces/ISetToken.sol"; diff --git a/contracts/protocol/lib/IssuanceValidationUtils.sol b/contracts/protocol/lib/IssuanceValidationUtils.sol index 0333a908a..07f3a89b4 100644 --- a/contracts/protocol/lib/IssuanceValidationUtils.sol +++ b/contracts/protocol/lib/IssuanceValidationUtils.sol @@ -18,9 +18,9 @@ pragma solidity 0.6.10; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { SafeCast } from "@openzeppelin/contracts/utils/SafeCast.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { SafeCast } from "@openzeppelin/utils/SafeCast.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; import { ISetToken } from "../../interfaces/ISetToken.sol"; import { PreciseUnitMath } from "../../lib/PreciseUnitMath.sol"; diff --git a/contracts/protocol/lib/ModuleBase.sol b/contracts/protocol/lib/ModuleBase.sol index f62ec64a5..9e604a43a 100644 --- a/contracts/protocol/lib/ModuleBase.sol +++ b/contracts/protocol/lib/ModuleBase.sol @@ -18,7 +18,7 @@ pragma solidity 0.6.10; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; import { AddressArrayUtils } from "../../lib/AddressArrayUtils.sol"; import { ExplicitERC20 } from "../../lib/ExplicitERC20.sol"; @@ -29,9 +29,9 @@ import { Invoke } from "./Invoke.sol"; import { Position } from "./Position.sol"; import { PreciseUnitMath } from "../../lib/PreciseUnitMath.sol"; import { ResourceIdentifier } from "./ResourceIdentifier.sol"; -import { SafeCast } from "@openzeppelin/contracts/utils/SafeCast.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; -import { SignedSafeMath } from "@openzeppelin/contracts/math/SignedSafeMath.sol"; +import { SafeCast } from "@openzeppelin/utils/SafeCast.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; +import { SignedSafeMath } from "@openzeppelin/math/SignedSafeMath.sol"; /** * @title ModuleBase diff --git a/contracts/protocol/lib/Position.sol b/contracts/protocol/lib/Position.sol index e46e4b56c..872ad75ef 100644 --- a/contracts/protocol/lib/Position.sol +++ b/contracts/protocol/lib/Position.sol @@ -19,10 +19,10 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { SafeCast } from "@openzeppelin/contracts/utils/SafeCast.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; -import { SignedSafeMath } from "@openzeppelin/contracts/math/SignedSafeMath.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { SafeCast } from "@openzeppelin/utils/SafeCast.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; +import { SignedSafeMath } from "@openzeppelin/math/SignedSafeMath.sol"; import { ISetToken } from "../../interfaces/ISetToken.sol"; import { PreciseUnitMath } from "../../lib/PreciseUnitMath.sol"; diff --git a/contracts/protocol/lib/SetTokenAccessible.sol b/contracts/protocol/lib/SetTokenAccessible.sol index 8b5c9dd87..5531ee33c 100644 --- a/contracts/protocol/lib/SetTokenAccessible.sol +++ b/contracts/protocol/lib/SetTokenAccessible.sol @@ -18,7 +18,7 @@ pragma solidity 0.6.10; -import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; +import { Ownable } from "@openzeppelin/access/Ownable.sol"; import { IController } from "../../interfaces/IController.sol"; import { ISetToken } from "../../interfaces/ISetToken.sol"; diff --git a/contracts/protocol/modules/AaveLeverageModule.sol b/contracts/protocol/modules/AaveLeverageModule.sol index 80d72c246..13414b078 100644 --- a/contracts/protocol/modules/AaveLeverageModule.sol +++ b/contracts/protocol/modules/AaveLeverageModule.sol @@ -19,9 +19,9 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; -import { ReentrancyGuard } from "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { Ownable } from "@openzeppelin/access/Ownable.sol"; +import { ReentrancyGuard } from "@openzeppelin/utils/ReentrancyGuard.sol"; import { AaveV2 } from "../integration/lib/AaveV2.sol"; import { IAToken } from "../../interfaces/external/aave-v2/IAToken.sol"; diff --git a/contracts/protocol/modules/AirdropModule.sol b/contracts/protocol/modules/AirdropModule.sol index 4d6e7a3fd..783ec2c91 100644 --- a/contracts/protocol/modules/AirdropModule.sol +++ b/contracts/protocol/modules/AirdropModule.sol @@ -19,10 +19,10 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { ReentrancyGuard } from "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; -import { SafeCast } from "@openzeppelin/contracts/utils/SafeCast.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { ReentrancyGuard } from "@openzeppelin/utils/ReentrancyGuard.sol"; +import { SafeCast } from "@openzeppelin/utils/SafeCast.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; import { AddressArrayUtils } from "../../lib/AddressArrayUtils.sol"; import { IController } from "../../interfaces/IController.sol"; diff --git a/contracts/protocol/modules/AmmModule.sol b/contracts/protocol/modules/AmmModule.sol index d8a943d65..80d6b2f45 100644 --- a/contracts/protocol/modules/AmmModule.sol +++ b/contracts/protocol/modules/AmmModule.sol @@ -19,11 +19,11 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { ReentrancyGuard } from "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; -import { SafeCast } from "@openzeppelin/contracts/utils/SafeCast.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; -import { SignedSafeMath } from "@openzeppelin/contracts/math/SignedSafeMath.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { ReentrancyGuard } from "@openzeppelin/utils/ReentrancyGuard.sol"; +import { SafeCast } from "@openzeppelin/utils/SafeCast.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; +import { SignedSafeMath } from "@openzeppelin/math/SignedSafeMath.sol"; import { IController } from "../../interfaces/IController.sol"; import { IIntegrationRegistry } from "../../interfaces/IIntegrationRegistry.sol"; diff --git a/contracts/protocol/modules/BasicIssuanceModule.sol b/contracts/protocol/modules/BasicIssuanceModule.sol index 57707c053..476614558 100644 --- a/contracts/protocol/modules/BasicIssuanceModule.sol +++ b/contracts/protocol/modules/BasicIssuanceModule.sol @@ -15,10 +15,10 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { ReentrancyGuard } from "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; -import { SafeCast } from "@openzeppelin/contracts/utils/SafeCast.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { ReentrancyGuard } from "@openzeppelin/utils/ReentrancyGuard.sol"; +import { SafeCast } from "@openzeppelin/utils/SafeCast.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; import { IController } from "../../interfaces/IController.sol"; import { IManagerIssuanceHook } from "../../interfaces/IManagerIssuanceHook.sol"; diff --git a/contracts/protocol/modules/ClaimModule.sol b/contracts/protocol/modules/ClaimModule.sol index 67dbf5134..6845a7a85 100644 --- a/contracts/protocol/modules/ClaimModule.sol +++ b/contracts/protocol/modules/ClaimModule.sol @@ -15,7 +15,7 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; import { AddressArrayUtils } from "../../lib/AddressArrayUtils.sol"; import { IClaimAdapter } from "../../interfaces/IClaimAdapter.sol"; diff --git a/contracts/protocol/modules/CompoundLeverageModule.sol b/contracts/protocol/modules/CompoundLeverageModule.sol index e86b23859..c7d763671 100644 --- a/contracts/protocol/modules/CompoundLeverageModule.sol +++ b/contracts/protocol/modules/CompoundLeverageModule.sol @@ -19,9 +19,9 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; -import { ReentrancyGuard } from "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { Ownable } from "@openzeppelin/access/Ownable.sol"; +import { ReentrancyGuard } from "@openzeppelin/utils/ReentrancyGuard.sol"; import { Compound } from "../integration/lib/Compound.sol"; import { ICErc20 } from "../../interfaces/external/ICErc20.sol"; diff --git a/contracts/protocol/modules/CustomOracleNAVIssuanceModule.sol b/contracts/protocol/modules/CustomOracleNAVIssuanceModule.sol index 571dc2b57..6be591f34 100644 --- a/contracts/protocol/modules/CustomOracleNAVIssuanceModule.sol +++ b/contracts/protocol/modules/CustomOracleNAVIssuanceModule.sol @@ -19,12 +19,12 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { ReentrancyGuard } from "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; -import { SafeCast } from "@openzeppelin/contracts/utils/SafeCast.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; -import { SignedSafeMath } from "@openzeppelin/contracts/math/SignedSafeMath.sol"; +import { ERC20 } from "@openzeppelin/token/ERC20/ERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { ReentrancyGuard } from "@openzeppelin/utils/ReentrancyGuard.sol"; +import { SafeCast } from "@openzeppelin/utils/SafeCast.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; +import { SignedSafeMath } from "@openzeppelin/math/SignedSafeMath.sol"; import { AddressArrayUtils } from "../../lib/AddressArrayUtils.sol"; import { IController } from "../../interfaces/IController.sol"; diff --git a/contracts/protocol/modules/DebtIssuanceModule.sol b/contracts/protocol/modules/DebtIssuanceModule.sol index 8cf1814b2..04b0d1a09 100644 --- a/contracts/protocol/modules/DebtIssuanceModule.sol +++ b/contracts/protocol/modules/DebtIssuanceModule.sol @@ -19,11 +19,11 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { ReentrancyGuard } from "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; -import { SafeCast } from "@openzeppelin/contracts/utils/SafeCast.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; -import { SignedSafeMath } from "@openzeppelin/contracts/math/SignedSafeMath.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { ReentrancyGuard } from "@openzeppelin/utils/ReentrancyGuard.sol"; +import { SafeCast } from "@openzeppelin/utils/SafeCast.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; +import { SignedSafeMath } from "@openzeppelin/math/SignedSafeMath.sol"; import { AddressArrayUtils } from "../../lib/AddressArrayUtils.sol"; import { IController } from "../../interfaces/IController.sol"; diff --git a/contracts/protocol/modules/DebtIssuanceModuleV2.sol b/contracts/protocol/modules/DebtIssuanceModuleV2.sol index c857d4d52..d5dfa88ed 100644 --- a/contracts/protocol/modules/DebtIssuanceModuleV2.sol +++ b/contracts/protocol/modules/DebtIssuanceModuleV2.sol @@ -19,8 +19,8 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/SafeERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { SafeERC20 } from "@openzeppelin/token/ERC20/SafeERC20.sol"; import { DebtIssuanceModule } from "./DebtIssuanceModule.sol"; import { IController } from "../../interfaces/IController.sol"; diff --git a/contracts/protocol/modules/GeneralIndexModule.sol b/contracts/protocol/modules/GeneralIndexModule.sol index f73b7abdd..932a08465 100644 --- a/contracts/protocol/modules/GeneralIndexModule.sol +++ b/contracts/protocol/modules/GeneralIndexModule.sol @@ -19,11 +19,11 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { Math } from "@openzeppelin/contracts/math/Math.sol"; -import { ReentrancyGuard } from "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; -import { SafeCast } from "@openzeppelin/contracts/utils/SafeCast.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { Math } from "@openzeppelin/math/Math.sol"; +import { ReentrancyGuard } from "@openzeppelin/utils/ReentrancyGuard.sol"; +import { SafeCast } from "@openzeppelin/utils/SafeCast.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; import { AddressArrayUtils } from "../../lib/AddressArrayUtils.sol"; import { IController } from "../../interfaces/IController.sol"; diff --git a/contracts/protocol/modules/GovernanceModule.sol b/contracts/protocol/modules/GovernanceModule.sol index 151d69dd6..7c2894ef6 100644 --- a/contracts/protocol/modules/GovernanceModule.sol +++ b/contracts/protocol/modules/GovernanceModule.sol @@ -19,7 +19,7 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { ReentrancyGuard } from "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; +import { ReentrancyGuard } from "@openzeppelin/utils/ReentrancyGuard.sol"; import { IController } from "../../interfaces/IController.sol"; import { IGovernanceAdapter } from "../../interfaces/IGovernanceAdapter.sol"; diff --git a/contracts/protocol/modules/IssuanceModule.sol b/contracts/protocol/modules/IssuanceModule.sol index bc14560e6..057a59067 100644 --- a/contracts/protocol/modules/IssuanceModule.sol +++ b/contracts/protocol/modules/IssuanceModule.sol @@ -19,11 +19,11 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { ReentrancyGuard } from "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; -import { SafeCast } from "@openzeppelin/contracts/utils/SafeCast.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; -import { SignedSafeMath } from "@openzeppelin/contracts/math/SignedSafeMath.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { ReentrancyGuard } from "@openzeppelin/utils/ReentrancyGuard.sol"; +import { SafeCast } from "@openzeppelin/utils/SafeCast.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; +import { SignedSafeMath } from "@openzeppelin/math/SignedSafeMath.sol"; import { IController } from "../../interfaces/IController.sol"; import { IManagerIssuanceHook } from "../../interfaces/IManagerIssuanceHook.sol"; diff --git a/contracts/protocol/modules/NAVIssuanceModule.sol b/contracts/protocol/modules/NAVIssuanceModule.sol index 4950bf56e..6eb734af4 100644 --- a/contracts/protocol/modules/NAVIssuanceModule.sol +++ b/contracts/protocol/modules/NAVIssuanceModule.sol @@ -19,12 +19,12 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { ReentrancyGuard } from "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; -import { SafeCast } from "@openzeppelin/contracts/utils/SafeCast.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; -import { SignedSafeMath } from "@openzeppelin/contracts/math/SignedSafeMath.sol"; +import { ERC20 } from "@openzeppelin/token/ERC20/ERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { ReentrancyGuard } from "@openzeppelin/utils/ReentrancyGuard.sol"; +import { SafeCast } from "@openzeppelin/utils/SafeCast.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; +import { SignedSafeMath } from "@openzeppelin/math/SignedSafeMath.sol"; import { AddressArrayUtils } from "../../lib/AddressArrayUtils.sol"; import { IController } from "../../interfaces/IController.sol"; diff --git a/contracts/protocol/modules/PerpV2LeverageModule.sol b/contracts/protocol/modules/PerpV2LeverageModule.sol index d236c5417..0f6d72e8e 100644 --- a/contracts/protocol/modules/PerpV2LeverageModule.sol +++ b/contracts/protocol/modules/PerpV2LeverageModule.sol @@ -19,11 +19,11 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import "@openzeppelin/contracts/math/SignedSafeMath.sol"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; -import { ReentrancyGuard } from "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; +import "@openzeppelin/math/SignedSafeMath.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { ERC20 } from "@openzeppelin/token/ERC20/ERC20.sol"; +import { Ownable } from "@openzeppelin/access/Ownable.sol"; +import { ReentrancyGuard } from "@openzeppelin/utils/ReentrancyGuard.sol"; import { IUniswapV3Pool } from "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol"; import { PerpV2 } from "../integration/lib/PerpV2.sol"; diff --git a/contracts/protocol/modules/SingleIndexModule.sol b/contracts/protocol/modules/SingleIndexModule.sol index 789998393..bf79bf55b 100644 --- a/contracts/protocol/modules/SingleIndexModule.sol +++ b/contracts/protocol/modules/SingleIndexModule.sol @@ -19,11 +19,11 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { Math } from "@openzeppelin/contracts/math/Math.sol"; -import { ReentrancyGuard } from "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; -import { SafeCast } from "@openzeppelin/contracts/utils/SafeCast.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { Math } from "@openzeppelin/math/Math.sol"; +import { ReentrancyGuard } from "@openzeppelin/utils/ReentrancyGuard.sol"; +import { SafeCast } from "@openzeppelin/utils/SafeCast.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; import { AddressArrayUtils } from "../../lib/AddressArrayUtils.sol"; import { IController } from "../../interfaces/IController.sol"; diff --git a/contracts/protocol/modules/StakingModule.sol b/contracts/protocol/modules/StakingModule.sol index f9723a23b..f9a03ed13 100644 --- a/contracts/protocol/modules/StakingModule.sol +++ b/contracts/protocol/modules/StakingModule.sol @@ -19,10 +19,10 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { SafeCast } from "@openzeppelin/contracts/utils/SafeCast.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; -import { SignedSafeMath } from "@openzeppelin/contracts/math/SignedSafeMath.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { SafeCast } from "@openzeppelin/utils/SafeCast.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; +import { SignedSafeMath } from "@openzeppelin/math/SignedSafeMath.sol"; import { AddressArrayUtils } from "../../lib/AddressArrayUtils.sol"; import { IController } from "../../interfaces/IController.sol"; diff --git a/contracts/protocol/modules/StreamingFeeModule.sol b/contracts/protocol/modules/StreamingFeeModule.sol index 0acb0b876..87c0b9c50 100644 --- a/contracts/protocol/modules/StreamingFeeModule.sol +++ b/contracts/protocol/modules/StreamingFeeModule.sol @@ -19,10 +19,10 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { ReentrancyGuard } from "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; -import { SafeCast } from "@openzeppelin/contracts/utils/SafeCast.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; -import { SignedSafeMath } from "@openzeppelin/contracts/math/SignedSafeMath.sol"; +import { ReentrancyGuard } from "@openzeppelin/utils/ReentrancyGuard.sol"; +import { SafeCast } from "@openzeppelin/utils/SafeCast.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; +import { SignedSafeMath } from "@openzeppelin/math/SignedSafeMath.sol"; import { IController } from "../../interfaces/IController.sol"; import { ISetToken } from "../../interfaces/ISetToken.sol"; diff --git a/contracts/protocol/modules/TradeModule.sol b/contracts/protocol/modules/TradeModule.sol index de8312033..967c92b65 100644 --- a/contracts/protocol/modules/TradeModule.sol +++ b/contracts/protocol/modules/TradeModule.sol @@ -19,12 +19,12 @@ pragma solidity ^0.6.10; pragma experimental "ABIEncoderV2"; -import { ReentrancyGuard } from "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; -import { SafeCast } from "@openzeppelin/contracts/utils/SafeCast.sol"; +import { ReentrancyGuard } from "@openzeppelin/utils/ReentrancyGuard.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; +import { SafeCast } from "@openzeppelin/utils/SafeCast.sol"; import { IController } from "../../interfaces/IController.sol"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; import { IExchangeAdapter } from "../../interfaces/IExchangeAdapter.sol"; import { IIntegrationRegistry } from "../../interfaces/IIntegrationRegistry.sol"; import { Invoke } from "../lib/Invoke.sol"; diff --git a/contracts/protocol/modules/WrapModule.sol b/contracts/protocol/modules/WrapModule.sol index 2d842ac10..128268ee8 100644 --- a/contracts/protocol/modules/WrapModule.sol +++ b/contracts/protocol/modules/WrapModule.sol @@ -19,10 +19,10 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { ReentrancyGuard } from "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; -import { SafeCast } from "@openzeppelin/contracts/utils/SafeCast.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { ReentrancyGuard } from "@openzeppelin/utils/ReentrancyGuard.sol"; +import { SafeCast } from "@openzeppelin/utils/SafeCast.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; import { IController } from "../../interfaces/IController.sol"; import { IIntegrationRegistry } from "../../interfaces/IIntegrationRegistry.sol"; diff --git a/contracts/protocol/modules/WrapModuleV2.sol b/contracts/protocol/modules/WrapModuleV2.sol index bfee1c525..1e414deef 100644 --- a/contracts/protocol/modules/WrapModuleV2.sol +++ b/contracts/protocol/modules/WrapModuleV2.sol @@ -19,10 +19,10 @@ pragma solidity 0.6.10; pragma experimental "ABIEncoderV2"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { ReentrancyGuard } from "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; -import { SafeCast } from "@openzeppelin/contracts/utils/SafeCast.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; +import { IERC20 } from "@openzeppelin/token/ERC20/IERC20.sol"; +import { ReentrancyGuard } from "@openzeppelin/utils/ReentrancyGuard.sol"; +import { SafeCast } from "@openzeppelin/utils/SafeCast.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; import { IController } from "../../interfaces/IController.sol"; import { IIntegrationRegistry } from "../../interfaces/IIntegrationRegistry.sol"; diff --git a/external/contracts/aave/v1/AavePropositionPower.sol b/external/contracts/aave/v1/AavePropositionPower.sol index 5fb7632ad..e75607048 100644 --- a/external/contracts/aave/v1/AavePropositionPower.sol +++ b/external/contracts/aave/v1/AavePropositionPower.sol @@ -1,7 +1,7 @@ pragma solidity ^0.5.16; -import "@openzeppelin/contracts/token/ERC20/ERC20Capped.sol"; -import "@openzeppelin/contracts/token/ERC20/ERC20Detailed.sol"; +import "@openzeppelin/token/ERC20/ERC20Capped.sol"; +import "@openzeppelin/token/ERC20/ERC20Detailed.sol"; /// @title AavePropositionPower /// @author Aave diff --git a/external/contracts/aave/v1/AaveProtoGovernance.sol b/external/contracts/aave/v1/AaveProtoGovernance.sol index 9def8e674..78b04c3ed 100644 --- a/external/contracts/aave/v1/AaveProtoGovernance.sol +++ b/external/contracts/aave/v1/AaveProtoGovernance.sol @@ -1,8 +1,8 @@ pragma solidity ^0.5.16; -import "@openzeppelin/contracts/math/SafeMath.sol"; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/cryptography/ECDSA.sol"; +import "@openzeppelin/math/SafeMath.sol"; +import "@openzeppelin/token/ERC20/IERC20.sol"; +import "@openzeppelin/cryptography/ECDSA.sol"; import "../interfaces/IGovernanceParamsProvider.sol"; import "../interfaces/IAssetVotingWeightProvider.sol"; diff --git a/external/contracts/aave/v1/AssetVotingWeightProvider.sol b/external/contracts/aave/v1/AssetVotingWeightProvider.sol index 2f7f62047..02cb1f512 100644 --- a/external/contracts/aave/v1/AssetVotingWeightProvider.sol +++ b/external/contracts/aave/v1/AssetVotingWeightProvider.sol @@ -1,6 +1,6 @@ pragma solidity ^0.5.16; -import "@openzeppelin/contracts/ownership/Ownable.sol"; +import "@openzeppelin/ownership/Ownable.sol"; import "../interfaces/IAssetVotingWeightProvider.sol"; diff --git a/external/contracts/aave/v1/GovernanceParamsProvider.sol b/external/contracts/aave/v1/GovernanceParamsProvider.sol index dab9996e4..f8b7d0eb3 100644 --- a/external/contracts/aave/v1/GovernanceParamsProvider.sol +++ b/external/contracts/aave/v1/GovernanceParamsProvider.sol @@ -1,6 +1,6 @@ pragma solidity ^0.5.16; -import "@openzeppelin/contracts/ownership/Ownable.sol"; +import "@openzeppelin/ownership/Ownable.sol"; import "../interfaces/IGovernanceParamsProvider.sol"; contract GovernanceParamsProvider is Ownable, IGovernanceParamsProvider { diff --git a/external/contracts/balancer/BRegistry.sol b/external/contracts/balancer/BRegistry.sol index d4d998396..b23fc549b 100644 --- a/external/contracts/balancer/BRegistry.sol +++ b/external/contracts/balancer/BRegistry.sol @@ -1,8 +1,8 @@ pragma solidity 0.5.12; -import "@openzeppelin/contracts/math/Math.sol"; -import "@openzeppelin/contracts/math/SafeMath.sol"; -import "@openzeppelin/contracts/utils/EnumerableSet.sol"; +import "@openzeppelin/math/Math.sol"; +import "@openzeppelin/math/SafeMath.sol"; +import "@openzeppelin/utils/EnumerableSet.sol"; interface IBPool { function getDenormalizedWeight(address token) external view returns(uint256); diff --git a/external/contracts/balancer/ExchangeProxy.sol b/external/contracts/balancer/ExchangeProxy.sol index 2494f4370..d541b8b97 100644 --- a/external/contracts/balancer/ExchangeProxy.sol +++ b/external/contracts/balancer/ExchangeProxy.sol @@ -14,8 +14,8 @@ pragma solidity 0.5.12; pragma experimental ABIEncoderV2; -import "@openzeppelin/contracts/math/SafeMath.sol"; -import "@openzeppelin/contracts/ownership/Ownable.sol"; +import "@openzeppelin/math/SafeMath.sol"; +import "@openzeppelin/ownership/Ownable.sol"; interface PoolInterface { function swapExactAmountIn(address, uint, address, uint, uint) external returns (uint, uint); diff --git a/external/contracts/kyber/DMMFactory.sol b/external/contracts/kyber/DMMFactory.sol index 56d3daa90..1a6636bcb 100644 --- a/external/contracts/kyber/DMMFactory.sol +++ b/external/contracts/kyber/DMMFactory.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: BUSL-1.1 pragma solidity 0.6.12; -import "@openzeppelin/contracts/utils/EnumerableSet.sol"; +import "@openzeppelin/utils/EnumerableSet.sol"; import "./interfaces/IDMMFactory.sol"; import "./DMMPool.sol"; diff --git a/external/contracts/kyber/DMMPool.sol b/external/contracts/kyber/DMMPool.sol index da257db36..d6f68daee 100644 --- a/external/contracts/kyber/DMMPool.sol +++ b/external/contracts/kyber/DMMPool.sol @@ -1,10 +1,10 @@ // SPDX-License-Identifier: BUSL-1.1 pragma solidity 0.6.12; -import "@openzeppelin/contracts/math/SafeMath.sol"; -import "@openzeppelin/contracts/math/Math.sol"; -import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; -import "@openzeppelin/contracts/token/ERC20/SafeERC20.sol"; +import "@openzeppelin/math/SafeMath.sol"; +import "@openzeppelin/math/Math.sol"; +import "@openzeppelin/utils/ReentrancyGuard.sol"; +import "@openzeppelin/token/ERC20/SafeERC20.sol"; import "./libraries/MathExt.sol"; import "./libraries/FeeFomula.sol"; diff --git a/external/contracts/kyber/KyberNetworkTokenV2.sol b/external/contracts/kyber/KyberNetworkTokenV2.sol index ce6a643c2..aaada5de0 100644 --- a/external/contracts/kyber/KyberNetworkTokenV2.sol +++ b/external/contracts/kyber/KyberNetworkTokenV2.sol @@ -1,7 +1,7 @@ pragma solidity 0.6.6; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/SafeERC20.sol"; +import "@openzeppelin/token/ERC20/IERC20.sol"; +import "@openzeppelin/token/ERC20/SafeERC20.sol"; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20BurnableUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol"; diff --git a/external/contracts/uniswap/v2/lib/UniswapV2Library.sol b/external/contracts/uniswap/v2/lib/UniswapV2Library.sol index 056216cda..0bc09c46d 100644 --- a/external/contracts/uniswap/v2/lib/UniswapV2Library.sol +++ b/external/contracts/uniswap/v2/lib/UniswapV2Library.sol @@ -3,7 +3,7 @@ pragma solidity 0.6.10; import "../../../../../contracts/interfaces/external/IUniswapV2Pair.sol"; -import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol"; +import { SafeMath } from "@openzeppelin/math/SafeMath.sol"; library UniswapV2Library { using SafeMath for uint; diff --git a/external/contracts/yearn/BaseStrategy.sol b/external/contracts/yearn/BaseStrategy.sol index bad765580..6eb59b1d7 100644 --- a/external/contracts/yearn/BaseStrategy.sol +++ b/external/contracts/yearn/BaseStrategy.sol @@ -2,9 +2,9 @@ pragma solidity >=0.6.0 <0.7.0; pragma experimental ABIEncoderV2; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/SafeERC20.sol"; -import "@openzeppelin/contracts/math/SafeMath.sol"; +import "@openzeppelin/token/ERC20/IERC20.sol"; +import "@openzeppelin/token/ERC20/SafeERC20.sol"; +import "@openzeppelin/math/SafeMath.sol"; struct StrategyParams { uint256 performanceFee; diff --git a/out/Address.sol/Address.json b/out/Address.sol/Address.json new file mode 100644 index 000000000..790ea9526 --- /dev/null +++ b/out/Address.sol/Address.json @@ -0,0 +1,5 @@ +{ + "abi": [], + "bin": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201f9d9a6bb8890bff6e6accedfe8c80ace544ab2e050e7139cb4334b8d153db8f64736f6c634300060a0033", + "bin-runtime": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201f9d9a6bb8890bff6e6accedfe8c80ace544ab2e050e7139cb4334b8d153db8f64736f6c634300060a0033" +} \ No newline at end of file diff --git a/out/AddressArrayUtils.sol/AddressArrayUtils.json b/out/AddressArrayUtils.sol/AddressArrayUtils.json new file mode 100644 index 000000000..8ec99d36f --- /dev/null +++ b/out/AddressArrayUtils.sol/AddressArrayUtils.json @@ -0,0 +1,5 @@ +{ + "abi": [], + "bin": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220deab10911411c813c8545003afa29aa6258a26ebece41e089497a21f43cbd8fd64736f6c634300060a0033", + "bin-runtime": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220deab10911411c813c8545003afa29aa6258a26ebece41e089497a21f43cbd8fd64736f6c634300060a0033" +} \ No newline at end of file diff --git a/out/Context.sol/Context.json b/out/Context.sol/Context.json new file mode 100644 index 000000000..8451cadf0 --- /dev/null +++ b/out/Context.sol/Context.json @@ -0,0 +1,5 @@ +{ + "abi": [], + "bin": "0x", + "bin-runtime": "0x" +} \ No newline at end of file diff --git a/out/ERC20.sol/ERC20.json b/out/ERC20.sol/ERC20.json new file mode 100644 index 000000000..b49309b12 --- /dev/null +++ b/out/ERC20.sol/ERC20.json @@ -0,0 +1,296 @@ +{ + "abi": [ + { + "type": "constructor", + "inputs": [ + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + } + ] + }, + { + "type": "function", + "name": "allowance", + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "approve", + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "decimals", + "inputs": [], + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "decreaseAllowance", + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "increaseAllowance", + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "symbol", + "inputs": [], + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalSupply", + "inputs": [], + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "transfer", + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true + }, + { + "name": "spender", + "type": "address", + "indexed": true + }, + { + "name": "value", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "from", + "type": "address", + "indexed": true + }, + { + "name": "to", + "type": "address", + "indexed": true + }, + { + "name": "value", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false + } + ], + "bin": "0x60806040523480156200001157600080fd5b50604051620013bb380380620013bb833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b506040525050508160039080519060200190620001cd9291906200020b565b508060049080519060200190620001e69291906200020b565b506012600560006101000a81548160ff021916908360ff1602179055505050620002ba565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200024e57805160ff19168380011785556200027f565b828001600101855582156200027f579182015b828111156200027e57825182559160200191906001019062000261565b5b5090506200028e919062000292565b5090565b620002b791905b80821115620002b357600081600090555060010162000299565b5090565b90565b6110f180620002ca6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025f57806370a08231146102c557806395d89b411461031d578063a457c2d7146103a0578063a9059cbb14610406578063dd62ed3e1461046c576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019757806323b872dd146101b5578063313ce5671461023b575b600080fd5b6100b66104e4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610586565b604051808215151515815260200191505060405180910390f35b61019f6105a4565b6040518082815260200191505060405180910390f35b610221600480360360608110156101cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ae565b604051808215151515815260200191505060405180910390f35b610243610687565b604051808260ff1660ff16815260200191505060405180910390f35b6102ab6004803603604081101561027557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061069e565b604051808215151515815260200191505060405180910390f35b610307600480360360208110156102db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610751565b6040518082815260200191505060405180910390f35b610325610799565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036557808201518184015260208101905061034a565b50505050905090810190601f1680156103925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ec600480360360408110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083b565b604051808215151515815260200191505060405180910390f35b6104526004803603604081101561041c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610908565b604051808215151515815260200191505060405180910390f35b6104ce6004803603604081101561048257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610926565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600061059a6105936109ad565b84846109b5565b6001905092915050565b6000600254905090565b60006105bb848484610bac565b61067c846105c76109ad565b6106778560405180606001604052806028815260200161102660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061062d6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107476106ab6109ad565b8461074285600160006106bc6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6109b5565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108315780601f1061080657610100808354040283529160200191610831565b820191906000526020600020905b81548152906001019060200180831161081457829003601f168201915b5050505050905090565b60006108fe6108486109ad565b846108f98560405180606001604052806025815260200161109760259139600160006108726109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b6001905092915050565b600061091c6109156109ad565b8484610bac565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110736024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fde6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061104e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fbb6023913960400191505060405180910390fd5b610cc3838383610fb5565b610d2e81604051806060016040528060268152602001611000602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dc1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610edf578082015181840152602081019050610ec4565b50505050905090810190601f168015610f0c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610fab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220dc10adf7533dd3108b8bc6e231126eb1163ba5e5fbbb1bf3870430acdb037b1364736f6c634300060a0033", + "bin-runtime": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025f57806370a08231146102c557806395d89b411461031d578063a457c2d7146103a0578063a9059cbb14610406578063dd62ed3e1461046c576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019757806323b872dd146101b5578063313ce5671461023b575b600080fd5b6100b66104e4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610586565b604051808215151515815260200191505060405180910390f35b61019f6105a4565b6040518082815260200191505060405180910390f35b610221600480360360608110156101cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ae565b604051808215151515815260200191505060405180910390f35b610243610687565b604051808260ff1660ff16815260200191505060405180910390f35b6102ab6004803603604081101561027557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061069e565b604051808215151515815260200191505060405180910390f35b610307600480360360208110156102db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610751565b6040518082815260200191505060405180910390f35b610325610799565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036557808201518184015260208101905061034a565b50505050905090810190601f1680156103925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ec600480360360408110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083b565b604051808215151515815260200191505060405180910390f35b6104526004803603604081101561041c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610908565b604051808215151515815260200191505060405180910390f35b6104ce6004803603604081101561048257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610926565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600061059a6105936109ad565b84846109b5565b6001905092915050565b6000600254905090565b60006105bb848484610bac565b61067c846105c76109ad565b6106778560405180606001604052806028815260200161102660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061062d6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107476106ab6109ad565b8461074285600160006106bc6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6109b5565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108315780601f1061080657610100808354040283529160200191610831565b820191906000526020600020905b81548152906001019060200180831161081457829003601f168201915b5050505050905090565b60006108fe6108486109ad565b846108f98560405180606001604052806025815260200161109760259139600160006108726109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b6001905092915050565b600061091c6109156109ad565b8484610bac565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110736024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fde6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061104e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fbb6023913960400191505060405180910390fd5b610cc3838383610fb5565b610d2e81604051806060016040528060268152602001611000602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dc1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610edf578082015181840152602081019050610ec4565b50505050905090810190601f168015610f0c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610fab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220dc10adf7533dd3108b8bc6e231126eb1163ba5e5fbbb1bf3870430acdb037b1364736f6c634300060a0033" +} \ No newline at end of file diff --git a/out/IController.sol/IController.json b/out/IController.sol/IController.json new file mode 100644 index 000000000..84df7f53d --- /dev/null +++ b/out/IController.sol/IController.json @@ -0,0 +1,139 @@ +{ + "abi": [ + { + "type": "function", + "name": "addSet", + "inputs": [ + { + "internalType": "address", + "name": "_setToken", + "type": "address" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "feeRecipient", + "inputs": [], + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "getModuleFee", + "inputs": [ + { + "internalType": "address", + "name": "_module", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_feeType", + "type": "uint256" + } + ], + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "isModule", + "inputs": [ + { + "internalType": "address", + "name": "_module", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "isSet", + "inputs": [ + { + "internalType": "address", + "name": "_setToken", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "isSystemContract", + "inputs": [ + { + "internalType": "address", + "name": "_contractAddress", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "resourceId", + "inputs": [ + { + "internalType": "uint256", + "name": "_id", + "type": "uint256" + } + ], + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "constant": false, + "stateMutability": "view" + } + ], + "bin": "0x", + "bin-runtime": "0x" +} \ No newline at end of file diff --git a/out/IERC20.sol/IERC20.json b/out/IERC20.sol/IERC20.json new file mode 100644 index 000000000..6958925d5 --- /dev/null +++ b/out/IERC20.sol/IERC20.json @@ -0,0 +1,189 @@ +{ + "abi": [ + { + "type": "function", + "name": "allowance", + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "approve", + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalSupply", + "inputs": [], + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "transfer", + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true + }, + { + "name": "spender", + "type": "address", + "indexed": true + }, + { + "name": "value", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "from", + "type": "address", + "indexed": true + }, + { + "name": "to", + "type": "address", + "indexed": true + }, + { + "name": "value", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false + } + ], + "bin": "0x", + "bin-runtime": "0x" +} \ No newline at end of file diff --git a/out/IModule.sol/IModule.json b/out/IModule.sol/IModule.json new file mode 100644 index 000000000..47eae2edf --- /dev/null +++ b/out/IModule.sol/IModule.json @@ -0,0 +1,14 @@ +{ + "abi": [ + { + "type": "function", + "name": "removeModule", + "inputs": [], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + } + ], + "bin": "0x", + "bin-runtime": "0x" +} \ No newline at end of file diff --git a/out/ISetToken.sol/ISetToken.json b/out/ISetToken.sol/ISetToken.json new file mode 100644 index 000000000..c3a418fb1 --- /dev/null +++ b/out/ISetToken.sol/ISetToken.json @@ -0,0 +1,786 @@ +{ + "abi": [ + { + "type": "function", + "name": "addComponent", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "addExternalPositionModule", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + }, + { + "internalType": "address", + "name": "_positionModule", + "type": "address" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "addModule", + "inputs": [ + { + "internalType": "address", + "name": "_module", + "type": "address" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "allowance", + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "approve", + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "burn", + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_quantity", + "type": "uint256" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "editDefaultPositionUnit", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + }, + { + "internalType": "int256", + "name": "_realUnit", + "type": "int256" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "editExternalPositionData", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + }, + { + "internalType": "address", + "name": "_positionModule", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "editExternalPositionUnit", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + }, + { + "internalType": "address", + "name": "_positionModule", + "type": "address" + }, + { + "internalType": "int256", + "name": "_realUnit", + "type": "int256" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "editPositionMultiplier", + "inputs": [ + { + "internalType": "int256", + "name": "_newMultiplier", + "type": "int256" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getComponents", + "inputs": [], + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "getDefaultPositionRealUnit", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "getExternalPositionData", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + }, + { + "internalType": "address", + "name": "_positionModule", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "getExternalPositionModules", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "getExternalPositionRealUnit", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + }, + { + "internalType": "address", + "name": "_positionModule", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "getModules", + "inputs": [], + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "getPositions", + "inputs": [], + "outputs": [ + { + "internalType": "struct ISetToken.Position[]", + "name": "", + "type": "tuple[]", + "components": [ + { + "type": "address" + }, + { + "type": "address" + }, + { + "type": "int256" + }, + { + "type": "uint8" + }, + { + "type": "bytes" + } + ] + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "getTotalComponentRealUnits", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "initializeModule", + "inputs": [], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "invoke", + "inputs": [ + { + "internalType": "address", + "name": "_target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isComponent", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "isExternalPositionModule", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + }, + { + "internalType": "address", + "name": "_module", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "isInitializedModule", + "inputs": [ + { + "internalType": "address", + "name": "_module", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "isLocked", + "inputs": [], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "isPendingModule", + "inputs": [ + { + "internalType": "address", + "name": "_module", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "lock", + "inputs": [], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "manager", + "inputs": [], + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "mint", + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_quantity", + "type": "uint256" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "moduleStates", + "inputs": [ + { + "internalType": "address", + "name": "_module", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "enum ISetToken.ModuleState", + "name": "", + "type": "uint8" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "positionMultiplier", + "inputs": [], + "outputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "removeComponent", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "removeExternalPositionModule", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + }, + { + "internalType": "address", + "name": "_positionModule", + "type": "address" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "removeModule", + "inputs": [ + { + "internalType": "address", + "name": "_module", + "type": "address" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setManager", + "inputs": [ + { + "internalType": "address", + "name": "_manager", + "type": "address" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "totalSupply", + "inputs": [], + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "transfer", + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "unlock", + "inputs": [], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true + }, + { + "name": "spender", + "type": "address", + "indexed": true + }, + { + "name": "value", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "from", + "type": "address", + "indexed": true + }, + { + "name": "to", + "type": "address", + "indexed": true + }, + { + "name": "value", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false + } + ], + "bin": "0x", + "bin-runtime": "0x" +} \ No newline at end of file diff --git a/out/Position.sol/Position.json b/out/Position.sol/Position.json new file mode 100644 index 000000000..0d158b1c7 --- /dev/null +++ b/out/Position.sol/Position.json @@ -0,0 +1,5 @@ +{ + "abi": [], + "bin": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122053d0401ca180917a84cae30292b48e20851515c841d0f1b7371461810bbb041f64736f6c634300060a0033", + "bin-runtime": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122053d0401ca180917a84cae30292b48e20851515c841d0f1b7371461810bbb041f64736f6c634300060a0033" +} \ No newline at end of file diff --git a/out/PreciseUnitMath.sol/PreciseUnitMath.json b/out/PreciseUnitMath.sol/PreciseUnitMath.json new file mode 100644 index 000000000..a0d339349 --- /dev/null +++ b/out/PreciseUnitMath.sol/PreciseUnitMath.json @@ -0,0 +1,5 @@ +{ + "abi": [], + "bin": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201c55e19d40f792e7682ff117d2eab409c4222cfba1839196818cfd1d8573635564736f6c634300060a0033", + "bin-runtime": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201c55e19d40f792e7682ff117d2eab409c4222cfba1839196818cfd1d8573635564736f6c634300060a0033" +} \ No newline at end of file diff --git a/out/SafeCast.sol/SafeCast.json b/out/SafeCast.sol/SafeCast.json new file mode 100644 index 000000000..c1535011e --- /dev/null +++ b/out/SafeCast.sol/SafeCast.json @@ -0,0 +1,5 @@ +{ + "abi": [], + "bin": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203cc38690cadf3f30717ebf2feb1a9c678f4b39f9a2b4cf0fe9615eec9856512364736f6c634300060a0033", + "bin-runtime": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203cc38690cadf3f30717ebf2feb1a9c678f4b39f9a2b4cf0fe9615eec9856512364736f6c634300060a0033" +} \ No newline at end of file diff --git a/out/SafeMath.sol/SafeMath.json b/out/SafeMath.sol/SafeMath.json new file mode 100644 index 000000000..07128f7f7 --- /dev/null +++ b/out/SafeMath.sol/SafeMath.json @@ -0,0 +1,5 @@ +{ + "abi": [], + "bin": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f83964b73acb6cfde0db836caab3ecf4b29f3111240cfdc558ab93a49266e25764736f6c634300060a0033", + "bin-runtime": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f83964b73acb6cfde0db836caab3ecf4b29f3111240cfdc558ab93a49266e25764736f6c634300060a0033" +} \ No newline at end of file diff --git a/out/SetToken.sol/SetToken.json b/out/SetToken.sol/SetToken.json new file mode 100644 index 000000000..c943f0b7f --- /dev/null +++ b/out/SetToken.sol/SetToken.json @@ -0,0 +1,1226 @@ +{ + "abi": [ + { + "type": "constructor", + "inputs": [ + { + "internalType": "address[]", + "name": "_components", + "type": "address[]" + }, + { + "internalType": "int256[]", + "name": "_units", + "type": "int256[]" + }, + { + "internalType": "address[]", + "name": "_modules", + "type": "address[]" + }, + { + "internalType": "contract IController", + "name": "_controller", + "type": "address" + }, + { + "internalType": "address", + "name": "_manager", + "type": "address" + }, + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + } + ] + }, + { + "type": "function", + "name": "addComponent", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "addExternalPositionModule", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + }, + { + "internalType": "address", + "name": "_positionModule", + "type": "address" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "addModule", + "inputs": [ + { + "internalType": "address", + "name": "_module", + "type": "address" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "allowance", + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "approve", + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "burn", + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_quantity", + "type": "uint256" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "components", + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "controller", + "inputs": [], + "outputs": [ + { + "internalType": "contract IController", + "name": "", + "type": "address" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "decimals", + "inputs": [], + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "decreaseAllowance", + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "editDefaultPositionUnit", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + }, + { + "internalType": "int256", + "name": "_realUnit", + "type": "int256" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "editExternalPositionData", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + }, + { + "internalType": "address", + "name": "_positionModule", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "editExternalPositionUnit", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + }, + { + "internalType": "address", + "name": "_positionModule", + "type": "address" + }, + { + "internalType": "int256", + "name": "_realUnit", + "type": "int256" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "editPositionMultiplier", + "inputs": [ + { + "internalType": "int256", + "name": "_newMultiplier", + "type": "int256" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getComponents", + "inputs": [], + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "getDefaultPositionRealUnit", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "getExternalPositionData", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + }, + { + "internalType": "address", + "name": "_positionModule", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "getExternalPositionModules", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "getExternalPositionRealUnit", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + }, + { + "internalType": "address", + "name": "_positionModule", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "getModules", + "inputs": [], + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "getPositions", + "inputs": [], + "outputs": [ + { + "internalType": "struct ISetToken.Position[]", + "name": "", + "type": "tuple[]", + "components": [ + { + "type": "address" + }, + { + "type": "address" + }, + { + "type": "int256" + }, + { + "type": "uint8" + }, + { + "type": "bytes" + } + ] + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "getTotalComponentRealUnits", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "increaseAllowance", + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "initializeModule", + "inputs": [], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "invoke", + "inputs": [ + { + "internalType": "address", + "name": "_target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "outputs": [ + { + "internalType": "bytes", + "name": "_returnValue", + "type": "bytes" + } + ], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isComponent", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "isExternalPositionModule", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + }, + { + "internalType": "address", + "name": "_module", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "isInitializedModule", + "inputs": [ + { + "internalType": "address", + "name": "_module", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "isLocked", + "inputs": [], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "isPendingModule", + "inputs": [ + { + "internalType": "address", + "name": "_module", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "lock", + "inputs": [], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "locker", + "inputs": [], + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "manager", + "inputs": [], + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "mint", + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_quantity", + "type": "uint256" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "moduleStates", + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "outputs": [ + { + "internalType": "enum ISetToken.ModuleState", + "name": "", + "type": "uint8" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "modules", + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "positionMultiplier", + "inputs": [], + "outputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "removeComponent", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "removeExternalPositionModule", + "inputs": [ + { + "internalType": "address", + "name": "_component", + "type": "address" + }, + { + "internalType": "address", + "name": "_positionModule", + "type": "address" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "removeModule", + "inputs": [ + { + "internalType": "address", + "name": "_module", + "type": "address" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "removePendingModule", + "inputs": [ + { + "internalType": "address", + "name": "_module", + "type": "address" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setManager", + "inputs": [ + { + "internalType": "address", + "name": "_manager", + "type": "address" + } + ], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "symbol", + "inputs": [], + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalSupply", + "inputs": [], + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "constant": false, + "stateMutability": "view" + }, + { + "type": "function", + "name": "transfer", + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "unlock", + "inputs": [], + "outputs": [], + "constant": false, + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true + }, + { + "name": "spender", + "type": "address", + "indexed": true + }, + { + "name": "value", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ComponentAdded", + "inputs": [ + { + "name": "_component", + "type": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ComponentRemoved", + "inputs": [ + { + "name": "_component", + "type": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "DefaultPositionUnitEdited", + "inputs": [ + { + "name": "_component", + "type": "address", + "indexed": true + }, + { + "name": "_realUnit", + "type": "int256", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ExternalPositionDataEdited", + "inputs": [ + { + "name": "_component", + "type": "address", + "indexed": true + }, + { + "name": "_positionModule", + "type": "address", + "indexed": true + }, + { + "name": "_data", + "type": "bytes", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ExternalPositionUnitEdited", + "inputs": [ + { + "name": "_component", + "type": "address", + "indexed": true + }, + { + "name": "_positionModule", + "type": "address", + "indexed": true + }, + { + "name": "_realUnit", + "type": "int256", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Invoked", + "inputs": [ + { + "name": "_target", + "type": "address", + "indexed": true + }, + { + "name": "_value", + "type": "uint256", + "indexed": true + }, + { + "name": "_data", + "type": "bytes", + "indexed": false + }, + { + "name": "_returnValue", + "type": "bytes", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ManagerEdited", + "inputs": [ + { + "name": "_newManager", + "type": "address", + "indexed": false + }, + { + "name": "_oldManager", + "type": "address", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ModuleAdded", + "inputs": [ + { + "name": "_module", + "type": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ModuleInitialized", + "inputs": [ + { + "name": "_module", + "type": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ModuleRemoved", + "inputs": [ + { + "name": "_module", + "type": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "PendingModuleRemoved", + "inputs": [ + { + "name": "_module", + "type": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "PositionModuleAdded", + "inputs": [ + { + "name": "_component", + "type": "address", + "indexed": true + }, + { + "name": "_positionModule", + "type": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "PositionModuleRemoved", + "inputs": [ + { + "name": "_component", + "type": "address", + "indexed": true + }, + { + "name": "_positionModule", + "type": "address", + "indexed": true + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "PositionMultiplierEdited", + "inputs": [ + { + "name": "_newMultiplier", + "type": "int256", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "from", + "type": "address", + "indexed": true + }, + { + "name": "to", + "type": "address", + "indexed": true + }, + { + "name": "value", + "type": "uint256", + "indexed": false + } + ], + "anonymous": false + }, + { + "type": "receive" + } + ], + "bin": "0x60806040523480156200001157600080fd5b5060405162006a5438038062006a548339818101604052810190620000379190620005be565b81818160039080519060200190620000519291906200027f565b5080600490805190602001906200006a9291906200027f565b506012600560006101000a81548160ff021916908360ff160217905550505083600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001206200026f60201b62002afb1760201c565b600d8190555086600b90805190602001906200013e92919062000306565b5060008090505b8551811015620001d3576001600960008884815181106200016257fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836002811115620001c057fe5b0217905550808060010191505062000145565b5060008090505b87518110156200026157868181518110620001f157fe5b6020026020010151600c60008a84815181106200020a57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508080600101915050620001da565b50505050505050506200086b565b6000670de0b6b3a7640000905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002c257805160ff1916838001178555620002f3565b82800160010185558215620002f3579182015b82811115620002f2578251825591602001919060010190620002d5565b5b50905062000302919062000395565b5090565b82805482825590600052602060002090810192821562000382579160200282015b82811115620003815782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000327565b5b509050620003919190620003bd565b5090565b620003ba91905b80821115620003b65760008160009055506001016200039c565b5090565b90565b6200040091905b80821115620003fc57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101620003c4565b5090565b90565b60008151905062000414816200081d565b92915050565b600082601f8301126200042c57600080fd5b8151620004436200043d8262000716565b620006e8565b915081818352602084019350602081019050838560208402820111156200046957600080fd5b60005b838110156200049d578162000482888262000403565b8452602084019350602083019250506001810190506200046c565b5050505092915050565b600082601f830112620004b957600080fd5b8151620004d0620004ca826200073f565b620006e8565b91508181835260208401935060208101905083856020840282011115620004f657600080fd5b60005b838110156200052a57816200050f88826200054b565b845260208401935060208301925050600181019050620004f9565b5050505092915050565b600081519050620005458162000837565b92915050565b6000815190506200055c8162000851565b92915050565b600082601f8301126200057457600080fd5b81516200058b620005858262000768565b620006e8565b91508082526020830160208301858383011115620005a857600080fd5b620005b5838284620007e7565b50505092915050565b600080600080600080600060e0888a031215620005da57600080fd5b600088015167ffffffffffffffff811115620005f557600080fd5b620006038a828b016200041a565b975050602088015167ffffffffffffffff8111156200062157600080fd5b6200062f8a828b01620004a7565b965050604088015167ffffffffffffffff8111156200064d57600080fd5b6200065b8a828b016200041a565b95505060606200066e8a828b0162000534565b9450506080620006818a828b0162000403565b93505060a088015167ffffffffffffffff8111156200069f57600080fd5b620006ad8a828b0162000562565b92505060c088015167ffffffffffffffff811115620006cb57600080fd5b620006d98a828b0162000562565b91505092959891949750929550565b6000604051905081810181811067ffffffffffffffff821117156200070c57600080fd5b8060405250919050565b600067ffffffffffffffff8211156200072e57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156200075757600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156200078057600080fd5b601f19601f8301169050602081019050919050565b6000620007a282620007c7565b9050919050565b6000620007b68262000795565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b8381101562000807578082015181840152602081019050620007ea565b8381111562000817576000848401525b50505050565b620008288162000795565b81146200083457600080fd5b50565b6200084281620007a9565b81146200084e57600080fd5b50565b6200085c81620007bd565b81146200086857600080fd5b50565b6161d9806200087b6000396000f3fe6080604052600436106102b25760003560e01c80638ae458da11610175578063b2494df3116100dc578063d7f1b27c11610095578063ea0ee5591161006f578063ea0ee55914610b61578063eaf993e114610b8a578063f77c479114610bc7578063f83d08ba14610bf2576102b9565b8063d7f1b27c14610aaa578063dd62ed3e14610ae7578063df5e9b2914610b24576102b9565b8063b2494df31461099c578063c2de0e9d146109c7578063c5d574fe146109f0578063c756401714610a2d578063d0ebdbe714610a56578063d7b96d4e14610a7f576102b9565b8063a457c2d71161012e578063a457c2d71461087a578063a4e2d634146108b7578063a69df4b5146108e2578063a7bdad03146108f9578063a9059cbb14610936578063acf3f07714610973576102b9565b80638ae458da146107585780638f6f03321461079557806395d89b41146107d257806399d50d5d146107fd5780639dc29fac14610828578063a063246114610851576102b9565b806340c10f191161021957806366cb8d2f116101d257806366cb8d2f146106105780636f86c8971461064d57806370a08231146106765780637d966593146106b357806380275860146106f057806381b2248a1461071b576102b9565b806340c10f1914610502578063481c6a751461052b5780634e353270146105565780635230c3961461057f57806353bae5f7146105aa57806363a90fc1146105e7576102b9565b806323b872dd1161026b57806323b872dd146103ce57806326898fe11461040b5780632ba57d1714610434578063313ce5671461045d57806335bc4e521461048857806339509351146104c5576102b9565b806306fdde03146102be578063095ea7b3146102e95780630ffe0f1e1461032657806318160ddd1461033d5780631ed86f191461036857806322ebeba414610391576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610c09565b6040516102e091906159cd565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b919061490e565b610cab565b60405161031d91906158e2565b60405180910390f35b34801561033257600080fd5b5061033b610cc9565b005b34801561034957600080fd5b50610352610ec7565b60405161035f9190615e4f565b60405180910390f35b34801561037457600080fd5b5061038f600480360381019061038a9190614763565b610ed1565b005b34801561039d57600080fd5b506103b860048036038101906103b3919061478c565b61110f565b6040516103c591906159b2565b60405180910390f35b3480156103da57600080fd5b506103f560048036038101906103f09190614883565b61112b565b60405161040291906158e2565b60405180910390f35b34801561041757600080fd5b50610432600480360381019061042d91906147c8565b611204565b005b34801561044057600080fd5b5061045b600480360381019061045691906148d2565b611313565b005b34801561046957600080fd5b506104726113ca565b60405161047f9190615e6a565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa9190614763565b6113e1565b6040516104bc9190615997565b60405180910390f35b3480156104d157600080fd5b506104ec60048036038101906104e7919061490e565b611401565b6040516104f991906158e2565b60405180910390f35b34801561050e57600080fd5b506105296004803603810190610524919061490e565b6114b4565b005b34801561053757600080fd5b506105406114d2565b60405161054d919061583f565b60405180910390f35b34801561056257600080fd5b5061057d60048036038101906105789190614763565b6114f8565b005b34801561058b57600080fd5b506105946115fa565b6040516105a191906159b2565b60405180910390f35b3480156105b657600080fd5b506105d160048036038101906105cc9190614763565b611600565b6040516105de91906158e2565b60405180910390f35b3480156105f357600080fd5b5061060e60048036038101906106099190614834565b61166f565b005b34801561061c57600080fd5b5061063760048036038101906106329190614763565b61177e565b60405161064491906159b2565b60405180910390f35b34801561065957600080fd5b50610674600480360381019061066f9190614763565b611798565b005b34801561068257600080fd5b5061069d60048036038101906106989190614763565b611802565b6040516106aa9190615e4f565b60405180910390f35b3480156106bf57600080fd5b506106da60048036038101906106d5919061478c565b61184a565b6040516106e791906158e2565b60405180910390f35b3480156106fc57600080fd5b5061070561186f565b60405161071291906158c0565b60405180910390f35b34801561072757600080fd5b50610742600480360381019061073d9190614a08565b611aa4565b60405161074f919061583f565b60405180910390f35b34801561076457600080fd5b5061077f600480360381019061077a919061478c565b611ae0565b60405161078c919061595a565b60405180910390f35b3480156107a157600080fd5b506107bc60048036038101906107b7919061494a565b611af4565b6040516107c9919061595a565b60405180910390f35b3480156107de57600080fd5b506107e7611bd5565b6040516107f491906159cd565b60405180910390f35b34801561080957600080fd5b50610812611c77565b60405161081f919061589e565b60405180910390f35b34801561083457600080fd5b5061084f600480360381019061084a919061490e565b611d05565b005b34801561085d57600080fd5b5061087860048036038101906108739190614763565b611d23565b005b34801561088657600080fd5b506108a1600480360381019061089c919061490e565b611f3a565b6040516108ae91906158e2565b60405180910390f35b3480156108c357600080fd5b506108cc612007565b6040516108d991906158e2565b60405180910390f35b3480156108ee57600080fd5b506108f761201a565b005b34801561090557600080fd5b50610920600480360381019061091b9190614763565b612143565b60405161092d919061589e565b60405180910390f35b34801561094257600080fd5b5061095d6004803603810190610958919061490e565b612155565b60405161096a91906158e2565b60405180910390f35b34801561097f57600080fd5b5061099a6004803603810190610995919061478c565b612173565b005b3480156109a857600080fd5b506109b16122cf565b6040516109be919061589e565b60405180910390f35b3480156109d357600080fd5b506109ee60048036038101906109e991906149df565b61235d565b005b3480156109fc57600080fd5b50610a176004803603810190610a129190614a08565b6123b7565b604051610a24919061583f565b60405180910390f35b348015610a3957600080fd5b50610a546004803603810190610a4f9190614763565b6123f3565b005b348015610a6257600080fd5b50610a7d6004803603810190610a789190614763565b612597565b005b348015610a8b57600080fd5b50610a94612694565b604051610aa1919061583f565b60405180910390f35b348015610ab657600080fd5b50610ad16004803603810190610acc9190614763565b6126ba565b604051610ade91906158e2565b60405180910390f35b348015610af357600080fd5b50610b0e6004803603810190610b09919061478c565b612728565b604051610b1b9190615e4f565b60405180910390f35b348015610b3057600080fd5b50610b4b6004803603810190610b469190614763565b6127af565b604051610b5891906158e2565b60405180910390f35b348015610b6d57600080fd5b50610b886004803603810190610b83919061478c565b612851565b005b348015610b9657600080fd5b50610bb16004803603810190610bac9190614763565b6129ac565b604051610bbe91906159b2565b60405180910390f35b348015610bd357600080fd5b50610bdc612a1f565b604051610be9919061597c565b60405180910390f35b348015610bfe57600080fd5b50610c07612a45565b005b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ca15780601f10610c7657610100808354040283529160200191610ca1565b820191906000526020600020905b815481529060010190602001808311610c8457829003601f168201915b5050505050905090565b6000610cbf610cb8612b0b565b8484612b13565b6001905092915050565b600a60009054906101000a900460ff1615610d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1090615d8f565b60405180910390fd5b60016002811115610d2657fe5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166002811115610d7e57fe5b14610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db590615def565b60405180910390fd5b6002600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836002811115610e1a57fe5b02179055506008339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f27b541a16df0902e262f34789782092ab25125513b8ed73608e802951771b92860405160405180910390a2565b6000600254905090565b610ed9612cde565b60006002811115610ee657fe5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166002811115610f3e57fe5b14610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7590615a6f565b60405180910390fd5b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342f6e389826040518263ffffffff1660e01b8152600401610fd9919061583f565b60206040518083038186803b158015610ff157600080fd5b505afa158015611005573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102991906149b6565b611068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105f90615c0f565b60405180910390fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360028111156110c457fe5b02179055508073ffffffffffffffffffffffffffffffffffffffff167fead6a006345da1073a106d5f32372d2d2204f46cb0b4bca8f5ebafcbbed12b8a60405160405180910390a250565b600061112361111e8484612d70565b612dfd565b905092915050565b6000611138848484612e1b565b6111f984611144612b0b565b6111f48560405180606001604052806028815260200161615760289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111aa612b0b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130b09092919063ffffffff16565b612b13565b600190509392505050565b61120c61310b565b61121461329b565b8181600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010191906112a592919061457a565b508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fb373eedb8e9038a2dcba31f06b2735887c1a904125e5c9f0021ba41ed972318e84846040516113059291906158fd565b60405180910390a350505050565b61131b61310b565b61132361329b565b600061132e82613343565b905080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508273ffffffffffffffffffffffffffffffffffffffff167f8133e2bf34edab764b55c59d1d41f9df637e7c22828bb6b0a9d55b429d008a97836040516113bd91906159b2565b60405180910390a2505050565b6000600560009054906101000a900460ff16905090565b60096020528060005260406000206000915054906101000a900460ff1681565b60006114aa61140e612b0b565b846114a5856001600061141f612b0b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340e90919063ffffffff16565b612b13565b6001905092915050565b6114bc61310b565b6114c461329b565b6114ce8282613463565b5050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61150061310b565b61150861329b565b611511816127af565b15611551576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154890615bcf565b60405180910390fd5b600b819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f76da6cf8b40dd2b2c223a5956831e0ff4e75522538a86782108a0bbe1577e29860405160405180910390a250565b600d5481565b60006001600281111561160f57fe5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600281111561166757fe5b149050919050565b61167761310b565b61167f61329b565b600061168a82613343565b905080600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f81a422e27f503e1b92cdb616a6e653aac10a8e0c3fa6832a58dc616c080fd7bd8460405161177091906159b2565b60405180910390a350505050565b600061179161178c836135f7565b612dfd565b9050919050565b6117a061310b565b6117a861329b565b6117bc81600b61364390919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fc605d0bf97f9b921340106a2e59f9428d5eb9039b16866159e0cdd2bf8e963df60405160405180910390a250565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061186782611859856137fe565b6138ce90919063ffffffff16565b905092915050565b60608061187a6138e8565b67ffffffffffffffff8111801561189057600080fd5b506040519080825280602002602001820160405280156118ca57816020015b6118b76145fa565b8152602001906001900390816118af5790505b509050600080905060008090505b600b80549050811015611a9b576000600b82815481106118f457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600061192c826135f7565b13156119c1576040518060a001604052808273ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200161197f8361177e565b8152602001600060ff168152602001604051806020016040528060008152508152508484815181106119ad57fe5b602002602001018190525082806001019350505b60606119cc826137fe565b905060008090505b8151811015611a8b5760008282815181106119eb57fe5b602002602001015190506040518060a001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001611a42868461110f565b8152602001600160ff168152602001611a5b8684613999565b815250878781518110611a6a57fe5b602002602001018190525085806001019650505080806001019150506119d4565b50505080806001019150506118d8565b50819250505090565b60088181548110611ab157fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060611aec8383613999565b905092915050565b6060611afe61310b565b611b0661329b565b611b7583838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050858773ffffffffffffffffffffffffffffffffffffffff16613abe9092919063ffffffff16565b9050838573ffffffffffffffffffffffffffffffffffffffff167f2a936dbabeaea30adc1ddad138b1958497988474bef8b09a29411f0105ab8ab2858585604051611bc293929190615921565b60405180910390a3809050949350505050565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c6d5780601f10611c4257610100808354040283529160200191611c6d565b820191906000526020600020905b815481529060010190602001808311611c5057829003601f168201915b5050505050905090565b6060600b805480602002602001604051908101604052809291908181526020018280548015611cfb57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611cb1575b5050505050905090565b611d0d61310b565b611d1561329b565b611d1f8282613aed565b5050565b611d2b612cde565b600a60009054906101000a900460ff1615611d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7290615d8f565b60405180910390fd5b600280811115611d8757fe5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166002811115611ddf57fe5b14611e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1690615b2f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663847ef08d6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e6757600080fd5b505af1158015611e7b573d6000803e3d6000fd5b505050506000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836002811115611edb57fe5b0217905550611ef481600861364390919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f0a1ee69f55c33d8467c69ca59ce2007a737a88603d75392972520bf67cb513b860405160405180910390a250565b6000611ffd611f47612b0b565b84611ff88560405180606001604052806025815260200161617f6025913960016000611f71612b0b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130b09092919063ffffffff16565b612b13565b6001905092915050565b600a60009054906101000a900460ff1681565b61202261310b565b600a60009054906101000a900460ff16612071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206890615c4f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f890615caf565b60405180910390fd5b600760006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000600a60006101000a81548160ff021916908315150217905550565b606061214e826137fe565b9050919050565b6000612169612162612b0b565b8484612e1b565b6001905092915050565b61217b61310b565b61218361329b565b6121d781600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010161364390919063ffffffff16565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600061226f9190614658565b50508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f5d0275f68d583838a7e2be68e3ef8ac2c1f9d4eeaa4b223360f4cd093a160d7560405160405180910390a35050565b6060600880548060200260200160405190810160405280929190818152602001828054801561235357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612309575b5050505050905090565b61236561310b565b61236d61329b565b61237681613c9b565b80600d819055507fc4e78b3245dc105eefced18655b978e194ff858545a1080f2888dc3b6ae8df0a816040516123ac91906159b2565b60405180910390a150565b600b81815481106123c457fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6123fb612cde565b600a60009054906101000a900460ff161561244b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244290615d8f565b60405180910390fd5b6001600281111561245857fe5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660028111156124b057fe5b146124f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e790615def565b60405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083600281111561254c57fe5b02179055508073ffffffffffffffffffffffffffffffffffffffff167fd6b18042563148f38d728c1c4d339ffd515b632d0ad2e1833b822412f3f4d87760405160405180910390a250565b61259f612cde565b600a60009054906101000a900460ff16156125ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e690615d8f565b60405180910390fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f43fcfef38622d6a5b118be09c27a6ed8cbdbfca21f0ea9245412ce8031c0423c8282604051612688929190615875565b60405180910390a15050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006002808111156126c857fe5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600281111561272057fe5b149050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061284a82600b80548060200260200160405190810160405280929190818152602001828054801561283757602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116127ed575b50505050506138ce90919063ffffffff16565b9050919050565b61285961310b565b61286161329b565b61286b828261184a565b156128ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a290615a2f565b60405180910390fd5b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167ff71324fa78e1894b364a1fc8d0535c4208f28c7b380f752afe00c8ce386023fb60405160405180910390a35050565b6000806129b88361177e565b905060606129c5846137fe565b905060008090505b8151811015612a1457612a056129f6868484815181106129e957fe5b602002602001015161110f565b84613d0090919063ffffffff16565b925080806001019150506129cd565b508192505050919050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612a4d61310b565b600a60009054906101000a900460ff1615612a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a94906159ef565b60405180910390fd5b33600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a60006101000a81548160ff021916908315150217905550565b6000670de0b6b3a7640000905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7a90615d0f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bea90615a8f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612cd19190615e4f565b60405180910390a3505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6590615daf565b60405180910390fd5b565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905092915050565b6000612e14600d5483613d7890919063ffffffff16565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8290615ccf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef290615a0f565b60405180910390fd5b612f06838383613da6565b612f7181604051806060016040528060268152602001616108602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130b09092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613004816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130a39190615e4f565b60405180910390a3505050565b60008383111582906130f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ef91906159cd565b60405180910390fd5b5060008385039050809150509392505050565b60028081111561311757fe5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600281111561316f57fe5b146131af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a690615b8f565b60405180910390fd5b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342f6e389336040518263ffffffff1660e01b815260040161320a919061585a565b60206040518083038186803b15801561322257600080fd5b505afa158015613236573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325a91906149b6565b613299576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161329090615d6f565b60405180910390fd5b565b600a60009054906101000a900460ff161561334157600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161333790615b4f565b60405180910390fd5b5b565b60008061335b600d5484613dab90919063ffffffff16565b905060008313801561336d5750600081145b156133ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133a490615bef565b60405180910390fd5b6000831380156133c5575060006133c382612dfd565b145b15613405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133fc90615acf565b60405180910390fd5b80915050919050565b600080828401905083811015613459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345090615aaf565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156134d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ca90615e0f565b60405180910390fd5b6134df60008383613da6565b6134f48160025461340e90919063ffffffff16565b60028190555061354b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135eb9190615e4f565b60405180910390a35050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000806136d5848054806020026020016040519081016040528092919081815260200182805480156136ca57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311613680575b505050505084613dd9565b9150915080613719576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371090615a4f565b60405180910390fd5b6000600185805490500390508083146137b85784818154811061373857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685848154811061376f57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b848054806137c257fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555050505050565b6060600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054806020026020016040519081016040528092919081815260200182805480156138c257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311613878575b50505050509050919050565b6000806138db8484613dd9565b9150508091505092915050565b60008060008090505b600b80549050811015613991576000600b828154811061390d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000613945826135f7565b13156139545782806001019350505b606061395f826137fe565b90506000815111156139825761397f81518561340e90919063ffffffff16565b93505b505080806001019150506138f1565b508091505090565b6060600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613ab15780601f10613a8657610100808354040283529160200191613ab1565b820191906000526020600020905b815481529060010190602001808311613a9457829003601f168201915b5050505050905092915050565b6060613ae484848460405180606001604052806029815260200161612e60299139613e83565b90509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b5490615c8f565b60405180910390fd5b613b6982600083613da6565b613bd4816040518060600160405280602281526020016160e6602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130b09092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c2b81600254613f9890919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c8f9190615e4f565b60405180910390a35050565b6000613ca5613fe2565b90506000613cbc8383613d7890919063ffffffff16565b13613cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cf390615cef565b60405180910390fd5b5050565b600080828401905060008312158015613d195750838112155b80613d2f5750600083128015613d2e57508381125b5b613d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d6590615aef565b60405180910390fd5b8091505092915050565b6000613d9e613d90838561411690919063ffffffff16565b670de0b6b3a7640000614214565b905092915050565b505050565b6000613dd1613dcb670de0b6b3a76400008561411690919063ffffffff16565b83614214565b905092915050565b60008060008451905060008090505b81811015613e52578473ffffffffffffffffffffffffffffffffffffffff16868281518110613e1357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415613e4557806001935093505050613e7c565b8080600101915050613de8565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600092509250505b9250929050565b606082471015613ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ebf90615b0f565b60405180910390fd5b613ed185614330565b613f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f0790615d2f565b60405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff168587604051613f3a9190615828565b60006040518083038185875af1925050503d8060008114613f77576040519150601f19603f3d011682016040523d82523d6000602084013e613f7c565b606091505b5091509150613f8c828286614343565b92505050949350505050565b6000613fda83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130b0565b905092915050565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905060008090505b600b80549050811015614106576000600b828154811061402a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600061406a614065836135f7565b6143aa565b905060008111801561407b57508381105b15614084578093505b606061408f836137fe565b905060008090505b81518110156140f55760008282815181106140ae57fe5b6020026020010151905060006140cc6140c78784612d70565b6143f7565b90506000811180156140dd57508781105b156140e6578097505b50508080600101915050614097565b50505050808060010191505061400e565b5061411081614423565b91505090565b600080831415614129576000905061420e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8314801561417757507f800000000000000000000000000000000000000000000000000000000000000082145b156141b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141ae90615c2f565b60405180910390fd5b60008284029050828482816141c857fe5b0514614209576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161420090615c2f565b60405180910390fd5b809150505b92915050565b600080821415614259576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161425090615e2f565b60405180910390fd5b7f8000000000000000000000000000000000000000000000000000000000000000831415806142a857507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214155b6142e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142de90615c6f565b60405180910390fd5b60006142fc838561448f90919063ffffffff16565b9050600083851812801561431a5750600083858161431657fe5b0714155b15614326576001810390505b8091505092915050565b600080823b905060008111915050919050565b60608315614353578290506143a3565b6000835111156143665782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161439a91906159cd565b60405180910390fd5b9392505050565b6000808212156143ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143e690615b6f565b60405180910390fd5b819050919050565b6000808212156144125761440d826000036143aa565b61441c565b61441b826143aa565b5b9050919050565b60007f80000000000000000000000000000000000000000000000000000000000000008210614487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161447e90615d4f565b60405180910390fd5b819050919050565b6000808214156144d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016144cb90615dcf565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214801561452257507f800000000000000000000000000000000000000000000000000000000000000083145b15614562576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161455990615baf565b60405180910390fd5b600082848161456d57fe5b0590508091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106145bb57803560ff19168380011785556145e9565b828001600101855582156145e9579182015b828111156145e85782358255916020019190600101906145cd565b5b5090506145f691906146a0565b5090565b6040518060a00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600060ff168152602001606081525090565b50805460018160011615610100020316600290046000825580601f1061467e575061469d565b601f01602090049060005260206000209081019061469c91906146a0565b5b50565b6146c291905b808211156146be5760008160009055506001016146a6565b5090565b90565b6000813590506146d481616089565b92915050565b6000815190506146e9816160a0565b92915050565b60008083601f84011261470157600080fd5b8235905067ffffffffffffffff81111561471a57600080fd5b60208301915083600182028301111561473257600080fd5b9250929050565b600081359050614748816160b7565b92915050565b60008135905061475d816160ce565b92915050565b60006020828403121561477557600080fd5b6000614783848285016146c5565b91505092915050565b6000806040838503121561479f57600080fd5b60006147ad858286016146c5565b92505060206147be858286016146c5565b9150509250929050565b600080600080606085870312156147de57600080fd5b60006147ec878288016146c5565b94505060206147fd878288016146c5565b935050604085013567ffffffffffffffff81111561481a57600080fd5b614826878288016146ef565b925092505092959194509250565b60008060006060848603121561484957600080fd5b6000614857868287016146c5565b9350506020614868868287016146c5565b925050604061487986828701614739565b9150509250925092565b60008060006060848603121561489857600080fd5b60006148a6868287016146c5565b93505060206148b7868287016146c5565b92505060406148c88682870161474e565b9150509250925092565b600080604083850312156148e557600080fd5b60006148f3858286016146c5565b925050602061490485828601614739565b9150509250929050565b6000806040838503121561492157600080fd5b600061492f858286016146c5565b92505060206149408582860161474e565b9150509250929050565b6000806000806060858703121561496057600080fd5b600061496e878288016146c5565b945050602061497f8782880161474e565b935050604085013567ffffffffffffffff81111561499c57600080fd5b6149a8878288016146ef565b925092505092959194509250565b6000602082840312156149c857600080fd5b60006149d6848285016146da565b91505092915050565b6000602082840312156149f157600080fd5b60006149ff84828501614739565b91505092915050565b600060208284031215614a1a57600080fd5b6000614a288482850161474e565b91505092915050565b6000614a3d8383614a6c565b60208301905092915050565b6000614a558383615785565b905092915050565b614a6681615fbd565b82525050565b614a7581615f4b565b82525050565b614a8481615f4b565b82525050565b6000614a9582615ea5565b614a9f8185615eeb565b9350614aaa83615e85565b8060005b83811015614adb578151614ac28882614a31565b9750614acd83615ed1565b925050600181019050614aae565b5085935050505092915050565b6000614af382615eb0565b614afd8185615efc565b935083602082028501614b0f85615e95565b8060005b85811015614b4b5784840389528151614b2c8582614a49565b9450614b3783615ede565b925060208a01995050600181019050614b13565b50829750879550505050505092915050565b614b6681615f5d565b82525050565b6000614b788385615f1e565b9350614b85838584616029565b614b8e8361606b565b840190509392505050565b6000614ba482615ebb565b614bae8185615f0d565b9350614bbe818560208601616038565b614bc78161606b565b840191505092915050565b6000614bdd82615ebb565b614be78185615f1e565b9350614bf7818560208601616038565b614c008161606b565b840191505092915050565b6000614c1682615ebb565b614c208185615f2f565b9350614c30818560208601616038565b80840191505092915050565b614c4581615fcf565b82525050565b614c5481615ff3565b82525050565b614c6381615f7c565b82525050565b614c7281615f7c565b82525050565b6000614c8382615ec6565b614c8d8185615f3a565b9350614c9d818560208601616038565b614ca68161606b565b840191505092915050565b6000614cbe601283615f3a565b91507f4d757374206e6f74206265206c6f636b656400000000000000000000000000006000830152602082019050919050565b6000614cfe602383615f3a565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614d64601483615f3a565b91507f4d6f64756c6520616c72656164792061646465640000000000000000000000006000830152602082019050919050565b6000614da4601583615f3a565b91507f41646472657373206e6f7420696e2061727261792e00000000000000000000006000830152602082019050919050565b6000614de4601883615f3a565b91507f4d6f64756c65206d757374206e6f7420626520616464656400000000000000006000830152602082019050919050565b6000614e24602283615f3a565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614e8a601b83615f3a565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000614eca602783615f3a565b91507f5669727475616c20746f205265616c20756e697420636f6e76657273696f6e2060008301527f696e76616c6964000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614f30602183615f3a565b91507f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614f96602683615f3a565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614ffc601483615f3a565b91507f4d6f64756c65206d7573742062652061646465640000000000000000000000006000830152602082019050919050565b600061503c602583615f3a565b91507f5768656e206c6f636b65642c206f6e6c7920746865206c6f636b65722063616e60008301527f2063616c6c0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006150a2602083615f3a565b91507f53616665436173743a2076616c7565206d75737420626520706f7369746976656000830152602082019050919050565b60006150e2601883615f3a565b91507f4f6e6c7920746865206d6f64756c652063616e2063616c6c00000000000000006000830152602082019050919050565b6000615122602183615f3a565b91507f5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615188601583615f3a565b91507f4d757374206e6f7420626520636f6d706f6e656e7400000000000000000000006000830152602082019050919050565b60006151c8602783615f3a565b91507f5265616c20746f205669727475616c20756e697420636f6e76657273696f6e2060008301527f696e76616c6964000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061522e601d83615f3a565b91507f4d75737420626520656e61626c6564206f6e20436f6e74726f6c6c65720000006000830152602082019050919050565b600061526e602783615f3a565b91507f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f60008301527f766572666c6f77000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006152d4600e83615f3a565b91507f4d757374206265206c6f636b65640000000000000000000000000000000000006000830152602082019050919050565b6000615314600d83615f3a565b91507f496e76616c696420696e707574000000000000000000000000000000000000006000830152602082019050919050565b6000615354602183615f3a565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006153ba600e83615f3a565b91507f4d757374206265206c6f636b65720000000000000000000000000000000000006000830152602082019050919050565b60006153fa602583615f3a565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615460601883615f3a565b91507f4e6577206d756c7469706c69657220746f6f20736d616c6c00000000000000006000830152602082019050919050565b60006154a0602483615f3a565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615506601d83615f3a565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000615546602883615f3a565b91507f53616665436173743a2076616c756520646f65736e27742066697420696e206160008301527f6e20696e743235360000000000000000000000000000000000000000000000006020830152604082019050919050565b60006155ac602483615f3a565b91507f4d6f64756c65206d75737420626520656e61626c6564206f6e20636f6e74726f60008301527f6c6c6572000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615612601283615f3a565b91507f4f6e6c79207768656e20756e6c6f636b656400000000000000000000000000006000830152602082019050919050565b6000615652601583615f3a565b91507f4f6e6c79206d616e616765722063616e2063616c6c00000000000000000000006000830152602082019050919050565b6000615692602083615f3a565b91507f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f6000830152602082019050919050565b60006156d2601683615f3a565b91507f4d6f64756c65206d7573742062652070656e64696e67000000000000000000006000830152602082019050919050565b6000615712601f83615f3a565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b6000615752601083615f3a565b91507f43616e74206469766964652062792030000000000000000000000000000000006000830152602082019050919050565b600060a08301600083015161579d6000860182614a6c565b5060208301516157b06020860182614a6c565b5060408301516157c36040860182614c5a565b5060608301516157d6606086018261580a565b50608083015184820360808601526157ee8282614b99565b9150508091505092915050565b61580481615fa6565b82525050565b61581381615fb0565b82525050565b61582281615fb0565b82525050565b60006158348284614c0b565b915081905092915050565b60006020820190506158546000830184614a7b565b92915050565b600060208201905061586f6000830184614a5d565b92915050565b600060408201905061588a6000830185614a7b565b6158976020830184614a7b565b9392505050565b600060208201905081810360008301526158b88184614a8a565b905092915050565b600060208201905081810360008301526158da8184614ae8565b905092915050565b60006020820190506158f76000830184614b5d565b92915050565b60006020820190508181036000830152615918818486614b6c565b90509392505050565b6000604082019050818103600083015261593c818587614b6c565b905081810360208301526159508184614bd2565b9050949350505050565b600060208201905081810360008301526159748184614bd2565b905092915050565b60006020820190506159916000830184614c3c565b92915050565b60006020820190506159ac6000830184614c4b565b92915050565b60006020820190506159c76000830184614c69565b92915050565b600060208201905081810360008301526159e78184614c78565b905092915050565b60006020820190508181036000830152615a0881614cb1565b9050919050565b60006020820190508181036000830152615a2881614cf1565b9050919050565b60006020820190508181036000830152615a4881614d57565b9050919050565b60006020820190508181036000830152615a6881614d97565b9050919050565b60006020820190508181036000830152615a8881614dd7565b9050919050565b60006020820190508181036000830152615aa881614e17565b9050919050565b60006020820190508181036000830152615ac881614e7d565b9050919050565b60006020820190508181036000830152615ae881614ebd565b9050919050565b60006020820190508181036000830152615b0881614f23565b9050919050565b60006020820190508181036000830152615b2881614f89565b9050919050565b60006020820190508181036000830152615b4881614fef565b9050919050565b60006020820190508181036000830152615b688161502f565b9050919050565b60006020820190508181036000830152615b8881615095565b9050919050565b60006020820190508181036000830152615ba8816150d5565b9050919050565b60006020820190508181036000830152615bc881615115565b9050919050565b60006020820190508181036000830152615be88161517b565b9050919050565b60006020820190508181036000830152615c08816151bb565b9050919050565b60006020820190508181036000830152615c2881615221565b9050919050565b60006020820190508181036000830152615c4881615261565b9050919050565b60006020820190508181036000830152615c68816152c7565b9050919050565b60006020820190508181036000830152615c8881615307565b9050919050565b60006020820190508181036000830152615ca881615347565b9050919050565b60006020820190508181036000830152615cc8816153ad565b9050919050565b60006020820190508181036000830152615ce8816153ed565b9050919050565b60006020820190508181036000830152615d0881615453565b9050919050565b60006020820190508181036000830152615d2881615493565b9050919050565b60006020820190508181036000830152615d48816154f9565b9050919050565b60006020820190508181036000830152615d6881615539565b9050919050565b60006020820190508181036000830152615d888161559f565b9050919050565b60006020820190508181036000830152615da881615605565b9050919050565b60006020820190508181036000830152615dc881615645565b9050919050565b60006020820190508181036000830152615de881615685565b9050919050565b60006020820190508181036000830152615e08816156c5565b9050919050565b60006020820190508181036000830152615e2881615705565b9050919050565b60006020820190508181036000830152615e4881615745565b9050919050565b6000602082019050615e6460008301846157fb565b92915050565b6000602082019050615e7f6000830184615819565b92915050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000615f5682615f86565b9050919050565b60008115159050919050565b6000819050615f778261607c565b919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000615fc882616005565b9050919050565b6000615fda82615fe1565b9050919050565b6000615fec82615f86565b9050919050565b6000615ffe82615f69565b9050919050565b600061601082616017565b9050919050565b600061602282615f86565b9050919050565b82818337600083830152505050565b60005b8381101561605657808201518184015260208101905061603b565b83811115616065576000848401525b50505050565b6000601f19601f8301169050919050565b6003811061608657fe5b50565b61609281615f4b565b811461609d57600080fd5b50565b6160a981615f5d565b81146160b457600080fd5b50565b6160c081615f7c565b81146160cb57600080fd5b50565b6160d781615fa6565b81146160e257600080fd5b5056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122029954b23931615abf1469c9f6208ff0d66f539b4e69ebbba44182b93ec73f01564736f6c634300060a0033", + "bin-runtime": "0x6080604052600436106102b25760003560e01c80638ae458da11610175578063b2494df3116100dc578063d7f1b27c11610095578063ea0ee5591161006f578063ea0ee55914610b61578063eaf993e114610b8a578063f77c479114610bc7578063f83d08ba14610bf2576102b9565b8063d7f1b27c14610aaa578063dd62ed3e14610ae7578063df5e9b2914610b24576102b9565b8063b2494df31461099c578063c2de0e9d146109c7578063c5d574fe146109f0578063c756401714610a2d578063d0ebdbe714610a56578063d7b96d4e14610a7f576102b9565b8063a457c2d71161012e578063a457c2d71461087a578063a4e2d634146108b7578063a69df4b5146108e2578063a7bdad03146108f9578063a9059cbb14610936578063acf3f07714610973576102b9565b80638ae458da146107585780638f6f03321461079557806395d89b41146107d257806399d50d5d146107fd5780639dc29fac14610828578063a063246114610851576102b9565b806340c10f191161021957806366cb8d2f116101d257806366cb8d2f146106105780636f86c8971461064d57806370a08231146106765780637d966593146106b357806380275860146106f057806381b2248a1461071b576102b9565b806340c10f1914610502578063481c6a751461052b5780634e353270146105565780635230c3961461057f57806353bae5f7146105aa57806363a90fc1146105e7576102b9565b806323b872dd1161026b57806323b872dd146103ce57806326898fe11461040b5780632ba57d1714610434578063313ce5671461045d57806335bc4e521461048857806339509351146104c5576102b9565b806306fdde03146102be578063095ea7b3146102e95780630ffe0f1e1461032657806318160ddd1461033d5780631ed86f191461036857806322ebeba414610391576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610c09565b6040516102e091906159cd565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b919061490e565b610cab565b60405161031d91906158e2565b60405180910390f35b34801561033257600080fd5b5061033b610cc9565b005b34801561034957600080fd5b50610352610ec7565b60405161035f9190615e4f565b60405180910390f35b34801561037457600080fd5b5061038f600480360381019061038a9190614763565b610ed1565b005b34801561039d57600080fd5b506103b860048036038101906103b3919061478c565b61110f565b6040516103c591906159b2565b60405180910390f35b3480156103da57600080fd5b506103f560048036038101906103f09190614883565b61112b565b60405161040291906158e2565b60405180910390f35b34801561041757600080fd5b50610432600480360381019061042d91906147c8565b611204565b005b34801561044057600080fd5b5061045b600480360381019061045691906148d2565b611313565b005b34801561046957600080fd5b506104726113ca565b60405161047f9190615e6a565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa9190614763565b6113e1565b6040516104bc9190615997565b60405180910390f35b3480156104d157600080fd5b506104ec60048036038101906104e7919061490e565b611401565b6040516104f991906158e2565b60405180910390f35b34801561050e57600080fd5b506105296004803603810190610524919061490e565b6114b4565b005b34801561053757600080fd5b506105406114d2565b60405161054d919061583f565b60405180910390f35b34801561056257600080fd5b5061057d60048036038101906105789190614763565b6114f8565b005b34801561058b57600080fd5b506105946115fa565b6040516105a191906159b2565b60405180910390f35b3480156105b657600080fd5b506105d160048036038101906105cc9190614763565b611600565b6040516105de91906158e2565b60405180910390f35b3480156105f357600080fd5b5061060e60048036038101906106099190614834565b61166f565b005b34801561061c57600080fd5b5061063760048036038101906106329190614763565b61177e565b60405161064491906159b2565b60405180910390f35b34801561065957600080fd5b50610674600480360381019061066f9190614763565b611798565b005b34801561068257600080fd5b5061069d60048036038101906106989190614763565b611802565b6040516106aa9190615e4f565b60405180910390f35b3480156106bf57600080fd5b506106da60048036038101906106d5919061478c565b61184a565b6040516106e791906158e2565b60405180910390f35b3480156106fc57600080fd5b5061070561186f565b60405161071291906158c0565b60405180910390f35b34801561072757600080fd5b50610742600480360381019061073d9190614a08565b611aa4565b60405161074f919061583f565b60405180910390f35b34801561076457600080fd5b5061077f600480360381019061077a919061478c565b611ae0565b60405161078c919061595a565b60405180910390f35b3480156107a157600080fd5b506107bc60048036038101906107b7919061494a565b611af4565b6040516107c9919061595a565b60405180910390f35b3480156107de57600080fd5b506107e7611bd5565b6040516107f491906159cd565b60405180910390f35b34801561080957600080fd5b50610812611c77565b60405161081f919061589e565b60405180910390f35b34801561083457600080fd5b5061084f600480360381019061084a919061490e565b611d05565b005b34801561085d57600080fd5b5061087860048036038101906108739190614763565b611d23565b005b34801561088657600080fd5b506108a1600480360381019061089c919061490e565b611f3a565b6040516108ae91906158e2565b60405180910390f35b3480156108c357600080fd5b506108cc612007565b6040516108d991906158e2565b60405180910390f35b3480156108ee57600080fd5b506108f761201a565b005b34801561090557600080fd5b50610920600480360381019061091b9190614763565b612143565b60405161092d919061589e565b60405180910390f35b34801561094257600080fd5b5061095d6004803603810190610958919061490e565b612155565b60405161096a91906158e2565b60405180910390f35b34801561097f57600080fd5b5061099a6004803603810190610995919061478c565b612173565b005b3480156109a857600080fd5b506109b16122cf565b6040516109be919061589e565b60405180910390f35b3480156109d357600080fd5b506109ee60048036038101906109e991906149df565b61235d565b005b3480156109fc57600080fd5b50610a176004803603810190610a129190614a08565b6123b7565b604051610a24919061583f565b60405180910390f35b348015610a3957600080fd5b50610a546004803603810190610a4f9190614763565b6123f3565b005b348015610a6257600080fd5b50610a7d6004803603810190610a789190614763565b612597565b005b348015610a8b57600080fd5b50610a94612694565b604051610aa1919061583f565b60405180910390f35b348015610ab657600080fd5b50610ad16004803603810190610acc9190614763565b6126ba565b604051610ade91906158e2565b60405180910390f35b348015610af357600080fd5b50610b0e6004803603810190610b09919061478c565b612728565b604051610b1b9190615e4f565b60405180910390f35b348015610b3057600080fd5b50610b4b6004803603810190610b469190614763565b6127af565b604051610b5891906158e2565b60405180910390f35b348015610b6d57600080fd5b50610b886004803603810190610b83919061478c565b612851565b005b348015610b9657600080fd5b50610bb16004803603810190610bac9190614763565b6129ac565b604051610bbe91906159b2565b60405180910390f35b348015610bd357600080fd5b50610bdc612a1f565b604051610be9919061597c565b60405180910390f35b348015610bfe57600080fd5b50610c07612a45565b005b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ca15780601f10610c7657610100808354040283529160200191610ca1565b820191906000526020600020905b815481529060010190602001808311610c8457829003601f168201915b5050505050905090565b6000610cbf610cb8612b0b565b8484612b13565b6001905092915050565b600a60009054906101000a900460ff1615610d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1090615d8f565b60405180910390fd5b60016002811115610d2657fe5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166002811115610d7e57fe5b14610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db590615def565b60405180910390fd5b6002600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836002811115610e1a57fe5b02179055506008339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f27b541a16df0902e262f34789782092ab25125513b8ed73608e802951771b92860405160405180910390a2565b6000600254905090565b610ed9612cde565b60006002811115610ee657fe5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166002811115610f3e57fe5b14610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7590615a6f565b60405180910390fd5b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342f6e389826040518263ffffffff1660e01b8152600401610fd9919061583f565b60206040518083038186803b158015610ff157600080fd5b505afa158015611005573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102991906149b6565b611068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105f90615c0f565b60405180910390fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360028111156110c457fe5b02179055508073ffffffffffffffffffffffffffffffffffffffff167fead6a006345da1073a106d5f32372d2d2204f46cb0b4bca8f5ebafcbbed12b8a60405160405180910390a250565b600061112361111e8484612d70565b612dfd565b905092915050565b6000611138848484612e1b565b6111f984611144612b0b565b6111f48560405180606001604052806028815260200161615760289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111aa612b0b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130b09092919063ffffffff16565b612b13565b600190509392505050565b61120c61310b565b61121461329b565b8181600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010191906112a592919061457a565b508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fb373eedb8e9038a2dcba31f06b2735887c1a904125e5c9f0021ba41ed972318e84846040516113059291906158fd565b60405180910390a350505050565b61131b61310b565b61132361329b565b600061132e82613343565b905080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508273ffffffffffffffffffffffffffffffffffffffff167f8133e2bf34edab764b55c59d1d41f9df637e7c22828bb6b0a9d55b429d008a97836040516113bd91906159b2565b60405180910390a2505050565b6000600560009054906101000a900460ff16905090565b60096020528060005260406000206000915054906101000a900460ff1681565b60006114aa61140e612b0b565b846114a5856001600061141f612b0b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340e90919063ffffffff16565b612b13565b6001905092915050565b6114bc61310b565b6114c461329b565b6114ce8282613463565b5050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61150061310b565b61150861329b565b611511816127af565b15611551576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154890615bcf565b60405180910390fd5b600b819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f76da6cf8b40dd2b2c223a5956831e0ff4e75522538a86782108a0bbe1577e29860405160405180910390a250565b600d5481565b60006001600281111561160f57fe5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600281111561166757fe5b149050919050565b61167761310b565b61167f61329b565b600061168a82613343565b905080600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f81a422e27f503e1b92cdb616a6e653aac10a8e0c3fa6832a58dc616c080fd7bd8460405161177091906159b2565b60405180910390a350505050565b600061179161178c836135f7565b612dfd565b9050919050565b6117a061310b565b6117a861329b565b6117bc81600b61364390919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fc605d0bf97f9b921340106a2e59f9428d5eb9039b16866159e0cdd2bf8e963df60405160405180910390a250565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061186782611859856137fe565b6138ce90919063ffffffff16565b905092915050565b60608061187a6138e8565b67ffffffffffffffff8111801561189057600080fd5b506040519080825280602002602001820160405280156118ca57816020015b6118b76145fa565b8152602001906001900390816118af5790505b509050600080905060008090505b600b80549050811015611a9b576000600b82815481106118f457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600061192c826135f7565b13156119c1576040518060a001604052808273ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200161197f8361177e565b8152602001600060ff168152602001604051806020016040528060008152508152508484815181106119ad57fe5b602002602001018190525082806001019350505b60606119cc826137fe565b905060008090505b8151811015611a8b5760008282815181106119eb57fe5b602002602001015190506040518060a001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001611a42868461110f565b8152602001600160ff168152602001611a5b8684613999565b815250878781518110611a6a57fe5b602002602001018190525085806001019650505080806001019150506119d4565b50505080806001019150506118d8565b50819250505090565b60088181548110611ab157fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060611aec8383613999565b905092915050565b6060611afe61310b565b611b0661329b565b611b7583838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050858773ffffffffffffffffffffffffffffffffffffffff16613abe9092919063ffffffff16565b9050838573ffffffffffffffffffffffffffffffffffffffff167f2a936dbabeaea30adc1ddad138b1958497988474bef8b09a29411f0105ab8ab2858585604051611bc293929190615921565b60405180910390a3809050949350505050565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c6d5780601f10611c4257610100808354040283529160200191611c6d565b820191906000526020600020905b815481529060010190602001808311611c5057829003601f168201915b5050505050905090565b6060600b805480602002602001604051908101604052809291908181526020018280548015611cfb57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611cb1575b5050505050905090565b611d0d61310b565b611d1561329b565b611d1f8282613aed565b5050565b611d2b612cde565b600a60009054906101000a900460ff1615611d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7290615d8f565b60405180910390fd5b600280811115611d8757fe5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166002811115611ddf57fe5b14611e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1690615b2f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663847ef08d6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e6757600080fd5b505af1158015611e7b573d6000803e3d6000fd5b505050506000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836002811115611edb57fe5b0217905550611ef481600861364390919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f0a1ee69f55c33d8467c69ca59ce2007a737a88603d75392972520bf67cb513b860405160405180910390a250565b6000611ffd611f47612b0b565b84611ff88560405180606001604052806025815260200161617f6025913960016000611f71612b0b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130b09092919063ffffffff16565b612b13565b6001905092915050565b600a60009054906101000a900460ff1681565b61202261310b565b600a60009054906101000a900460ff16612071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206890615c4f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f890615caf565b60405180910390fd5b600760006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000600a60006101000a81548160ff021916908315150217905550565b606061214e826137fe565b9050919050565b6000612169612162612b0b565b8484612e1b565b6001905092915050565b61217b61310b565b61218361329b565b6121d781600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010161364390919063ffffffff16565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600061226f9190614658565b50508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f5d0275f68d583838a7e2be68e3ef8ac2c1f9d4eeaa4b223360f4cd093a160d7560405160405180910390a35050565b6060600880548060200260200160405190810160405280929190818152602001828054801561235357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612309575b5050505050905090565b61236561310b565b61236d61329b565b61237681613c9b565b80600d819055507fc4e78b3245dc105eefced18655b978e194ff858545a1080f2888dc3b6ae8df0a816040516123ac91906159b2565b60405180910390a150565b600b81815481106123c457fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6123fb612cde565b600a60009054906101000a900460ff161561244b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244290615d8f565b60405180910390fd5b6001600281111561245857fe5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660028111156124b057fe5b146124f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e790615def565b60405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083600281111561254c57fe5b02179055508073ffffffffffffffffffffffffffffffffffffffff167fd6b18042563148f38d728c1c4d339ffd515b632d0ad2e1833b822412f3f4d87760405160405180910390a250565b61259f612cde565b600a60009054906101000a900460ff16156125ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e690615d8f565b60405180910390fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f43fcfef38622d6a5b118be09c27a6ed8cbdbfca21f0ea9245412ce8031c0423c8282604051612688929190615875565b60405180910390a15050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006002808111156126c857fe5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600281111561272057fe5b149050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061284a82600b80548060200260200160405190810160405280929190818152602001828054801561283757602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116127ed575b50505050506138ce90919063ffffffff16565b9050919050565b61285961310b565b61286161329b565b61286b828261184a565b156128ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a290615a2f565b60405180910390fd5b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167ff71324fa78e1894b364a1fc8d0535c4208f28c7b380f752afe00c8ce386023fb60405160405180910390a35050565b6000806129b88361177e565b905060606129c5846137fe565b905060008090505b8151811015612a1457612a056129f6868484815181106129e957fe5b602002602001015161110f565b84613d0090919063ffffffff16565b925080806001019150506129cd565b508192505050919050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612a4d61310b565b600a60009054906101000a900460ff1615612a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a94906159ef565b60405180910390fd5b33600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a60006101000a81548160ff021916908315150217905550565b6000670de0b6b3a7640000905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7a90615d0f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bea90615a8f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612cd19190615e4f565b60405180910390a3505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6590615daf565b60405180910390fd5b565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905092915050565b6000612e14600d5483613d7890919063ffffffff16565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8290615ccf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef290615a0f565b60405180910390fd5b612f06838383613da6565b612f7181604051806060016040528060268152602001616108602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130b09092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613004816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130a39190615e4f565b60405180910390a3505050565b60008383111582906130f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ef91906159cd565b60405180910390fd5b5060008385039050809150509392505050565b60028081111561311757fe5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600281111561316f57fe5b146131af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a690615b8f565b60405180910390fd5b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342f6e389336040518263ffffffff1660e01b815260040161320a919061585a565b60206040518083038186803b15801561322257600080fd5b505afa158015613236573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325a91906149b6565b613299576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161329090615d6f565b60405180910390fd5b565b600a60009054906101000a900460ff161561334157600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161333790615b4f565b60405180910390fd5b5b565b60008061335b600d5484613dab90919063ffffffff16565b905060008313801561336d5750600081145b156133ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133a490615bef565b60405180910390fd5b6000831380156133c5575060006133c382612dfd565b145b15613405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133fc90615acf565b60405180910390fd5b80915050919050565b600080828401905083811015613459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345090615aaf565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156134d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ca90615e0f565b60405180910390fd5b6134df60008383613da6565b6134f48160025461340e90919063ffffffff16565b60028190555061354b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135eb9190615e4f565b60405180910390a35050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000806136d5848054806020026020016040519081016040528092919081815260200182805480156136ca57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311613680575b505050505084613dd9565b9150915080613719576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371090615a4f565b60405180910390fd5b6000600185805490500390508083146137b85784818154811061373857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685848154811061376f57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b848054806137c257fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555050505050565b6060600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054806020026020016040519081016040528092919081815260200182805480156138c257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311613878575b50505050509050919050565b6000806138db8484613dd9565b9150508091505092915050565b60008060008090505b600b80549050811015613991576000600b828154811061390d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000613945826135f7565b13156139545782806001019350505b606061395f826137fe565b90506000815111156139825761397f81518561340e90919063ffffffff16565b93505b505080806001019150506138f1565b508091505090565b6060600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613ab15780601f10613a8657610100808354040283529160200191613ab1565b820191906000526020600020905b815481529060010190602001808311613a9457829003601f168201915b5050505050905092915050565b6060613ae484848460405180606001604052806029815260200161612e60299139613e83565b90509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b5490615c8f565b60405180910390fd5b613b6982600083613da6565b613bd4816040518060600160405280602281526020016160e6602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130b09092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c2b81600254613f9890919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c8f9190615e4f565b60405180910390a35050565b6000613ca5613fe2565b90506000613cbc8383613d7890919063ffffffff16565b13613cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cf390615cef565b60405180910390fd5b5050565b600080828401905060008312158015613d195750838112155b80613d2f5750600083128015613d2e57508381125b5b613d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d6590615aef565b60405180910390fd5b8091505092915050565b6000613d9e613d90838561411690919063ffffffff16565b670de0b6b3a7640000614214565b905092915050565b505050565b6000613dd1613dcb670de0b6b3a76400008561411690919063ffffffff16565b83614214565b905092915050565b60008060008451905060008090505b81811015613e52578473ffffffffffffffffffffffffffffffffffffffff16868281518110613e1357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415613e4557806001935093505050613e7c565b8080600101915050613de8565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600092509250505b9250929050565b606082471015613ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ebf90615b0f565b60405180910390fd5b613ed185614330565b613f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f0790615d2f565b60405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff168587604051613f3a9190615828565b60006040518083038185875af1925050503d8060008114613f77576040519150601f19603f3d011682016040523d82523d6000602084013e613f7c565b606091505b5091509150613f8c828286614343565b92505050949350505050565b6000613fda83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130b0565b905092915050565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905060008090505b600b80549050811015614106576000600b828154811061402a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600061406a614065836135f7565b6143aa565b905060008111801561407b57508381105b15614084578093505b606061408f836137fe565b905060008090505b81518110156140f55760008282815181106140ae57fe5b6020026020010151905060006140cc6140c78784612d70565b6143f7565b90506000811180156140dd57508781105b156140e6578097505b50508080600101915050614097565b50505050808060010191505061400e565b5061411081614423565b91505090565b600080831415614129576000905061420e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8314801561417757507f800000000000000000000000000000000000000000000000000000000000000082145b156141b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141ae90615c2f565b60405180910390fd5b60008284029050828482816141c857fe5b0514614209576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161420090615c2f565b60405180910390fd5b809150505b92915050565b600080821415614259576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161425090615e2f565b60405180910390fd5b7f8000000000000000000000000000000000000000000000000000000000000000831415806142a857507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214155b6142e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142de90615c6f565b60405180910390fd5b60006142fc838561448f90919063ffffffff16565b9050600083851812801561431a5750600083858161431657fe5b0714155b15614326576001810390505b8091505092915050565b600080823b905060008111915050919050565b60608315614353578290506143a3565b6000835111156143665782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161439a91906159cd565b60405180910390fd5b9392505050565b6000808212156143ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143e690615b6f565b60405180910390fd5b819050919050565b6000808212156144125761440d826000036143aa565b61441c565b61441b826143aa565b5b9050919050565b60007f80000000000000000000000000000000000000000000000000000000000000008210614487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161447e90615d4f565b60405180910390fd5b819050919050565b6000808214156144d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016144cb90615dcf565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214801561452257507f800000000000000000000000000000000000000000000000000000000000000083145b15614562576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161455990615baf565b60405180910390fd5b600082848161456d57fe5b0590508091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106145bb57803560ff19168380011785556145e9565b828001600101855582156145e9579182015b828111156145e85782358255916020019190600101906145cd565b5b5090506145f691906146a0565b5090565b6040518060a00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600060ff168152602001606081525090565b50805460018160011615610100020316600290046000825580601f1061467e575061469d565b601f01602090049060005260206000209081019061469c91906146a0565b5b50565b6146c291905b808211156146be5760008160009055506001016146a6565b5090565b90565b6000813590506146d481616089565b92915050565b6000815190506146e9816160a0565b92915050565b60008083601f84011261470157600080fd5b8235905067ffffffffffffffff81111561471a57600080fd5b60208301915083600182028301111561473257600080fd5b9250929050565b600081359050614748816160b7565b92915050565b60008135905061475d816160ce565b92915050565b60006020828403121561477557600080fd5b6000614783848285016146c5565b91505092915050565b6000806040838503121561479f57600080fd5b60006147ad858286016146c5565b92505060206147be858286016146c5565b9150509250929050565b600080600080606085870312156147de57600080fd5b60006147ec878288016146c5565b94505060206147fd878288016146c5565b935050604085013567ffffffffffffffff81111561481a57600080fd5b614826878288016146ef565b925092505092959194509250565b60008060006060848603121561484957600080fd5b6000614857868287016146c5565b9350506020614868868287016146c5565b925050604061487986828701614739565b9150509250925092565b60008060006060848603121561489857600080fd5b60006148a6868287016146c5565b93505060206148b7868287016146c5565b92505060406148c88682870161474e565b9150509250925092565b600080604083850312156148e557600080fd5b60006148f3858286016146c5565b925050602061490485828601614739565b9150509250929050565b6000806040838503121561492157600080fd5b600061492f858286016146c5565b92505060206149408582860161474e565b9150509250929050565b6000806000806060858703121561496057600080fd5b600061496e878288016146c5565b945050602061497f8782880161474e565b935050604085013567ffffffffffffffff81111561499c57600080fd5b6149a8878288016146ef565b925092505092959194509250565b6000602082840312156149c857600080fd5b60006149d6848285016146da565b91505092915050565b6000602082840312156149f157600080fd5b60006149ff84828501614739565b91505092915050565b600060208284031215614a1a57600080fd5b6000614a288482850161474e565b91505092915050565b6000614a3d8383614a6c565b60208301905092915050565b6000614a558383615785565b905092915050565b614a6681615fbd565b82525050565b614a7581615f4b565b82525050565b614a8481615f4b565b82525050565b6000614a9582615ea5565b614a9f8185615eeb565b9350614aaa83615e85565b8060005b83811015614adb578151614ac28882614a31565b9750614acd83615ed1565b925050600181019050614aae565b5085935050505092915050565b6000614af382615eb0565b614afd8185615efc565b935083602082028501614b0f85615e95565b8060005b85811015614b4b5784840389528151614b2c8582614a49565b9450614b3783615ede565b925060208a01995050600181019050614b13565b50829750879550505050505092915050565b614b6681615f5d565b82525050565b6000614b788385615f1e565b9350614b85838584616029565b614b8e8361606b565b840190509392505050565b6000614ba482615ebb565b614bae8185615f0d565b9350614bbe818560208601616038565b614bc78161606b565b840191505092915050565b6000614bdd82615ebb565b614be78185615f1e565b9350614bf7818560208601616038565b614c008161606b565b840191505092915050565b6000614c1682615ebb565b614c208185615f2f565b9350614c30818560208601616038565b80840191505092915050565b614c4581615fcf565b82525050565b614c5481615ff3565b82525050565b614c6381615f7c565b82525050565b614c7281615f7c565b82525050565b6000614c8382615ec6565b614c8d8185615f3a565b9350614c9d818560208601616038565b614ca68161606b565b840191505092915050565b6000614cbe601283615f3a565b91507f4d757374206e6f74206265206c6f636b656400000000000000000000000000006000830152602082019050919050565b6000614cfe602383615f3a565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614d64601483615f3a565b91507f4d6f64756c6520616c72656164792061646465640000000000000000000000006000830152602082019050919050565b6000614da4601583615f3a565b91507f41646472657373206e6f7420696e2061727261792e00000000000000000000006000830152602082019050919050565b6000614de4601883615f3a565b91507f4d6f64756c65206d757374206e6f7420626520616464656400000000000000006000830152602082019050919050565b6000614e24602283615f3a565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614e8a601b83615f3a565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000614eca602783615f3a565b91507f5669727475616c20746f205265616c20756e697420636f6e76657273696f6e2060008301527f696e76616c6964000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614f30602183615f3a565b91507f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614f96602683615f3a565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614ffc601483615f3a565b91507f4d6f64756c65206d7573742062652061646465640000000000000000000000006000830152602082019050919050565b600061503c602583615f3a565b91507f5768656e206c6f636b65642c206f6e6c7920746865206c6f636b65722063616e60008301527f2063616c6c0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006150a2602083615f3a565b91507f53616665436173743a2076616c7565206d75737420626520706f7369746976656000830152602082019050919050565b60006150e2601883615f3a565b91507f4f6e6c7920746865206d6f64756c652063616e2063616c6c00000000000000006000830152602082019050919050565b6000615122602183615f3a565b91507f5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615188601583615f3a565b91507f4d757374206e6f7420626520636f6d706f6e656e7400000000000000000000006000830152602082019050919050565b60006151c8602783615f3a565b91507f5265616c20746f205669727475616c20756e697420636f6e76657273696f6e2060008301527f696e76616c6964000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061522e601d83615f3a565b91507f4d75737420626520656e61626c6564206f6e20436f6e74726f6c6c65720000006000830152602082019050919050565b600061526e602783615f3a565b91507f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f60008301527f766572666c6f77000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006152d4600e83615f3a565b91507f4d757374206265206c6f636b65640000000000000000000000000000000000006000830152602082019050919050565b6000615314600d83615f3a565b91507f496e76616c696420696e707574000000000000000000000000000000000000006000830152602082019050919050565b6000615354602183615f3a565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006153ba600e83615f3a565b91507f4d757374206265206c6f636b65720000000000000000000000000000000000006000830152602082019050919050565b60006153fa602583615f3a565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615460601883615f3a565b91507f4e6577206d756c7469706c69657220746f6f20736d616c6c00000000000000006000830152602082019050919050565b60006154a0602483615f3a565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615506601d83615f3a565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000615546602883615f3a565b91507f53616665436173743a2076616c756520646f65736e27742066697420696e206160008301527f6e20696e743235360000000000000000000000000000000000000000000000006020830152604082019050919050565b60006155ac602483615f3a565b91507f4d6f64756c65206d75737420626520656e61626c6564206f6e20636f6e74726f60008301527f6c6c6572000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615612601283615f3a565b91507f4f6e6c79207768656e20756e6c6f636b656400000000000000000000000000006000830152602082019050919050565b6000615652601583615f3a565b91507f4f6e6c79206d616e616765722063616e2063616c6c00000000000000000000006000830152602082019050919050565b6000615692602083615f3a565b91507f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f6000830152602082019050919050565b60006156d2601683615f3a565b91507f4d6f64756c65206d7573742062652070656e64696e67000000000000000000006000830152602082019050919050565b6000615712601f83615f3a565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b6000615752601083615f3a565b91507f43616e74206469766964652062792030000000000000000000000000000000006000830152602082019050919050565b600060a08301600083015161579d6000860182614a6c565b5060208301516157b06020860182614a6c565b5060408301516157c36040860182614c5a565b5060608301516157d6606086018261580a565b50608083015184820360808601526157ee8282614b99565b9150508091505092915050565b61580481615fa6565b82525050565b61581381615fb0565b82525050565b61582281615fb0565b82525050565b60006158348284614c0b565b915081905092915050565b60006020820190506158546000830184614a7b565b92915050565b600060208201905061586f6000830184614a5d565b92915050565b600060408201905061588a6000830185614a7b565b6158976020830184614a7b565b9392505050565b600060208201905081810360008301526158b88184614a8a565b905092915050565b600060208201905081810360008301526158da8184614ae8565b905092915050565b60006020820190506158f76000830184614b5d565b92915050565b60006020820190508181036000830152615918818486614b6c565b90509392505050565b6000604082019050818103600083015261593c818587614b6c565b905081810360208301526159508184614bd2565b9050949350505050565b600060208201905081810360008301526159748184614bd2565b905092915050565b60006020820190506159916000830184614c3c565b92915050565b60006020820190506159ac6000830184614c4b565b92915050565b60006020820190506159c76000830184614c69565b92915050565b600060208201905081810360008301526159e78184614c78565b905092915050565b60006020820190508181036000830152615a0881614cb1565b9050919050565b60006020820190508181036000830152615a2881614cf1565b9050919050565b60006020820190508181036000830152615a4881614d57565b9050919050565b60006020820190508181036000830152615a6881614d97565b9050919050565b60006020820190508181036000830152615a8881614dd7565b9050919050565b60006020820190508181036000830152615aa881614e17565b9050919050565b60006020820190508181036000830152615ac881614e7d565b9050919050565b60006020820190508181036000830152615ae881614ebd565b9050919050565b60006020820190508181036000830152615b0881614f23565b9050919050565b60006020820190508181036000830152615b2881614f89565b9050919050565b60006020820190508181036000830152615b4881614fef565b9050919050565b60006020820190508181036000830152615b688161502f565b9050919050565b60006020820190508181036000830152615b8881615095565b9050919050565b60006020820190508181036000830152615ba8816150d5565b9050919050565b60006020820190508181036000830152615bc881615115565b9050919050565b60006020820190508181036000830152615be88161517b565b9050919050565b60006020820190508181036000830152615c08816151bb565b9050919050565b60006020820190508181036000830152615c2881615221565b9050919050565b60006020820190508181036000830152615c4881615261565b9050919050565b60006020820190508181036000830152615c68816152c7565b9050919050565b60006020820190508181036000830152615c8881615307565b9050919050565b60006020820190508181036000830152615ca881615347565b9050919050565b60006020820190508181036000830152615cc8816153ad565b9050919050565b60006020820190508181036000830152615ce8816153ed565b9050919050565b60006020820190508181036000830152615d0881615453565b9050919050565b60006020820190508181036000830152615d2881615493565b9050919050565b60006020820190508181036000830152615d48816154f9565b9050919050565b60006020820190508181036000830152615d6881615539565b9050919050565b60006020820190508181036000830152615d888161559f565b9050919050565b60006020820190508181036000830152615da881615605565b9050919050565b60006020820190508181036000830152615dc881615645565b9050919050565b60006020820190508181036000830152615de881615685565b9050919050565b60006020820190508181036000830152615e08816156c5565b9050919050565b60006020820190508181036000830152615e2881615705565b9050919050565b60006020820190508181036000830152615e4881615745565b9050919050565b6000602082019050615e6460008301846157fb565b92915050565b6000602082019050615e7f6000830184615819565b92915050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000615f5682615f86565b9050919050565b60008115159050919050565b6000819050615f778261607c565b919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000615fc882616005565b9050919050565b6000615fda82615fe1565b9050919050565b6000615fec82615f86565b9050919050565b6000615ffe82615f69565b9050919050565b600061601082616017565b9050919050565b600061602282615f86565b9050919050565b82818337600083830152505050565b60005b8381101561605657808201518184015260208101905061603b565b83811115616065576000848401525b50505050565b6000601f19601f8301169050919050565b6003811061608657fe5b50565b61609281615f4b565b811461609d57600080fd5b50565b6160a981615f5d565b81146160b457600080fd5b50565b6160c081615f7c565b81146160cb57600080fd5b50565b6160d781615fa6565b81146160e257600080fd5b5056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122029954b23931615abf1469c9f6208ff0d66f539b4e69ebbba44182b93ec73f01564736f6c634300060a0033" +} \ No newline at end of file diff --git a/out/SignedSafeMath.sol/SignedSafeMath.json b/out/SignedSafeMath.sol/SignedSafeMath.json new file mode 100644 index 000000000..c5f9f6668 --- /dev/null +++ b/out/SignedSafeMath.sol/SignedSafeMath.json @@ -0,0 +1,5 @@ +{ + "abi": [], + "bin": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122057b0899aa6f363b94b4a5c99363512966bfd45c1604c37addc5436ad689eacb564736f6c634300060a0033", + "bin-runtime": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122057b0899aa6f363b94b4a5c99363512966bfd45c1604c37addc5436ad689eacb564736f6c634300060a0033" +} \ No newline at end of file diff --git a/test/foundry-test/SetTokenTest.sol b/test/foundry-test/SetTokenTest.sol new file mode 100644 index 000000000..8d736cbcc --- /dev/null +++ b/test/foundry-test/SetTokenTest.sol @@ -0,0 +1,9 @@ +import { SetToken } from "../../contracts/protocol/SetToken.sol"; + +contract SetTokenTest { + SetToken setToken; + + function setUp() { + setToken = new SetToken(); + } +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 308e98017..dd6641443 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1347,12 +1347,12 @@ "@openzeppelin/contracts@3.4.1-solc-0.7-2": version "3.4.1-solc-0.7-2" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-3.4.1-solc-0.7-2.tgz#371c67ebffe50f551c3146a9eec5fe6ffe862e92" + resolved "https://registry.yarnpkg.com/@openzeppelin/-/contracts-3.4.1-solc-0.7-2.tgz#371c67ebffe50f551c3146a9eec5fe6ffe862e92" integrity sha512-tAG9LWg8+M2CMu7hIsqHPaTyG4uDzjr6mhvH96LvOpLZZj6tgzTluBt+LsCf1/QaYrlis6pITvpIaIhE+iZB+Q== "@openzeppelin/contracts@^3.1.0": version "3.3.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-3.3.0.tgz#ffdb693c5c349fc33bba420248dd3ac0a2d7c408" + resolved "https://registry.yarnpkg.com/@openzeppelin/-/contracts-3.3.0.tgz#ffdb693c5c349fc33bba420248dd3ac0a2d7c408" integrity sha512-AemZEsQYtUp1WRkcmZm1div5ORfTpLquLaziCIrSagjxyKdmObxuaY1yjQ5SHFMctR8rLwp706NXTbiIRJg7pw== "@resolver-engine/core@^0.3.3":