[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "AddressInsufficientBalance", "type": "error" }, { "inputs": [], "name": "AmountIsLessThanMinAmount", "type": "error" }, { "inputs": [], "name": "AssetAlreadyAdded", "type": "error" }, { "inputs": [], "name": "AssetNotAdded", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "implementation", "type": "address" } ], "name": "ERC1967InvalidImplementation", "type": "error" }, { "inputs": [], "name": "ERC1967NonPayable", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [], "name": "EnforcedPause", "type": "error" }, { "inputs": [], "name": "ExpectedPause", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [], "name": "IncorrectSwap", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "InvalidLength", "type": "error" }, { "inputs": [], "name": "InvalidManagingFee", "type": "error" }, { "inputs": [], "name": "InvalidMulticall", "type": "error" }, { "inputs": [], "name": "InvalidProof", "type": "error" }, { "inputs": [], "name": "InvalidRewardToken", "type": "error" }, { "inputs": [], "name": "InvalidShareAmount", "type": "error" }, { "inputs": [], "name": "InvalidSharesAmount", "type": "error" }, { "inputs": [], "name": "NotEnoughBalanceInVault", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [], "name": "OnlyUpgraderAllowed", "type": "error" }, { "inputs": [], "name": "OutdatedPrice", "type": "error" }, { "inputs": [], "name": "ProductAlreadyWhitelisted", "type": "error" }, { "inputs": [], "name": "ProductIsNotWhitelisted", "type": "error" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SafeERC20FailedOperation", "type": "error" }, { "inputs": [], "name": "SwapRouterIsNotWhitelisted", "type": "error" }, { "inputs": [], "name": "SwapRouterIsWhitelisted", "type": "error" }, { "inputs": [], "name": "SwapThresholdExceeded", "type": "error" }, { "inputs": [], "name": "TargetIsNotWhitelisted", "type": "error" }, { "inputs": [], "name": "TargetIsWhitelisted", "type": "error" }, { "inputs": [], "name": "UUPSUnauthorizedCallContext", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "slot", "type": "bytes32" } ], "name": "UUPSUnsupportedProxiableUUID", "type": "error" }, { "inputs": [], "name": "VaultIsUnderWater", "type": "error" }, { "inputs": [], "name": "ZeroAddress", "type": "error" }, { "inputs": [], "name": "ZeroAmountRedeemed", "type": "error" }, { "inputs": [], "name": "ZeroBurnAmount", "type": "error" }, { "inputs": [], "name": "ZeroDepositAmount", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "contract IERC20", "name": "asset", "type": "address" } ], "name": "AssetAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "contract IERC20", "name": "asset", "type": "address" } ], "name": "AssetRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Burned", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "rewardAmount", "type": "uint256" } ], "name": "Claimed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "managingFee", "type": "uint256" } ], "name": "ManagingFeeSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "wmntMerkleRoot", "type": "bytes32" } ], "name": "MerkleRootsSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Minted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousManager", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newManager", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "product", "type": "uint256" } ], "name": "ProductAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "product", "type": "uint256" } ], "name": "ProductRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "swapRouter", "type": "address" } ], "name": "SwapRouterAddedToWhitelist", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "swapRouter", "type": "address" } ], "name": "SwapRouterRemovedFromWhitelist", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "swapThreshold", "type": "uint256" } ], "name": "SwapThresholdChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "contract IERC20", "name": "tokenIn", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountIn", "type": "uint256" }, { "indexed": false, "internalType": "contract IERC20", "name": "tokenOut", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountOut", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "Swapped", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "target", "type": "address" } ], "name": "TargetAddedToWhitelist", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "target", "type": "address" } ], "name": "TargetRemovedFromWhitelist", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "inputs": [], "name": "DECIMALS_DIFFERENCE_MULTIPLIER", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_MANAGING_FEE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UPGRADE_INTERFACE_VERSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "X18_MULTIPLIER", "outputs": [ { "internalType": "int256", "name": "", "type": "int256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract IERC20", "name": "asset", "type": "address" }, { "components": [ { "internalType": "uint256", "name": "idx", "type": "uint256" }, { "internalType": "uint256", "name": "spotId", "type": "uint256" }, { "internalType": "uint256", "name": "perpId", "type": "uint256" }, { "internalType": "contract AggregatorV3Interface", "name": "priceFeed", "type": "address" }, { "internalType": "uint256", "name": "heartbeat", "type": "uint256" } ], "internalType": "struct ISkateVertexVault.AssetData", "name": "assetData", "type": "tuple" } ], "name": "addAsset", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "productId", "type": "uint256" } ], "name": "addProduct", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "assets", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract IERC20", "name": "asset", "type": "address" } ], "name": "assetsData", "outputs": [ { "internalType": "uint256", "name": "idx", "type": "uint256" }, { "internalType": "uint256", "name": "spotId", "type": "uint256" }, { "internalType": "uint256", "name": "perpId", "type": "uint256" }, { "internalType": "contract AggregatorV3Interface", "name": "priceFeed", "type": "address" }, { "internalType": "uint256", "name": "heartbeat", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "assetsList", "outputs": [ { "internalType": "contract IERC20[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "uint256", "name": "minAmount", "type": "uint256" } ], "name": "burn", "outputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newSwapThreshold", "type": "uint256" } ], "name": "changeSwapThreshold", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newUpgrader", "type": "address" } ], "name": "changeUpgrader", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes32[]", "name": "merkleProof", "type": "bytes32[]" } ], "name": "claim", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "collectManagerFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "contractSubAccount", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "transaction", "type": "bytes" } ], "name": "decodeTx", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "endpoint", "outputs": [ { "internalType": "contract IEndpoint", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract IERC20Metadata", "name": "asset", "type": "address" }, { "internalType": "int256", "name": "amount", "type": "int256" }, { "internalType": "uint256", "name": "assetDecimalsMultiplier", "type": "uint256" }, { "internalType": "uint256", "name": "usdcPrice", "type": "uint256" }, { "internalType": "uint256", "name": "usdcDecimalsMultiplier", "type": "uint256" }, { "internalType": "uint256", "name": "usdcPriceFeedDecimalsMultiplier", "type": "uint256" } ], "name": "getAssetAmountInUsdc", "outputs": [ { "internalType": "int256", "name": "", "type": "int256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "depositAmount", "type": "uint256" } ], "name": "getMintAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPendingBalances", "outputs": [ { "internalType": "uint256[]", "name": "pendingBalances", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract IERC20", "name": "token", "type": "address" } ], "name": "getPriceFromOracle", "outputs": [ { "internalType": "int256", "name": "", "type": "int256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getUnderlyingBalance", "outputs": [ { "internalType": "uint256", "name": "vaultBalance", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "getUnderlyingBalanceByShares", "outputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "incentivesData", "outputs": [ { "internalType": "address", "name": "wmnt", "type": "address" }, { "internalType": "bytes32", "name": "wmntMerkleRoot", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract ISpotEngine", "name": "_spotEngine", "type": "address" }, { "internalType": "contract IPerpEngine", "name": "_perpEngine", "type": "address" }, { "internalType": "contract IEndpoint", "name": "_endpoint", "type": "address" }, { "internalType": "contract IERC20", "name": "_usdc", "type": "address" }, { "internalType": "address", "name": "_manager", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "address", "name": "_upgrader", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "productId", "type": "uint256" } ], "name": "isWhiteListedProduct", "outputs": [ { "internalType": "bool", "name": "whitelisted", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "manager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "managerBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "managingFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "minShares", "type": "uint256" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "targets", "type": "address[]" }, { "internalType": "bytes[]", "name": "data", "type": "bytes[]" } ], "name": "multicallByManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "perpEngine", "outputs": [ { "internalType": "contract IPerpEngine", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "productIds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "reinit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IERC20", "name": "asset", "type": "address" } ], "name": "removeAsset", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "productId", "type": "uint256" } ], "name": "removeProduct", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "swapRouter", "type": "address" } ], "name": "removeSwapRouterFromWhitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "removeTargetFromWhitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_managingFee", "type": "uint256" } ], "name": "setManagingFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_wmntMerkleRoot", "type": "bytes32" } ], "name": "setMerkleRoots", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "spotEngine", "outputs": [ { "internalType": "contract ISpotEngine", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "spotId", "type": "uint256" } ], "name": "spotIdToAsset", "outputs": [ { "internalType": "contract IERC20", "name": "asset", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "bytes", "name": "swapData", "type": "bytes" }, { "internalType": "contract IERC20", "name": "tokenIn", "type": "address" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" } ], "name": "swap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "swapRouters", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "swapThreshold", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "targets", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newManager", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "upgrader", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "usdc", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "swapRouter", "type": "address" } ], "name": "whiteListSwapRouter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "whiteListTarget", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "whitelistedSwapRouters", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "whitelistedTargets", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "wmntClaimedAmounts", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "wmntMerkleRoot", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" } ]
60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051615c136200010460003960008181613ccf01528181613cf80152613e830152615c136000f3fe6080604052600436106104055760003560e01c8063601b48a411610213578063af75127411610123578063dd62ed3e116100ab578063f2fde38b1161007a578063f2fde38b14610cd6578063f7567ad714610cf6578063fabed41214610d39578063fb9ed25714610d59578063feb812af14610d8957600080fd5b8063dd62ed3e14610c69578063e2c6743914610c89578063f0b73e1114610c9e578063f26f87ad14610cc057600080fd5b8063c6d03461116100f2578063c6d0346114610bab578063cb51bba914610bdb578063cf35bdd014610bfb578063dae029d314610c1b578063db72287f14610c4957600080fd5b8063af75127414610b1a578063b390c0ab14610b3a578063c0e3c23e14610b5a578063c482ceaf14610b7357600080fd5b8063923e48db116101a6578063a2609a5911610175578063a2609a5914610a7e578063a8fdf8fe14610a93578063a9059cbb14610aa9578063ad3cb1cc14610ac9578063af26974514610afa57600080fd5b8063923e48db14610a095780639369198a14610a2957806395d89b4114610a495780639de2f79614610a5e57600080fd5b8063715018a6116101e2578063715018a61461099f57806373e1ef04146109b45780638456cb59146109d457806389f425e7146109e957600080fd5b8063601b48a4146108f05780636a809bc5146109065780636daabaf71461093c57806370a082311461095c57600080fd5b806335558e9b116103195780634f1ef286116102a15780635595d025116102705780635595d0251461084b5780635c975abb1461086b5780635e280f11146108905780635eb25a94146108b05780635ee95cae146108d057600080fd5b80634f1ef286146107e35780634f54c6a9146107f657806352d1902d14610816578063538e573c1461082b57600080fd5b80633f4ba83a116102e85780633f4ba83a146107405780634440825014610755578063481c6a751461078557806348ba4d2b146107a35780634a5e42b1146107c357600080fd5b806335558e9b1461065a578063384e474e146106de5780633e413bee146107005780633f27be651461072057600080fd5b80631b2ef1ca1161039c5780632931ec161161036b5780632931ec16146105c85780632bd8c8e4146105e85780632eaa9f1c14610608578063313ce5671461061e578063327a48cc1461063a57600080fd5b80631b2ef1ca146105325780631d4794d0146105525780631d6002ff1461057257806323b872dd146105a857600080fd5b80630a39ce02116103d85780630a39ce021461049a5780630bdde706146104d2578063124e993f146104ee57806318160ddd1461051057600080fd5b80630445b6671461040a57806306e1d81b1461043357806306fdde0314610448578063095ea7b31461046a575b600080fd5b34801561041657600080fd5b5061042060405481565b6040519081526020015b60405180910390f35b34801561043f57600080fd5b50604554610420565b34801561045457600080fd5b5061045d610da9565b60405161042a9190614b9b565b34801561047657600080fd5b5061048a610485366004614bd3565b610e6c565b604051901515815260200161042a565b3480156104a657600080fd5b506104ba6104b5366004614bff565b610e86565b6040516001600160a01b03909116815260200161042a565b3480156104de57600080fd5b50610420670de0b6b3a764000081565b3480156104fa57600080fd5b5061050e610509366004614c18565b610eb0565b005b34801561051c57600080fd5b50600080516020615b1e83398151915254610420565b34801561053e57600080fd5b5061042061054d366004614c35565b610fb2565b34801561055e57600080fd5b506104ba61056d366004614bff565b6110c4565b34801561057e57600080fd5b5061042061058d366004614c18565b6001600160a01b031660009081526046602052604090205490565b3480156105b457600080fd5b5061048a6105c3366004614c57565b6110d4565b3480156105d457600080fd5b5061050e6105e3366004614bff565b6110fa565b3480156105f457600080fd5b5061050e610603366004614c18565b611137565b34801561061457600080fd5b506104206103e881565b34801561062a57600080fd5b506040516012815260200161042a565b34801561064657600080fd5b5061050e610655366004614bff565b6112fd565b34801561066657600080fd5b506106ad610675366004614c18565b604260205260009081526040902080546001820154600283015460038401546004909401549293919290916001600160a01b03169085565b604080519586526020860194909452928401919091526001600160a01b03166060830152608082015260a00161042a565b3480156106ea57600080fd5b506106f36113b5565b60405161042a9190614c98565b34801561070c57600080fd5b506033546104ba906001600160a01b031681565b34801561072c57600080fd5b5061042061073b366004614ce5565b611417565b34801561074c57600080fd5b5061050e61152c565b34801561076157600080fd5b5061048a610770366004614bff565b60356020526000908152604090205460ff1681565b34801561079157600080fd5b506000546001600160a01b03166104ba565b3480156107af57600080fd5b506037546104ba906001600160a01b031681565b3480156107cf57600080fd5b5061050e6107de366004614c18565b61153e565b61050e6107f1366004614dc6565b611575565b34801561080257600080fd5b50610420610811366004614bff565b611594565b34801561082257600080fd5b50610420611607565b34801561083757600080fd5b50610420610846366004614c18565b611624565b34801561085757600080fd5b5061050e610866366004614c18565b611700565b34801561087757600080fd5b50600080516020615b5e8339815191525460ff1661048a565b34801561089c57600080fd5b506036546104ba906001600160a01b031681565b3480156108bc57600080fd5b5061050e6108cb366004614c18565b6118b5565b3480156108dc57600080fd5b5061050e6108eb366004614bff565b611929565b3480156108fc57600080fd5b5061042060395481565b34801561091257600080fd5b506104ba610921366004614bff565b6043602052600090815260409020546001600160a01b031681565b34801561094857600080fd5b506038546104ba906001600160a01b031681565b34801561096857600080fd5b50610420610977366004614c18565b6001600160a01b03166000908152600080516020615afe833981519152602052604090205490565b3480156109ab57600080fd5b5061050e611a7c565b3480156109c057600080fd5b5061050e6109cf366004614e99565b611a8e565b3480156109e057600080fd5b5061050e612189565b3480156109f557600080fd5b5061050e610a04366004614bff565b612199565b348015610a1557600080fd5b5061050e610a24366004614c18565b6121f7565b348015610a3557600080fd5b5061050e610a44366004614fba565b6122ce565b348015610a5557600080fd5b5061045d6126c2565b348015610a6a57600080fd5b50610420610a79366004614bff565b612701565b348015610a8a57600080fd5b5061050e612755565b348015610a9f57600080fd5b5061042060325481565b348015610ab557600080fd5b5061048a610ac4366004614bd3565b6127db565b348015610ad557600080fd5b5061045d604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610b0657600080fd5b50603b546104ba906001600160a01b031681565b348015610b2657600080fd5b5061050e610b35366004614bff565b6127e9565b348015610b4657600080fd5b50610420610b55366004614c35565b6127fa565b348015610b6657600080fd5b5061042064e8d4a5100081565b348015610b7f57600080fd5b5061050e604480546001600160a01b0319167378c1b0c915c4faa5fffa6cabf0219da63d7f4cb8179055565b348015610bb757600080fd5b5061048a610bc6366004614c18565b603e6020526000908152604090205460ff1681565b348015610be757600080fd5b50610420610bf6366004614bff565b6129a4565b348015610c0757600080fd5b506104ba610c16366004614bff565b6129c5565b348015610c2757600080fd5b50610c3b610c36366004615025565b6129d5565b60405161042a929190615066565b348015610c5557600080fd5b5061050e610c6436600461508a565b612a49565b348015610c7557600080fd5b50610420610c84366004615126565b612a7e565b348015610c9557600080fd5b50610420612ac8565b348015610caa57600080fd5b50610cb3612e9f565b60405161042a919061515f565b348015610ccc57600080fd5b50610420603a5481565b348015610ce257600080fd5b5061050e610cf1366004614c18565b613164565b348015610d0257600080fd5b50604454604554610d1a916001600160a01b03169082565b604080516001600160a01b03909316835260208301919091520161042a565b348015610d4557600080fd5b5061050e610d54366004615197565b6131e1565b348015610d6557600080fd5b5061048a610d74366004614c18565b603c6020526000908152604090205460ff1681565b348015610d9557600080fd5b5061050e610da436600461526b565b613335565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace038054606091600080516020615afe83398151915291610de8906152da565b80601f0160208091040260200160405190810160405280929190818152602001828054610e14906152da565b8015610e615780601f10610e3657610100808354040283529160200191610e61565b820191906000526020600020905b815481529060010190602001808311610e4457829003601f168201915b505050505091505090565b600033610e7a8185856137fe565b60019150505b92915050565b603d8181548110610e9657600080fd5b6000918252602090912001546001600160a01b0316905081565b603b546001600160a01b03163314610edb57604051632e50a17560e01b815260040160405180910390fd5b6001600160a01b0381166000908152603e602052604090205460ff1615610f1557604051630c1b405960e11b815260040160405180910390fd5b6001600160a01b0381166000818152603e60209081526040808320805460ff19166001908117909155603f805491820181559093527fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58fd90920180546001600160a01b0319168417905590519182527f2f5b56c7fc99118d37dd7598918d9983e00c2f52eb3d1910ae0f255ad15b555a91015b60405180910390a150565b6000610fbc61380b565b610fc4613843565b82600003610fe55760405163078e1d8560e01b815260040160405180910390fd5b6000610ffd600080516020615b1e8339815191525490565b90508060000361101b5761101664e8d4a5100085615324565b61102d565b61102d8482611028612ac8565b613874565b91508282101561104f5760405162f1a34760e11b815260040160405180910390fd5b61105933836138bd565b603354611071906001600160a01b03163330876138f3565b7f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff3383866040516110a49392919061533b565b60405180910390a150610e806001600080516020615b7e83398151915255565b603f8181548110610e9657600080fd5b6000336110e2858285613974565b6110ed8585856139c1565b60019150505b9392505050565b611102613a20565b60458190556040518181527f58029641ec338b39b9ccff684dbeaa6a1a5c657c0b11d239a0eade87f7508a4990602001610fa7565b603b546001600160a01b0316331461116257604051632e50a17560e01b815260040160405180910390fd5b6001600160a01b0381166000908152603e602052604090205460ff1661119e576040516001627aa61d60e11b0319815260040160405180910390fd5b603f5460005b818110156112f857826001600160a01b0316603f82815481106111c9576111c961535c565b6000918252602090912001546001600160a01b0316036112e657603f6111f0600184615372565b815481106112005761120061535c565b600091825260209091200154603f80546001600160a01b03909216918390811061122c5761122c61535c565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550603f80548061126b5761126b615385565b60008281526020808220600019908401810180546001600160a01b03191690559092019092556001600160a01b038516808352603e8252604092839020805460ff1916905591519182527f6ac157702af525b8810c63fb4caa2cf63cdd05059bdfc1a7a69aa2e7197e9a2591015b60405180910390a1505050565b806112f08161539b565b9150506111a4565b505050565b611305613a20565b60008181526035602052604090205460ff161561133557604051631c657a6960e11b815260040160405180910390fd5b600081815260356020526040808220805460ff191660019081179091556034805491820181559092527f46bddb1178e94d7f2892ff5f366840eb658911794f2c3a44c450aa2c505186c1909101829055517f4fc9d5acc453e78e01b205af5788a1c62f195c4b5cdc8eb8f1c670863b7e736a90610fa79083815260200190565b6060604180548060200260200160405190810160405280929190818152602001828054801561140d57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ef575b5050505050905090565b6001600160a01b03808716600090815260426020908152604080832060030154815163313ce56760e01b815291519394859489948b94939092169263313ce5679260048083019391928290030181865afa158015611479573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149d91906153c5565b6114a890600a6154c4565b85876114b38d611624565b60008d136114c9576114c48d6154d3565b6114cb565b8c5b6114d59190615324565b6114df9190615324565b6114e99190615324565b6114f39190615505565b6114fd9190615505565b6115079190615505565b9050600087126115175780611520565b611520816154d3565b98975050505050505050565b611534613a20565b61153c613a85565b565b603b546001600160a01b0316331461156957604051632e50a17560e01b815260040160405180910390fd5b61157281613adf565b50565b61157d613cc4565b61158682613d69565b6115908282613d94565b5050565b6000806115ad600080516020615b1e8339815191525490565b9050801561160157808311156115d657604051638c88122d60e01b815260040160405180910390fd5b806115df612ac8565b6115e99085615324565b6115f39190615505565b91506115fe82613e51565b91505b50919050565b6000611611613e78565b50600080516020615b3e83398151915290565b6001600160a01b03808216600090815260426020526040808220600301548151633fabe5a360e21b81529151929384938493929091169163feaf968c9160048083019260a09291908290030181865afa158015611685573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a99190615533565b506001600160a01b03881660009081526042602052604090206004015492955093509091506116da90508242615372565b11156116f9576040516319d053db60e11b815260040160405180910390fd5b5092915050565b603b546001600160a01b0316331461172b57604051632e50a17560e01b815260040160405180910390fd5b6001600160a01b0381166000908152603c602052604090205460ff1661176457604051636042954160e01b815260040160405180910390fd5b603d5460005b818110156112f857826001600160a01b0316603d828154811061178f5761178f61535c565b6000918252602090912001546001600160a01b0316036118a357603d6117b6600184615372565b815481106117c6576117c661535c565b600091825260209091200154603d80546001600160a01b0390921691839081106117f2576117f261535c565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550603d80548061183157611831615385565b60008281526020808220600019908401810180546001600160a01b03191690559092019092556001600160a01b038516808352603c8252604092839020805460ff1916905591519182527f09443fc4fa9f38ce51944d7db4f773a5ffb81b85d76c7119b37194b3d831256791016112d9565b806118ad8161539b565b91505061176a565b603b546001600160a01b031633146118e057604051632e50a17560e01b815260040160405180910390fd5b6001600160a01b0381166119075760405163d92e233d60e01b815260040160405180910390fd5b603b80546001600160a01b0319166001600160a01b0392909216919091179055565b603b546001600160a01b0316331461195457604051632e50a17560e01b815260040160405180910390fd5b60008181526035602052604090205460ff16611983576040516344ac282d60e01b815260040160405180910390fd5b60345460005b818110156112f85782603482815481106119a5576119a561535c565b906000526020600020015403611a6a5760346119c2600184615372565b815481106119d2576119d261535c565b9060005260206000200154603482815481106119f0576119f061535c565b6000918252602090912001556034805480611a0d57611a0d615385565b60008281526020808220600019908401810183905590920190925584825260358152604091829020805460ff1916905590518481527f07015631cff457b5b13492c2045e70c6305a0a4aa773e432e79abbe2cf52c1eb91016112d9565b80611a748161539b565b915050611989565b611a84613a20565b61153c6000613ec1565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611ad35750825b90506000826001600160401b03166001148015611aef5750303b155b905081158015611afd575080155b15611b1b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611b4557845460ff60401b1916600160401b1785555b6001600160a01b038e161580611b6257506001600160a01b038f16155b80611b7457506001600160a01b038d16155b80611b8657506001600160a01b038c16155b80611b9857506001600160a01b038b16155b15611bb65760405163d92e233d60e01b815260040160405180910390fd5b611bbe613f11565b611bc6613f19565b611bce613f29565b611c418a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b9081908401838280828437600092019190915250613f3992505050565b611c49613f4b565b8e603860006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d603760006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c603660006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b603360006101000a8154816001600160a01b0302191690836001600160a01b031602179055506060306001600160a01b0316901b60001b603281905550611d066064613f5b565b603b80546001600160a01b0319166001600160a01b038816179055611d2b60006112fd565b611d3560026112fd565b611d3f60046112fd565b611d49605d6112fd565b611d546127116112fd565b6040805160a08101825260008082526020820181905291810191909152731bb8f2df000553e5af2aed5c42fed3a73cd5144b606082015262015888608082015273deaddeaddeaddeaddeaddeaddeaddeaddead11119073cabae6f6ea1ecab08ad02fe02ce9a44f09aebfa290611dcb908f90613fb3565b611e1e826040518060a0016040528060008152602001605d81526020016004815260200173fc34806fbd673c21c1aec26d69aa247f1e69a2c66001600160a01b0316815260200162015888815250613fb3565b611e72816040518060a00160405280600081526020016127118152602001600281526020017376a495b0bffb53ef3f0e94ef0763e03ce410835c6001600160a01b0316815260200162015888815250613fb3565b603380546001600160a01b039081166000908152603c60209081526040808320805460ff191660019081179091558554603d80549283018155909452600080516020615bbe8339815191520180546001600160a01b031916938516939093179092559254905191168152600080516020615b9e833981519152910160405180910390a16001600160a01b0382166000818152603c60209081526040808320805460ff19166001908117909155603d80549182018155909352600080516020615bbe83398151915290920180546001600160a01b031916841790559051918252600080516020615b9e833981519152910160405180910390a16001600160a01b0381166000818152603c60209081526040808320805460ff19166001908117909155603d80549182018155909352600080516020615bbe83398151915290920180546001600160a01b031916841790559051918252600080516020615b9e833981519152910160405180910390a1603680546001600160a01b039081166000908152603c60209081526040808320805460ff191660019081179091558554603d80549283018155909452600080516020615bbe8339815191520180546001600160a01b031916938516939093179092559254905191168152600080516020615b9e833981519152910160405180910390a1603e60209081527fcf1a2204a6276a63ab3d118fb5a6c47dbddcb875f714a5ccafac428b169a499b805460ff19166001908117909155603f805491820181556000527fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58fd0180546001600160a01b03191673c6f7a7ba5388bfb5774bfaa87d350b7793fd9ef190811790915560405181815290917f2f5b56c7fc99118d37dd7598918d9983e00c2f52eb3d1910ae0f255ad15b555a910160405180910390a161270b60405561212f8e613ec1565b505050831561217857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050505050565b612191613a20565b61153c6140cc565b603b546001600160a01b031633146121c457604051632e50a17560e01b815260040160405180910390fd5b6040818155518181527f9ff241d1f1e0c30788ac08c45391c423cc5ef3e67f66a46b95a9a8f394759f3690602001610fa7565b603b546001600160a01b0316331461222257604051632e50a17560e01b815260040160405180910390fd5b6001600160a01b0381166000908152603c602052604090205460ff161561225c57604051636defa31b60e01b815260040160405180910390fd5b6001600160a01b0381166000818152603c60209081526040808320805460ff19166001908117909155603d80549182018155909352600080516020615bbe83398151915290920180546001600160a01b031916841790559051918252600080516020615b9e8339815191529101610fa7565b6122d6613a20565b8215806122e35750828114155b156123015760405163251f56a160e21b815260040160405180910390fd5b60005b838110156126bb57603c60008686848181106123225761232261535c565b90506020020160208101906123379190614c18565b6001600160a01b0316815260208101919091526040016000205460ff1661237157604051636042954160e01b815260040160405180910390fd5b604260008686848181106123875761238761535c565b905060200201602081019061239c9190614c18565b6001600160a01b031681526020810191909152604001600020600401541580159061246c575063095ea7b360e01b8383838181106123dc576123dc61535c565b90506020028101906123ee9190615583565b6123fd916004916000916155c9565b612406916155f3565b6001600160e01b03191614158061246c57506036546001600160a01b03168383838181106124365761243661535c565b90506020028101906124489190615583565b612457916024916004916155c9565b61246091615623565b6001600160a01b031614155b1561248a5760405163a9c320f160e01b815260040160405180910390fd5b6036546001600160a01b03168585838181106124a8576124a861535c565b90506020020160208101906124bd9190614c18565b6001600160a01b03161480156125f6575063730276cf60e11b8383838181106124e8576124e861535c565b90506020028101906124fa9190615583565b612509916004916000916155c9565b612512916155f3565b6001600160e01b0319161480156125f6575060028383838181106125385761253861535c565b905060200281019061254a9190615583565b612559916045916044916155c9565b61256291615657565b60f81c601581111561257657612576615641565b601581111561258757612587615641565b141580156125f6575060138383838181106125a4576125a461535c565b90506020028101906125b69190615583565b6125c5916045916044916155c9565b6125ce91615657565b60f81c60158111156125e2576125e2615641565b60158111156125f3576125f3615641565b14155b156126145760405163a9c320f160e01b815260040160405180910390fd5b6126a88383838181106126295761262961535c565b905060200281019061263b9190615583565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508992508891508590508181106126845761268461535c565b90506020020160208101906126999190614c18565b6001600160a01b031690614115565b50806126b38161539b565b915050612304565b5050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace048054606091600080516020615afe83398151915291610de8906152da565b60008061271a600080516020615b1e8339815191525490565b905080600003612733576115fe64e8d4a5100084615324565b6115fe8361274d600080516020615b1e8339815191525490565b611028612ac8565b61275d613a20565b603a8054600090915560335460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156127b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115909190615685565b600033610e7a8185856139c1565b6127f1613a20565b61157281613f5b565b600061280461380b565b61280c613843565b8260000361282d576040516325ee753160e21b815260040160405180910390fd5b61284e83612839612ac8565b600080516020615b1e83398151915254614123565b9050806000036128715760405163136ed66560e11b815260040160405180910390fd5b61287b33846141d1565b61288481614207565b61288d81613e51565b9050818110156128b0576040516345d4c5ab60e01b815260040160405180910390fd5b6033546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa1580156128f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061291c91906156a7565b101561293b57604051631f490fd160e11b815260040160405180910390fd5b603354612952906001600160a01b0316338361423b565b7f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f3384836040516129859392919061533b565b60405180910390a1610e806001600080516020615b7e83398151915255565b603481815481106129b457600080fd5b600091825260209091200154905081565b60418181548110610e9657600080fd5b60006060838360008181106129ec576129ec61535c565b919091013560f81c9050612a0384600181886155c9565b81818080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525095975091955050505050505b9250929050565b603b546001600160a01b03163314612a7457604051632e50a17560e01b815260040160405180910390fd5b6115908282613fb3565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6033546000908190612ae2906001600160a01b0316611624565b90506000603360009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b5d91906153c5565b612b6890600a6154c4565b6033546001600160a01b03908116600090815260426020908152604080832060030154815163313ce56760e01b815291519596509294929093169263313ce56792600480830193928290030181865afa158015612bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bed91906153c5565b612bf890600a6154c4565b905060006034805480602002602001604051908101604052809291908181526020018280548015612c4857602002820191906000526020600020905b815481526020019060010190808311612c34575b505050505090506000612c59612e9f565b90506000805b8351811015612e58576000848281518110612c7c57612c7c61535c565b60200260200101519050600281612c9391906156c0565b63ffffffff16158015612cab575063ffffffff811615155b15612ccb57612cba818861426c565b612cc490846156e3565b9250612e45565b63ffffffff8116600090815260436020908152604080832054815163313ce56760e01b815291516001600160a01b039091169392849263313ce56792600480830193928290030181865afa158015612d27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d4b91906153c5565b612d5690600a6154c4565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038416906370a0823190602401602060405180830381865afa158015612da0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dc491906156a7565b6001600160a01b03841660009081526042602052604090205488518991908110612df057612df061535c565b6020026020010151612e02868561430d565b612e0c91906156e3565b612e1691906156e3565b905063ffffffff841615612e3557612e328382848e8e8e611417565b90505b612e3f81876156e3565b95505050505b5080612e508161539b565b915050612c5f565b506000811215612e7a57604051624de0ed60e41b815260040160405180910390fd5b809650603a548710612e9657603a54612e939088615372565b96505b50505050505090565b6041546060906001600160401b03811115612ebc57612ebc614d31565b604051908082528060200260200182016040528015612ee5578160200160208202803683370190505b506036546040516377292a9360e11b815260006004820181905292935082916001600160a01b03169063ee52552690602401600060405180830381865afa158015612f34573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f5c919081019061575f565b90935091508290505b816001600160401b0316816001600160401b0316101561315e576036546040516377292a9360e11b81526001600160401b03831660048201526000916001600160a01b03169063ee52552690602401600060405180830381865afa158015612fd1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612ff9919081019061575f565b505060208101519091506001600160a01b03163014613018575061314c565b604080820151905163dae029d360e01b81526000918291309163dae029d3916130449190600401614b9b565b600060405180830381865afa158015613061573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130899190810190615811565b909250905060001960ff831601613148576000818060200190518101906130b0919061585e565b60208082015163ffffffff166000908152604390915260409020549091506001600160a01b0316806130e657505050505061314c565b81604001516001600160801b03168960426000846001600160a01b03166001600160a01b03168152602001908152602001600020600001548151811061312e5761312e61535c565b6020026020010181815161314291906158be565b90525050505b5050505b80613156816158d1565b915050612f65565b50505090565b61316c613a20565b6001600160a01b0381166131d85760405162461bcd60e51b815260206004820152602860248201527f4f776e61626c653a206e6577206d616e6167657220697320746865207a65726f604482015267206164647265737360c01b60648201526084015b60405180910390fd5b61157281613ec1565b6044546001600160a01b0385811691161461320f5760405163dfde867160e01b815260040160405180910390fd5b6001600160a01b03831660009081526046602052604081205481906132349085615372565b6001600160a01b03861660009081526046602090815260409182902087905560455491516bffffffffffffffffffffffff1960608b811b8216938301939093529189901b9091166034820152604881018790529093509091506132b39084908490606801604051602081830303815290604052805190602001206143a4565b6132d0576040516309bde33960e01b815260040160405180910390fd5b801561332d576132ea6001600160a01b038716868361423b565b604080516001600160a01b0387168152602081018390527fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a910160405180910390a15b505050505050565b61333d613a20565b6001600160a01b0385166000908152603e602052604090205460ff16613379576040516001627aa61d60e11b0319815260040160405180910390fd5b600060418054806020026020016040519081016040528092919081815260200182805480156133d157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116133b3575b5050505050905060006041805490506001600160401b038111156133f7576133f7614d31565b604051908082528060200260200182016040528015613420578160200160208202803683370190505b50905060005b82518110156134e4578281815181106134415761344161535c565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613491573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134b591906156a7565b8282815181106134c7576134c761535c565b6020908102919091010152806134dc8161539b565b915050613426565b5060006134ef612ac8565b90506135056001600160a01b03861689866143ba565b6135458888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061411592505050565b5061355b6001600160a01b0386168960006143ba565b600083516001600160401b0381111561357657613576614d31565b60405190808252806020026020018201604052801561359f578160200160208202803683370190505b50905060005b8451811015613663578481815181106135c0576135c061535c565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613610573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061363491906156a7565b8282815181106136465761364661535c565b60209081029190910101528061365b8161539b565b9150506135a5565b50600061366e612ac8565b6040549091508361368183612710615324565b61368b9190615505565b10156136aa57604051637f30c97b60e11b815260040160405180910390fd5b60008060005b8751811015613766578681815181106136cb576136cb61535c565b60200260200101518582815181106136e5576136e561535c565b60200260200101511115613754578781815181106137055761370561535c565b602002602001015192508681815181106137215761372161535c565b602002602001015185828151811061373b5761373b61535c565b602002602001015161374d9190615372565b9150613766565b8061375e8161539b565b9150506136b0565b506001600160a01b038216158061377b575080155b1561379957604051635b295cef60e11b815260040160405180910390fd5b604080516001600160a01b038b81168252602082018b90528416818301526060810183905242608082015290517fd83a63a0ebf8fb6a344f0e3dc86dfc975e6009f82e455acc6622cc3fd7c5928d9181900360a00190a1505050505050505050505050565b6112f8838383600161444a565b600080516020615b7e83398151915280546001190161383d57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b600080516020615b5e8339815191525460ff161561153c5760405163d93c066560e01b815260040160405180910390fd5b6000613881848484614123565b905060008280613893576138936154ef565b84860911156110f35760001981106138aa57600080fd5b806138b48161539b565b95945050505050565b6001600160a01b0382166138e75760405163ec442f0560e01b8152600060048201526024016131cf565b61159060008383614531565b6040516001600160a01b03848116602483015283811660448301526064820183905261395a9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061465c565b50505050565b6001600080516020615b7e83398151915255565b60006139808484612a7e565b9050600019811461395a57818110156139b257828183604051637dc7a0d960e11b81526004016131cf9392919061533b565b61395a8484848403600061444a565b6001600160a01b0383166139eb57604051634b637e8f60e11b8152600060048201526024016131cf565b6001600160a01b038216613a155760405163ec442f0560e01b8152600060048201526024016131cf565b6112f8838383614531565b6000546001600160a01b0316331461153c5760405162461bcd60e51b815260206004820152602260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206d616e616760448201526132b960f11b60648201526084016131cf565b613a8d6146bf565b600080516020615b5e833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b039091168152602001610fa7565b6001600160a01b0381166000908152604260205260408120600201549003613b1a57604051630267437760e61b815260040160405180910390fd5b6001600160a01b038116600081815260426020818152604080842060018101805486526043845291852080546001600160a01b031990811690915595855292909152828255829055600281018290556003810180549093169092556004909101819055604154905b81811015613c8257826001600160a01b031660418281548110613ba757613ba761535c565b6000918252602090912001546001600160a01b031603613c70576041613bce600184615372565b81548110613bde57613bde61535c565b600091825260209091200154604180546001600160a01b039092169183908110613c0a57613c0a61535c565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506041805480613c4957613c49615385565b600082815260209020810160001990810180546001600160a01b0319169055019055613c82565b80613c7a8161539b565b915050613b82565b506040516001600160a01b03831681527f37803e2125c48ee96c38ddf04e826daf335b0e1603579040fd275aba6d06b6fc906020015b60405180910390a15050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480613d4b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316613d3f600080516020615b3e833981519152546001600160a01b031690565b6001600160a01b031614155b1561153c5760405163703e46dd60e11b815260040160405180910390fd5b603b546001600160a01b0316331461157257604051632e50a17560e01b815260040160405180910390fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613dee575060408051601f3d908101601f19168201909252613deb918101906156a7565b60015b613e1657604051634c9c8ce360e01b81526001600160a01b03831660048201526024016131cf565b600080516020615b3e8339815191528114613e4757604051632a87526960e21b8152600481018290526024016131cf565b6112f883836146ef565b600061271060395483613e649190615324565b613e6e9190615505565b610e809083615372565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461153c5760405163703e46dd60e11b815260040160405180910390fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61153c614745565b613f21614745565b61153c61478e565b613f31614745565b61153c614796565b613f41614745565b61159082826147a7565b613f53614745565b61153c6147f8565b6103e8811115613f7e576040516313f90f0b60e31b815260040160405180910390fd5b60398190556040518181527fa9e08e7e67b07c41209d7b236abaaa1ac69829d51909f3b7ec7b0d6337f6196b90602001610fa7565b6001600160a01b03821660009081526042602052604090206002015415613fed57604051635ed2680160e01b815260040160405180910390fd5b6041805482526001600160a01b03838116600081815260426020908152604080832087518155828801516001808301829055838a0151600284015560608a0151600384018054919099166001600160a01b03199182161790985560808a0151600490930192909255845260438352818420805487168617905586549081018755959092527f7c9785e8241615bc80415d89775984a1337d15dc1bf4ce50f41988b2a2b336a79094018054909316821790925590519081527f0e3c58ebfb2e7465fbb1c32e6b4f40c3c4f5ca77e8218a386aff8617831260d79101613cb8565b6140d4613843565b600080516020615b5e833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833613ac7565b60606110f383836000614819565b600080806000198587098587029250828110838203039150508060000361415c576000841161415157600080fd5b5082900490506110f3565b80841161416857600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b0382166141fb57604051634b637e8f60e11b8152600060048201526024016131cf565b61159082600083614531565b612710603954826142189190615324565b6142229190615505565b603a600082825461423391906158be565b909155505050565b6040516001600160a01b038381166024830152604482018390526112f891859182169063a9059cbb90606401613928565b603754603254604051631769225f60e01b815263ffffffff851660048201526024810191909152600091670de0b6b3a76400009184916001600160a01b031690631769225f90604401602060405180830381865afa1580156142d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142f69190615909565b600f0b6143039190615924565b6110f39190615954565b603854603254604051637c1e148760e01b815263ffffffff851660048201526024810191909152600091670de0b6b3a76400009184916001600160a01b031690637c1e1487906044016040805180830381865afa158015614372573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143969190615982565b516143039190600f0b615924565b6000826143b185846148b6565b14949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261440b8482614903565b61395a576040516001600160a01b0384811660248301526000604483015261444091869182169063095ea7b390606401613928565b61395a848261465c565b600080516020615afe8339815191526001600160a01b0385166144835760405163e602df0560e01b8152600060048201526024016131cf565b6001600160a01b0384166144ad57604051634a1406b160e11b8152600060048201526024016131cf565b6001600160a01b038086166000908152600183016020908152604080832093881683529290522083905581156126bb57836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161452291815260200190565b60405180910390a35050505050565b600080516020615afe8339815191526001600160a01b03841661456d578181600201600082825461456291906158be565b909155506145cc9050565b6001600160a01b038416600090815260208290526040902054828110156145ad5784818460405163391434e360e21b81526004016131cf9392919061533b565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b0383166145ea576002810180548390039055614609565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161464e91815260200190565b60405180910390a350505050565b60006146716001600160a01b03841683614115565b905080516000141580156146965750808060200190518101906146949190615685565b155b156112f857604051635274afe760e01b81526001600160a01b03841660048201526024016131cf565b600080516020615b5e8339815191525460ff1661153c57604051638dfc202b60e01b815260040160405180910390fd5b6146f8826149a6565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561473d576112f88282614a0b565b611590614a78565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661153c57604051631afcd79f60e31b815260040160405180910390fd5b613960614745565b61479e614745565b61153c33613ec1565b6147af614745565b600080516020615afe8339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036147e98482615a22565b506004810161395a8382615a22565b614800614745565b600080516020615b5e833981519152805460ff19169055565b60608147101561483e5760405163cd78605960e01b81523060048201526024016131cf565b600080856001600160a01b0316848660405161485a9190615ae1565b60006040518083038185875af1925050503d8060008114614897576040519150601f19603f3d011682016040523d82523d6000602084013e61489c565b606091505b50915091506148ac868383614a97565b9695505050505050565b600081815b84518110156148fb576148e7828683815181106148da576148da61535c565b6020026020010151614af3565b9150806148f38161539b565b9150506148bb565b509392505050565b6000806000846001600160a01b0316846040516149209190615ae1565b6000604051808303816000865af19150503d806000811461495d576040519150601f19603f3d011682016040523d82523d6000602084013e614962565b606091505b509150915081801561498c57508051158061498c57508080602001905181019061498c9190615685565b80156138b45750505050506001600160a01b03163b151590565b806001600160a01b03163b6000036149dc57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016131cf565b600080516020615b3e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051614a289190615ae1565b600060405180830381855af49150503d8060008114614a63576040519150601f19603f3d011682016040523d82523d6000602084013e614a68565b606091505b50915091506138b4858383614a97565b341561153c5760405163b398979f60e01b815260040160405180910390fd5b606082614aac57614aa782614b22565b6110f3565b8151158015614ac357506001600160a01b0384163b155b15614aec57604051639996b31560e01b81526001600160a01b03851660048201526024016131cf565b50806110f3565b6000818310614b0f5760008281526020849052604090206110f3565b60008381526020839052604090206110f3565b805115614b325780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60005b83811015614b66578181015183820152602001614b4e565b50506000910152565b60008151808452614b87816020860160208601614b4b565b601f01601f19169290920160200192915050565b6020815260006110f36020830184614b6f565b6001600160a01b038116811461157257600080fd5b8035614bce81614bae565b919050565b60008060408385031215614be657600080fd5b8235614bf181614bae565b946020939093013593505050565b600060208284031215614c1157600080fd5b5035919050565b600060208284031215614c2a57600080fd5b81356110f381614bae565b60008060408385031215614c4857600080fd5b50508035926020909101359150565b600080600060608486031215614c6c57600080fd5b8335614c7781614bae565b92506020840135614c8781614bae565b929592945050506040919091013590565b6020808252825182820181905260009190848201906040850190845b81811015614cd95783516001600160a01b031683529284019291840191600101614cb4565b50909695505050505050565b60008060008060008060c08789031215614cfe57600080fd5b8635614d0981614bae565b9860208801359850604088013597606081013597506080810135965060a00135945092505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614d6957614d69614d31565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614d9757614d97614d31565b604052919050565b60006001600160401b03821115614db857614db8614d31565b50601f01601f191660200190565b60008060408385031215614dd957600080fd5b8235614de481614bae565b915060208301356001600160401b03811115614dff57600080fd5b8301601f81018513614e1057600080fd5b8035614e23614e1e82614d9f565b614d6f565b818152866020838501011115614e3857600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f840112614e6a57600080fd5b5081356001600160401b03811115614e8157600080fd5b602083019150836020828501011115612a4257600080fd5b6000806000806000806000806000806101008b8d031215614eb957600080fd5b8a35614ec481614bae565b995060208b0135614ed481614bae565b985060408b0135614ee481614bae565b975060608b0135614ef481614bae565b965060808b0135614f0481614bae565b955060a08b01356001600160401b0380821115614f2057600080fd5b614f2c8e838f01614e58565b909750955060c08d0135915080821115614f4557600080fd5b50614f528d828e01614e58565b9094509250614f65905060e08c01614bc3565b90509295989b9194979a5092959850565b60008083601f840112614f8857600080fd5b5081356001600160401b03811115614f9f57600080fd5b6020830191508360208260051b8501011115612a4257600080fd5b60008060008060408587031215614fd057600080fd5b84356001600160401b0380821115614fe757600080fd5b614ff388838901614f76565b9096509450602087013591508082111561500c57600080fd5b5061501987828801614f76565b95989497509550505050565b6000806020838503121561503857600080fd5b82356001600160401b0381111561504e57600080fd5b61505a85828601614e58565b90969095509350505050565b60ff831681526040602082015260006150826040830184614b6f565b949350505050565b60008082840360c081121561509e57600080fd5b83356150a981614bae565b925060a0601f19820112156150bd57600080fd5b5060405160a081018181106001600160401b03821117156150e0576150e0614d31565b8060405250602084013581526040840135602082015260608401356040820152608084013561510e81614bae565b606082015260a0939093013560808401525092909150565b6000806040838503121561513957600080fd5b823561514481614bae565b9150602083013561515481614bae565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b81811015614cd95783518352928401929184019160010161517b565b600080600080608085870312156151ad57600080fd5b84356151b881614bae565b93506020858101356151c981614bae565b93506040860135925060608601356001600160401b03808211156151ec57600080fd5b818801915088601f83011261520057600080fd5b81358181111561521257615212614d31565b8060051b9150615223848301614d6f565b818152918301840191848101908b84111561523d57600080fd5b938501935b8385101561525b57843582529385019390850190615242565b989b979a50959850505050505050565b60008060008060006080868803121561528357600080fd5b853561528e81614bae565b945060208601356001600160401b038111156152a957600080fd5b6152b588828901614e58565b90955093505060408601356152c981614bae565b949793965091946060013592915050565b600181811c908216806152ee57607f821691505b60208210810361160157634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610e8057610e8061530e565b6001600160a01b039390931683526020830191909152604082015260600190565b634e487b7160e01b600052603260045260246000fd5b81810381811115610e8057610e8061530e565b634e487b7160e01b600052603160045260246000fd5b6000600182016153ad576153ad61530e565b5060010190565b805160ff81168114614bce57600080fd5b6000602082840312156153d757600080fd5b6110f3826153b4565b600181815b8085111561541b5781600019048211156154015761540161530e565b8085161561540e57918102915b93841c93908002906153e5565b509250929050565b60008261543257506001610e80565b8161543f57506000610e80565b8160018114615455576002811461545f5761547b565b6001915050610e80565b60ff8411156154705761547061530e565b50506001821b610e80565b5060208310610133831016604e8410600b841016171561549e575081810a610e80565b6154a883836153e0565b80600019048211156154bc576154bc61530e565b029392505050565b60006110f360ff841683615423565b6000600160ff1b82016154e8576154e861530e565b5060000390565b634e487b7160e01b600052601260045260246000fd5b600082615514576155146154ef565b500490565b805169ffffffffffffffffffff81168114614bce57600080fd5b600080600080600060a0868803121561554b57600080fd5b61555486615519565b945060208601519350604086015192506060860151915061557760808701615519565b90509295509295909350565b6000808335601e1984360301811261559a57600080fd5b8301803591506001600160401b038211156155b457600080fd5b602001915036819003821315612a4257600080fd5b600080858511156155d957600080fd5b838611156155e657600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561561b5780818660040360031b1b83161692505b505092915050565b80356020831015610e8057600019602084900360031b1b1692915050565b634e487b7160e01b600052602160045260246000fd5b6001600160f81b0319813581811691600185101561561b5760019490940360031b84901b1690921692915050565b60006020828403121561569757600080fd5b815180151581146110f357600080fd5b6000602082840312156156b957600080fd5b5051919050565b600063ffffffff808416806156d7576156d76154ef565b92169190910692915050565b808201828112600083128015821682158216171561561b5761561b61530e565b80516001600160401b0381168114614bce57600080fd5b600082601f83011261572b57600080fd5b8151615739614e1e82614d9f565b81815284602083860101111561574e57600080fd5b615082826020830160208701614b4b565b60008060006060848603121561577457600080fd5b83516001600160401b038082111561578b57600080fd5b908501906060828803121561579f57600080fd5b6157a7614d47565b6157b083615703565b815260208301516157c081614bae565b60208201526040830151828111156157d757600080fd5b6157e38982860161571a565b60408301525094506157fa91505060208501615703565b915061580860408501615703565b90509250925092565b6000806040838503121561582457600080fd5b61582d836153b4565b915060208301516001600160401b0381111561584857600080fd5b6158548582860161571a565b9150509250929050565b60006060828403121561587057600080fd5b615878614d47565b82518152602083015163ffffffff8116811461589357600080fd5b602082015260408301516001600160801b03811681146158b257600080fd5b60408201529392505050565b80820180821115610e8057610e8061530e565b60006001600160401b038083168181036158ed576158ed61530e565b6001019392505050565b8051600f81900b8114614bce57600080fd5b60006020828403121561591b57600080fd5b6110f3826158f7565b80820260008212600160ff1b841416156159405761594061530e565b8181058314821517610e8057610e8061530e565b600082615963576159636154ef565b600160ff1b82146000198414161561597d5761597d61530e565b500590565b60006040828403121561599457600080fd5b604051604081018181106001600160401b03821117156159b6576159b6614d31565b6040526159c2836158f7565b81526159d0602084016158f7565b60208201529392505050565b601f8211156112f857600081815260208120601f850160051c81016020861015615a035750805b601f850160051c820191505b8181101561332d57828155600101615a0f565b81516001600160401b03811115615a3b57615a3b614d31565b615a4f81615a4984546152da565b846159dc565b602080601f831160018114615a845760008415615a6c5750858301515b600019600386901b1c1916600185901b17855561332d565b600085815260208120601f198616915b82811015615ab357888601518255948401946001909101908401615a94565b5085821015615ad15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251615af3818460208701614b4b565b919091019291505056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbccd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0038f93ca08e8d463039d585b8620dd25bb2361ec8f8ddb9d2f1d81c87c7bf02c9ece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3a26469706673582212206c1d0ed49e87a7d6c7b328dad3bfdb8f50fc886b0b8553b5c9472631c8ea9afe64736f6c63430008140033