[ { "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": "pure", "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" } ]
60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051615c196200010460003960008181613cb001528181613cd90152613e640152615c196000f3fe6080604052600436106104055760003560e01c8063601b48a411610213578063af75127411610123578063dd62ed3e116100ab578063f2fde38b1161007a578063f2fde38b14610cd6578063f7567ad714610cf6578063fabed41214610d39578063fb9ed25714610d59578063feb812af14610d8957600080fd5b8063dd62ed3e14610c69578063e2c6743914610c89578063f0b73e1114610c9e578063f26f87ad14610cc057600080fd5b8063c6d03461116100f2578063c6d0346114610bab578063cb51bba914610bdb578063cf35bdd014610bfb578063dae029d314610c1b578063db72287f14610c4957600080fd5b8063af75127414610b1a578063b390c0ab14610b3a578063c0e3c23e14610b5a578063c482ceaf14610b7357600080fd5b8063923e48db116101a6578063a2609a5911610175578063a2609a5914610a7e578063a8fdf8fe14610a93578063a9059cbb14610aa9578063ad3cb1cc14610ac9578063af26974514610afa57600080fd5b8063923e48db14610a095780639369198a14610a2957806395d89b4114610a495780639de2f79614610a5e57600080fd5b8063715018a6116101e2578063715018a61461099f57806373e1ef04146109b45780638456cb59146109d457806389f425e7146109e957600080fd5b8063601b48a4146108f05780636a809bc5146109065780636daabaf71461093c57806370a082311461095c57600080fd5b806335558e9b116103195780634f1ef286116102a15780635595d025116102705780635595d0251461084b5780635c975abb1461086b5780635e280f11146108905780635eb25a94146108b05780635ee95cae146108d057600080fd5b80634f1ef286146107e35780634f54c6a9146107f657806352d1902d14610816578063538e573c1461082b57600080fd5b80633f4ba83a116102e85780633f4ba83a146107405780634440825014610755578063481c6a751461078557806348ba4d2b146107a35780634a5e42b1146107c357600080fd5b806335558e9b1461065a578063384e474e146106de5780633e413bee146107005780633f27be651461072057600080fd5b80631b2ef1ca1161039c5780632931ec161161036b5780632931ec16146105c85780632bd8c8e4146105e85780632eaa9f1c14610608578063313ce5671461061e578063327a48cc1461063a57600080fd5b80631b2ef1ca146105325780631d4794d0146105525780631d6002ff1461057257806323b872dd146105a857600080fd5b80630a39ce02116103d85780630a39ce021461049a5780630bdde706146104d2578063124e993f146104ee57806318160ddd1461051057600080fd5b80630445b6671461040a57806306e1d81b1461043357806306fdde0314610448578063095ea7b31461046a575b600080fd5b34801561041657600080fd5b5061042060405481565b6040519081526020015b60405180910390f35b34801561043f57600080fd5b50604554610420565b34801561045457600080fd5b5061045d610da9565b60405161042a9190614b7c565b34801561047657600080fd5b5061048a610485366004614bb4565b610dc9565b604051901515815260200161042a565b3480156104a657600080fd5b506104ba6104b5366004614be0565b610de3565b6040516001600160a01b03909116815260200161042a565b3480156104de57600080fd5b50610420670de0b6b3a764000081565b3480156104fa57600080fd5b5061050e610509366004614bf9565b610e0d565b005b34801561051c57600080fd5b50600080516020615b2483398151915254610420565b34801561053e57600080fd5b5061042061054d366004614c16565b610f0f565b34801561055e57600080fd5b506104ba61056d366004614be0565b611021565b34801561057e57600080fd5b5061042061058d366004614bf9565b6001600160a01b031660009081526046602052604090205490565b3480156105b457600080fd5b5061048a6105c3366004614c38565b611031565b3480156105d457600080fd5b5061050e6105e3366004614be0565b611057565b3480156105f457600080fd5b5061050e610603366004614bf9565b611094565b34801561061457600080fd5b506104206103e881565b34801561062a57600080fd5b506040516012815260200161042a565b34801561064657600080fd5b5061050e610655366004614be0565b61125a565b34801561066657600080fd5b506106ad610675366004614bf9565b604260205260009081526040902080546001820154600283015460038401546004909401549293919290916001600160a01b03169085565b604080519586526020860194909452928401919091526001600160a01b03166060830152608082015260a00161042a565b3480156106ea57600080fd5b506106f3611312565b60405161042a9190614c79565b34801561070c57600080fd5b506033546104ba906001600160a01b031681565b34801561072c57600080fd5b5061042061073b366004614cc6565b611374565b34801561074c57600080fd5b5061050e611489565b34801561076157600080fd5b5061048a610770366004614be0565b60356020526000908152604090205460ff1681565b34801561079157600080fd5b506000546001600160a01b03166104ba565b3480156107af57600080fd5b506037546104ba906001600160a01b031681565b3480156107cf57600080fd5b5061050e6107de366004614bf9565b61149b565b61050e6107f1366004614da7565b6114d2565b34801561080257600080fd5b50610420610811366004614be0565b6114f1565b34801561082257600080fd5b50610420611564565b34801561083757600080fd5b50610420610846366004614bf9565b611581565b34801561085757600080fd5b5061050e610866366004614bf9565b61165d565b34801561087757600080fd5b50600080516020615b648339815191525460ff1661048a565b34801561089c57600080fd5b506036546104ba906001600160a01b031681565b3480156108bc57600080fd5b5061050e6108cb366004614bf9565b611812565b3480156108dc57600080fd5b5061050e6108eb366004614be0565b611886565b3480156108fc57600080fd5b5061042060395481565b34801561091257600080fd5b506104ba610921366004614be0565b6043602052600090815260409020546001600160a01b031681565b34801561094857600080fd5b506038546104ba906001600160a01b031681565b34801561096857600080fd5b50610420610977366004614bf9565b6001600160a01b03166000908152600080516020615b04833981519152602052604090205490565b3480156109ab57600080fd5b5061050e6119d9565b3480156109c057600080fd5b5061050e6109cf366004614e7a565b6119eb565b3480156109e057600080fd5b5061050e6120e6565b3480156109f557600080fd5b5061050e610a04366004614be0565b6120f6565b348015610a1557600080fd5b5061050e610a24366004614bf9565b612154565b348015610a3557600080fd5b5061050e610a44366004614f9b565b61222b565b348015610a5557600080fd5b5061045d61261f565b348015610a6a57600080fd5b50610420610a79366004614be0565b6126e2565b348015610a8a57600080fd5b5061050e612736565b348015610a9f57600080fd5b5061042060325481565b348015610ab557600080fd5b5061048a610ac4366004614bb4565b6127bc565b348015610ad557600080fd5b5061045d604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610b0657600080fd5b50603b546104ba906001600160a01b031681565b348015610b2657600080fd5b5061050e610b35366004614be0565b6127ca565b348015610b4657600080fd5b50610420610b55366004614c16565b6127db565b348015610b6657600080fd5b5061042064e8d4a5100081565b348015610b7f57600080fd5b5061050e604480546001600160a01b0319167378c1b0c915c4faa5fffa6cabf0219da63d7f4cb8179055565b348015610bb757600080fd5b5061048a610bc6366004614bf9565b603e6020526000908152604090205460ff1681565b348015610be757600080fd5b50610420610bf6366004614be0565b612985565b348015610c0757600080fd5b506104ba610c16366004614be0565b6129a6565b348015610c2757600080fd5b50610c3b610c36366004615006565b6129b6565b60405161042a929190615047565b348015610c5557600080fd5b5061050e610c6436600461506b565b612a2a565b348015610c7557600080fd5b50610420610c84366004615107565b612a5f565b348015610c9557600080fd5b50610420612aa9565b348015610caa57600080fd5b50610cb3612e80565b60405161042a9190615140565b348015610ccc57600080fd5b50610420603a5481565b348015610ce257600080fd5b5061050e610cf1366004614bf9565b613145565b348015610d0257600080fd5b50604454604554610d1a916001600160a01b03169082565b604080516001600160a01b03909316835260208301919091520161042a565b348015610d4557600080fd5b5061050e610d54366004615178565b6131c2565b348015610d6557600080fd5b5061048a610d74366004614bf9565b603c6020526000908152604090205460ff1681565b348015610d9557600080fd5b5061050e610da436600461524c565b613316565b6060604051806060016040528060258152602001615adf60259139905090565b600033610dd78185856137df565b60019150505b92915050565b603d8181548110610df357600080fd5b6000918252602090912001546001600160a01b0316905081565b603b546001600160a01b03163314610e3857604051632e50a17560e01b815260040160405180910390fd5b6001600160a01b0381166000908152603e602052604090205460ff1615610e7257604051630c1b405960e11b815260040160405180910390fd5b6001600160a01b0381166000818152603e60209081526040808320805460ff19166001908117909155603f805491820181559093527fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58fd90920180546001600160a01b0319168417905590519182527f2f5b56c7fc99118d37dd7598918d9983e00c2f52eb3d1910ae0f255ad15b555a91015b60405180910390a150565b6000610f196137ec565b610f21613824565b82600003610f425760405163078e1d8560e01b815260040160405180910390fd5b6000610f5a600080516020615b248339815191525490565b905080600003610f7857610f7364e8d4a51000856152d1565b610f8a565b610f8a8482610f85612aa9565b613855565b915082821015610fac5760405162f1a34760e11b815260040160405180910390fd5b610fb6338361389e565b603354610fce906001600160a01b03163330876138d4565b7f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff338386604051611001939291906152e8565b60405180910390a150610ddd6001600080516020615b8483398151915255565b603f8181548110610df357600080fd5b60003361103f858285613955565b61104a8585856139a2565b60019150505b9392505050565b61105f613a01565b60458190556040518181527f58029641ec338b39b9ccff684dbeaa6a1a5c657c0b11d239a0eade87f7508a4990602001610f04565b603b546001600160a01b031633146110bf57604051632e50a17560e01b815260040160405180910390fd5b6001600160a01b0381166000908152603e602052604090205460ff166110fb576040516001627aa61d60e11b0319815260040160405180910390fd5b603f5460005b8181101561125557826001600160a01b0316603f828154811061112657611126615309565b6000918252602090912001546001600160a01b03160361124357603f61114d60018461531f565b8154811061115d5761115d615309565b600091825260209091200154603f80546001600160a01b03909216918390811061118957611189615309565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550603f8054806111c8576111c8615332565b60008281526020808220600019908401810180546001600160a01b03191690559092019092556001600160a01b038516808352603e8252604092839020805460ff1916905591519182527f6ac157702af525b8810c63fb4caa2cf63cdd05059bdfc1a7a69aa2e7197e9a2591015b60405180910390a1505050565b8061124d81615348565b915050611101565b505050565b611262613a01565b60008181526035602052604090205460ff161561129257604051631c657a6960e11b815260040160405180910390fd5b600081815260356020526040808220805460ff191660019081179091556034805491820181559092527f46bddb1178e94d7f2892ff5f366840eb658911794f2c3a44c450aa2c505186c1909101829055517f4fc9d5acc453e78e01b205af5788a1c62f195c4b5cdc8eb8f1c670863b7e736a90610f049083815260200190565b6060604180548060200260200160405190810160405280929190818152602001828054801561136a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161134c575b5050505050905090565b6001600160a01b03808716600090815260426020908152604080832060030154815163313ce56760e01b815291519394859489948b94939092169263313ce5679260048083019391928290030181865afa1580156113d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fa9190615372565b61140590600a615471565b85876114108d611581565b60008d13611426576114218d615480565b611428565b8c5b61143291906152d1565b61143c91906152d1565b61144691906152d1565b61145091906154b2565b61145a91906154b2565b61146491906154b2565b905060008712611474578061147d565b61147d81615480565b98975050505050505050565b611491613a01565b611499613a66565b565b603b546001600160a01b031633146114c657604051632e50a17560e01b815260040160405180910390fd5b6114cf81613ac0565b50565b6114da613ca5565b6114e382613d4a565b6114ed8282613d75565b5050565b60008061150a600080516020615b248339815191525490565b9050801561155e578083111561153357604051638c88122d60e01b815260040160405180910390fd5b8061153c612aa9565b61154690856152d1565b61155091906154b2565b915061155b82613e32565b91505b50919050565b600061156e613e59565b50600080516020615b4483398151915290565b6001600160a01b03808216600090815260426020526040808220600301548151633fabe5a360e21b81529151929384938493929091169163feaf968c9160048083019260a09291908290030181865afa1580156115e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160691906154e0565b506001600160a01b03881660009081526042602052604090206004015492955093509091506116379050824261531f565b1115611656576040516319d053db60e11b815260040160405180910390fd5b5092915050565b603b546001600160a01b0316331461168857604051632e50a17560e01b815260040160405180910390fd5b6001600160a01b0381166000908152603c602052604090205460ff166116c157604051636042954160e01b815260040160405180910390fd5b603d5460005b8181101561125557826001600160a01b0316603d82815481106116ec576116ec615309565b6000918252602090912001546001600160a01b03160361180057603d61171360018461531f565b8154811061172357611723615309565b600091825260209091200154603d80546001600160a01b03909216918390811061174f5761174f615309565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550603d80548061178e5761178e615332565b60008281526020808220600019908401810180546001600160a01b03191690559092019092556001600160a01b038516808352603c8252604092839020805460ff1916905591519182527f09443fc4fa9f38ce51944d7db4f773a5ffb81b85d76c7119b37194b3d83125679101611236565b8061180a81615348565b9150506116c7565b603b546001600160a01b0316331461183d57604051632e50a17560e01b815260040160405180910390fd5b6001600160a01b0381166118645760405163d92e233d60e01b815260040160405180910390fd5b603b80546001600160a01b0319166001600160a01b0392909216919091179055565b603b546001600160a01b031633146118b157604051632e50a17560e01b815260040160405180910390fd5b60008181526035602052604090205460ff166118e0576040516344ac282d60e01b815260040160405180910390fd5b60345460005b8181101561125557826034828154811061190257611902615309565b9060005260206000200154036119c757603461191f60018461531f565b8154811061192f5761192f615309565b90600052602060002001546034828154811061194d5761194d615309565b600091825260209091200155603480548061196a5761196a615332565b60008281526020808220600019908401810183905590920190925584825260358152604091829020805460ff1916905590518481527f07015631cff457b5b13492c2045e70c6305a0a4aa773e432e79abbe2cf52c1eb9101611236565b806119d181615348565b9150506118e6565b6119e1613a01565b6114996000613ea2565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611a305750825b90506000826001600160401b03166001148015611a4c5750303b155b905081158015611a5a575080155b15611a785760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611aa257845460ff60401b1916600160401b1785555b6001600160a01b038e161580611abf57506001600160a01b038f16155b80611ad157506001600160a01b038d16155b80611ae357506001600160a01b038c16155b80611af557506001600160a01b038b16155b15611b135760405163d92e233d60e01b815260040160405180910390fd5b611b1b613ef2565b611b23613efa565b611b2b613f0a565b611b9e8a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b9081908401838280828437600092019190915250613f1a92505050565b611ba6613f2c565b8e603860006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d603760006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c603660006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b603360006101000a8154816001600160a01b0302191690836001600160a01b031602179055506060306001600160a01b0316901b60001b603281905550611c636064613f3c565b603b80546001600160a01b0319166001600160a01b038816179055611c88600061125a565b611c92600261125a565b611c9c600461125a565b611ca6605d61125a565b611cb161271161125a565b6040805160a08101825260008082526020820181905291810191909152731bb8f2df000553e5af2aed5c42fed3a73cd5144b606082015262015888608082015273deaddeaddeaddeaddeaddeaddeaddeaddead11119073cabae6f6ea1ecab08ad02fe02ce9a44f09aebfa290611d28908f90613f94565b611d7b826040518060a0016040528060008152602001605d81526020016004815260200173fc34806fbd673c21c1aec26d69aa247f1e69a2c66001600160a01b0316815260200162015888815250613f94565b611dcf816040518060a00160405280600081526020016127118152602001600281526020017376a495b0bffb53ef3f0e94ef0763e03ce410835c6001600160a01b0316815260200162015888815250613f94565b603380546001600160a01b039081166000908152603c60209081526040808320805460ff191660019081179091558554603d80549283018155909452600080516020615bc48339815191520180546001600160a01b031916938516939093179092559254905191168152600080516020615ba4833981519152910160405180910390a16001600160a01b0382166000818152603c60209081526040808320805460ff19166001908117909155603d80549182018155909352600080516020615bc483398151915290920180546001600160a01b031916841790559051918252600080516020615ba4833981519152910160405180910390a16001600160a01b0381166000818152603c60209081526040808320805460ff19166001908117909155603d80549182018155909352600080516020615bc483398151915290920180546001600160a01b031916841790559051918252600080516020615ba4833981519152910160405180910390a1603680546001600160a01b039081166000908152603c60209081526040808320805460ff191660019081179091558554603d80549283018155909452600080516020615bc48339815191520180546001600160a01b031916938516939093179092559254905191168152600080516020615ba4833981519152910160405180910390a1603e60209081527fcf1a2204a6276a63ab3d118fb5a6c47dbddcb875f714a5ccafac428b169a499b805460ff19166001908117909155603f805491820181556000527fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58fd0180546001600160a01b03191673c6f7a7ba5388bfb5774bfaa87d350b7793fd9ef190811790915560405181815290917f2f5b56c7fc99118d37dd7598918d9983e00c2f52eb3d1910ae0f255ad15b555a910160405180910390a161270b60405561208c8e613ea2565b50505083156120d557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050505050565b6120ee613a01565b6114996140ad565b603b546001600160a01b0316331461212157604051632e50a17560e01b815260040160405180910390fd5b6040818155518181527f9ff241d1f1e0c30788ac08c45391c423cc5ef3e67f66a46b95a9a8f394759f3690602001610f04565b603b546001600160a01b0316331461217f57604051632e50a17560e01b815260040160405180910390fd5b6001600160a01b0381166000908152603c602052604090205460ff16156121b957604051636defa31b60e01b815260040160405180910390fd5b6001600160a01b0381166000818152603c60209081526040808320805460ff19166001908117909155603d80549182018155909352600080516020615bc483398151915290920180546001600160a01b031916841790559051918252600080516020615ba48339815191529101610f04565b612233613a01565b8215806122405750828114155b1561225e5760405163251f56a160e21b815260040160405180910390fd5b60005b8381101561261857603c600086868481811061227f5761227f615309565b90506020020160208101906122949190614bf9565b6001600160a01b0316815260208101919091526040016000205460ff166122ce57604051636042954160e01b815260040160405180910390fd5b604260008686848181106122e4576122e4615309565b90506020020160208101906122f99190614bf9565b6001600160a01b03168152602081019190915260400160002060040154158015906123c9575063095ea7b360e01b83838381811061233957612339615309565b905060200281019061234b9190615530565b61235a91600491600091615576565b612363916155a0565b6001600160e01b0319161415806123c957506036546001600160a01b031683838381811061239357612393615309565b90506020028101906123a59190615530565b6123b491602491600491615576565b6123bd916155d0565b6001600160a01b031614155b156123e75760405163a9c320f160e01b815260040160405180910390fd5b6036546001600160a01b031685858381811061240557612405615309565b905060200201602081019061241a9190614bf9565b6001600160a01b0316148015612553575063730276cf60e11b83838381811061244557612445615309565b90506020028101906124579190615530565b61246691600491600091615576565b61246f916155a0565b6001600160e01b0319161480156125535750600283838381811061249557612495615309565b90506020028101906124a79190615530565b6124b691604591604491615576565b6124bf91615604565b60f81c60158111156124d3576124d36155ee565b60158111156124e4576124e46155ee565b141580156125535750601383838381811061250157612501615309565b90506020028101906125139190615530565b61252291604591604491615576565b61252b91615604565b60f81c601581111561253f5761253f6155ee565b6015811115612550576125506155ee565b14155b156125715760405163a9c320f160e01b815260040160405180910390fd5b61260583838381811061258657612586615309565b90506020028101906125989190615530565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508992508891508590508181106125e1576125e1615309565b90506020020160208101906125f69190614bf9565b6001600160a01b0316906140f6565b508061261081615348565b915050612261565b5050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace048054606091600080516020615b048339815191529161265e90615632565b80601f016020809104026020016040519081016040528092919081815260200182805461268a90615632565b80156126d75780601f106126ac576101008083540402835291602001916126d7565b820191906000526020600020905b8154815290600101906020018083116126ba57829003601f168201915b505050505091505090565b6000806126fb600080516020615b248339815191525490565b9050806000036127145761155b64e8d4a51000846152d1565b61155b8361272e600080516020615b248339815191525490565b610f85612aa9565b61273e613a01565b603a8054600090915560335460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015612798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ed9190615666565b600033610dd78185856139a2565b6127d2613a01565b6114cf81613f3c565b60006127e56137ec565b6127ed613824565b8260000361280e576040516325ee753160e21b815260040160405180910390fd5b61282f8361281a612aa9565b600080516020615b2483398151915254614104565b9050806000036128525760405163136ed66560e11b815260040160405180910390fd5b61285c33846141b2565b612865816141e8565b61286e81613e32565b905081811015612891576040516345d4c5ab60e01b815260040160405180910390fd5b6033546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa1580156128d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128fd9190615688565b101561291c57604051631f490fd160e11b815260040160405180910390fd5b603354612933906001600160a01b0316338361421c565b7f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f338483604051612966939291906152e8565b60405180910390a1610ddd6001600080516020615b8483398151915255565b6034818154811061299557600080fd5b600091825260209091200154905081565b60418181548110610df357600080fd5b60006060838360008181106129cd576129cd615309565b919091013560f81c90506129e48460018188615576565b81818080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525095975091955050505050505b9250929050565b603b546001600160a01b03163314612a5557604051632e50a17560e01b815260040160405180910390fd5b6114ed8282613f94565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6033546000908190612ac3906001600160a01b0316611581565b90506000603360009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3e9190615372565b612b4990600a615471565b6033546001600160a01b03908116600090815260426020908152604080832060030154815163313ce56760e01b815291519596509294929093169263313ce56792600480830193928290030181865afa158015612baa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bce9190615372565b612bd990600a615471565b905060006034805480602002602001604051908101604052809291908181526020018280548015612c2957602002820191906000526020600020905b815481526020019060010190808311612c15575b505050505090506000612c3a612e80565b90506000805b8351811015612e39576000848281518110612c5d57612c5d615309565b60200260200101519050600281612c7491906156a1565b63ffffffff16158015612c8c575063ffffffff811615155b15612cac57612c9b818861424d565b612ca590846156c4565b9250612e26565b63ffffffff8116600090815260436020908152604080832054815163313ce56760e01b815291516001600160a01b039091169392849263313ce56792600480830193928290030181865afa158015612d08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2c9190615372565b612d3790600a615471565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038416906370a0823190602401602060405180830381865afa158015612d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da59190615688565b6001600160a01b03841660009081526042602052604090205488518991908110612dd157612dd1615309565b6020026020010151612de386856142ee565b612ded91906156c4565b612df791906156c4565b905063ffffffff841615612e1657612e138382848e8e8e611374565b90505b612e2081876156c4565b95505050505b5080612e3181615348565b915050612c40565b506000811215612e5b57604051624de0ed60e41b815260040160405180910390fd5b809650603a548710612e7757603a54612e74908861531f565b96505b50505050505090565b6041546060906001600160401b03811115612e9d57612e9d614d12565b604051908082528060200260200182016040528015612ec6578160200160208202803683370190505b506036546040516377292a9360e11b815260006004820181905292935082916001600160a01b03169063ee52552690602401600060405180830381865afa158015612f15573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f3d9190810190615740565b90935091508290505b816001600160401b0316816001600160401b0316101561313f576036546040516377292a9360e11b81526001600160401b03831660048201526000916001600160a01b03169063ee52552690602401600060405180830381865afa158015612fb2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fda9190810190615740565b505060208101519091506001600160a01b03163014612ff9575061312d565b604080820151905163dae029d360e01b81526000918291309163dae029d3916130259190600401614b7c565b600060405180830381865afa158015613042573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261306a91908101906157f2565b909250905060001960ff83160161312957600081806020019051810190613091919061583f565b60208082015163ffffffff166000908152604390915260409020549091506001600160a01b0316806130c757505050505061312d565b81604001516001600160801b03168960426000846001600160a01b03166001600160a01b03168152602001908152602001600020600001548151811061310f5761310f615309565b60200260200101818151613123919061589f565b90525050505b5050505b80613137816158b2565b915050612f46565b50505090565b61314d613a01565b6001600160a01b0381166131b95760405162461bcd60e51b815260206004820152602860248201527f4f776e61626c653a206e6577206d616e6167657220697320746865207a65726f604482015267206164647265737360c01b60648201526084015b60405180910390fd5b6114cf81613ea2565b6044546001600160a01b038581169116146131f05760405163dfde867160e01b815260040160405180910390fd5b6001600160a01b0383166000908152604660205260408120548190613215908561531f565b6001600160a01b03861660009081526046602090815260409182902087905560455491516bffffffffffffffffffffffff1960608b811b8216938301939093529189901b909116603482015260488101879052909350909150613294908490849060680160405160208183030381529060405280519060200120614385565b6132b1576040516309bde33960e01b815260040160405180910390fd5b801561330e576132cb6001600160a01b038716868361421c565b604080516001600160a01b0387168152602081018390527fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a910160405180910390a15b505050505050565b61331e613a01565b6001600160a01b0385166000908152603e602052604090205460ff1661335a576040516001627aa61d60e11b0319815260040160405180910390fd5b600060418054806020026020016040519081016040528092919081815260200182805480156133b257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613394575b5050505050905060006041805490506001600160401b038111156133d8576133d8614d12565b604051908082528060200260200182016040528015613401578160200160208202803683370190505b50905060005b82518110156134c55782818151811061342257613422615309565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613472573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134969190615688565b8282815181106134a8576134a8615309565b6020908102919091010152806134bd81615348565b915050613407565b5060006134d0612aa9565b90506134e66001600160a01b038616898661439b565b6135268888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506140f692505050565b5061353c6001600160a01b03861689600061439b565b600083516001600160401b0381111561355757613557614d12565b604051908082528060200260200182016040528015613580578160200160208202803683370190505b50905060005b8451811015613644578481815181106135a1576135a1615309565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156135f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136159190615688565b82828151811061362757613627615309565b60209081029190910101528061363c81615348565b915050613586565b50600061364f612aa9565b60405490915083613662836127106152d1565b61366c91906154b2565b101561368b57604051637f30c97b60e11b815260040160405180910390fd5b60008060005b8751811015613747578681815181106136ac576136ac615309565b60200260200101518582815181106136c6576136c6615309565b60200260200101511115613735578781815181106136e6576136e6615309565b6020026020010151925086818151811061370257613702615309565b602002602001015185828151811061371c5761371c615309565b602002602001015161372e919061531f565b9150613747565b8061373f81615348565b915050613691565b506001600160a01b038216158061375c575080155b1561377a57604051635b295cef60e11b815260040160405180910390fd5b604080516001600160a01b038b81168252602082018b90528416818301526060810183905242608082015290517fd83a63a0ebf8fb6a344f0e3dc86dfc975e6009f82e455acc6622cc3fd7c5928d9181900360a00190a1505050505050505050505050565b611255838383600161442b565b600080516020615b8483398151915280546001190161381e57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b600080516020615b648339815191525460ff16156114995760405163d93c066560e01b815260040160405180910390fd5b6000613862848484614104565b9050600082806138745761387461549c565b848609111561105057600019811061388b57600080fd5b8061389581615348565b95945050505050565b6001600160a01b0382166138c85760405163ec442f0560e01b8152600060048201526024016131b0565b6114ed60008383614512565b6040516001600160a01b03848116602483015283811660448301526064820183905261393b9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061463d565b50505050565b6001600080516020615b8483398151915255565b60006139618484612a5f565b9050600019811461393b578181101561399357828183604051637dc7a0d960e11b81526004016131b0939291906152e8565b61393b8484848403600061442b565b6001600160a01b0383166139cc57604051634b637e8f60e11b8152600060048201526024016131b0565b6001600160a01b0382166139f65760405163ec442f0560e01b8152600060048201526024016131b0565b611255838383614512565b6000546001600160a01b031633146114995760405162461bcd60e51b815260206004820152602260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206d616e616760448201526132b960f11b60648201526084016131b0565b613a6e6146a0565b600080516020615b64833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b039091168152602001610f04565b6001600160a01b0381166000908152604260205260408120600201549003613afb57604051630267437760e61b815260040160405180910390fd5b6001600160a01b038116600081815260426020818152604080842060018101805486526043845291852080546001600160a01b031990811690915595855292909152828255829055600281018290556003810180549093169092556004909101819055604154905b81811015613c6357826001600160a01b031660418281548110613b8857613b88615309565b6000918252602090912001546001600160a01b031603613c51576041613baf60018461531f565b81548110613bbf57613bbf615309565b600091825260209091200154604180546001600160a01b039092169183908110613beb57613beb615309565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506041805480613c2a57613c2a615332565b600082815260209020810160001990810180546001600160a01b0319169055019055613c63565b80613c5b81615348565b915050613b63565b506040516001600160a01b03831681527f37803e2125c48ee96c38ddf04e826daf335b0e1603579040fd275aba6d06b6fc906020015b60405180910390a15050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480613d2c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316613d20600080516020615b44833981519152546001600160a01b031690565b6001600160a01b031614155b156114995760405163703e46dd60e11b815260040160405180910390fd5b603b546001600160a01b031633146114cf57604051632e50a17560e01b815260040160405180910390fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613dcf575060408051601f3d908101601f19168201909252613dcc91810190615688565b60015b613df757604051634c9c8ce360e01b81526001600160a01b03831660048201526024016131b0565b600080516020615b448339815191528114613e2857604051632a87526960e21b8152600481018290526024016131b0565b61125583836146d0565b600061271060395483613e4591906152d1565b613e4f91906154b2565b610ddd908361531f565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114995760405163703e46dd60e11b815260040160405180910390fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611499614726565b613f02614726565b61149961476f565b613f12614726565b611499614777565b613f22614726565b6114ed8282614788565b613f34614726565b6114996147d9565b6103e8811115613f5f576040516313f90f0b60e31b815260040160405180910390fd5b60398190556040518181527fa9e08e7e67b07c41209d7b236abaaa1ac69829d51909f3b7ec7b0d6337f6196b90602001610f04565b6001600160a01b03821660009081526042602052604090206002015415613fce57604051635ed2680160e01b815260040160405180910390fd5b6041805482526001600160a01b03838116600081815260426020908152604080832087518155828801516001808301829055838a0151600284015560608a0151600384018054919099166001600160a01b03199182161790985560808a0151600490930192909255845260438352818420805487168617905586549081018755959092527f7c9785e8241615bc80415d89775984a1337d15dc1bf4ce50f41988b2a2b336a79094018054909316821790925590519081527f0e3c58ebfb2e7465fbb1c32e6b4f40c3c4f5ca77e8218a386aff8617831260d79101613c99565b6140b5613824565b600080516020615b64833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833613aa8565b6060611050838360006147fa565b600080806000198587098587029250828110838203039150508060000361413d576000841161413257600080fd5b508290049050611050565b80841161414957600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b0382166141dc57604051634b637e8f60e11b8152600060048201526024016131b0565b6114ed82600083614512565b612710603954826141f991906152d1565b61420391906154b2565b603a6000828254614214919061589f565b909155505050565b6040516001600160a01b0383811660248301526044820183905261125591859182169063a9059cbb90606401613909565b603754603254604051631769225f60e01b815263ffffffff851660048201526024810191909152600091670de0b6b3a76400009184916001600160a01b031690631769225f90604401602060405180830381865afa1580156142b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142d791906158ea565b600f0b6142e49190615905565b6110509190615935565b603854603254604051637c1e148760e01b815263ffffffff851660048201526024810191909152600091670de0b6b3a76400009184916001600160a01b031690637c1e1487906044016040805180830381865afa158015614353573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143779190615963565b516142e49190600f0b615905565b6000826143928584614897565b14949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526143ec84826148e4565b61393b576040516001600160a01b0384811660248301526000604483015261442191869182169063095ea7b390606401613909565b61393b848261463d565b600080516020615b048339815191526001600160a01b0385166144645760405163e602df0560e01b8152600060048201526024016131b0565b6001600160a01b03841661448e57604051634a1406b160e11b8152600060048201526024016131b0565b6001600160a01b0380861660009081526001830160209081526040808320938816835292905220839055811561261857836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161450391815260200190565b60405180910390a35050505050565b600080516020615b048339815191526001600160a01b03841661454e5781816002016000828254614543919061589f565b909155506145ad9050565b6001600160a01b0384166000908152602082905260409020548281101561458e5784818460405163391434e360e21b81526004016131b0939291906152e8565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b0383166145cb5760028101805483900390556145ea565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161462f91815260200190565b60405180910390a350505050565b60006146526001600160a01b038416836140f6565b905080516000141580156146775750808060200190518101906146759190615666565b155b1561125557604051635274afe760e01b81526001600160a01b03841660048201526024016131b0565b600080516020615b648339815191525460ff1661149957604051638dfc202b60e01b815260040160405180910390fd5b6146d982614987565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561471e5761125582826149ec565b6114ed614a59565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661149957604051631afcd79f60e31b815260040160405180910390fd5b613941614726565b61477f614726565b61149933613ea2565b614790614726565b600080516020615b048339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036147ca8482615a03565b506004810161393b8382615a03565b6147e1614726565b600080516020615b64833981519152805460ff19169055565b60608147101561481f5760405163cd78605960e01b81523060048201526024016131b0565b600080856001600160a01b0316848660405161483b9190615ac2565b60006040518083038185875af1925050503d8060008114614878576040519150601f19603f3d011682016040523d82523d6000602084013e61487d565b606091505b509150915061488d868383614a78565b9695505050505050565b600081815b84518110156148dc576148c8828683815181106148bb576148bb615309565b6020026020010151614ad4565b9150806148d481615348565b91505061489c565b509392505050565b6000806000846001600160a01b0316846040516149019190615ac2565b6000604051808303816000865af19150503d806000811461493e576040519150601f19603f3d011682016040523d82523d6000602084013e614943565b606091505b509150915081801561496d57508051158061496d57508080602001905181019061496d9190615666565b80156138955750505050506001600160a01b03163b151590565b806001600160a01b03163b6000036149bd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016131b0565b600080516020615b4483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051614a099190615ac2565b600060405180830381855af49150503d8060008114614a44576040519150601f19603f3d011682016040523d82523d6000602084013e614a49565b606091505b5091509150613895858383614a78565b34156114995760405163b398979f60e01b815260040160405180910390fd5b606082614a8d57614a8882614b03565b611050565b8151158015614aa457506001600160a01b0384163b155b15614acd57604051639996b31560e01b81526001600160a01b03851660048201526024016131b0565b5080611050565b6000818310614af0576000828152602084905260409020611050565b6000838152602083905260409020611050565b805115614b135780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60005b83811015614b47578181015183820152602001614b2f565b50506000910152565b60008151808452614b68816020860160208601614b2c565b601f01601f19169290920160200192915050565b6020815260006110506020830184614b50565b6001600160a01b03811681146114cf57600080fd5b8035614baf81614b8f565b919050565b60008060408385031215614bc757600080fd5b8235614bd281614b8f565b946020939093013593505050565b600060208284031215614bf257600080fd5b5035919050565b600060208284031215614c0b57600080fd5b813561105081614b8f565b60008060408385031215614c2957600080fd5b50508035926020909101359150565b600080600060608486031215614c4d57600080fd5b8335614c5881614b8f565b92506020840135614c6881614b8f565b929592945050506040919091013590565b6020808252825182820181905260009190848201906040850190845b81811015614cba5783516001600160a01b031683529284019291840191600101614c95565b50909695505050505050565b60008060008060008060c08789031215614cdf57600080fd5b8635614cea81614b8f565b9860208801359850604088013597606081013597506080810135965060a00135945092505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614d4a57614d4a614d12565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614d7857614d78614d12565b604052919050565b60006001600160401b03821115614d9957614d99614d12565b50601f01601f191660200190565b60008060408385031215614dba57600080fd5b8235614dc581614b8f565b915060208301356001600160401b03811115614de057600080fd5b8301601f81018513614df157600080fd5b8035614e04614dff82614d80565b614d50565b818152866020838501011115614e1957600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008083601f840112614e4b57600080fd5b5081356001600160401b03811115614e6257600080fd5b602083019150836020828501011115612a2357600080fd5b6000806000806000806000806000806101008b8d031215614e9a57600080fd5b8a35614ea581614b8f565b995060208b0135614eb581614b8f565b985060408b0135614ec581614b8f565b975060608b0135614ed581614b8f565b965060808b0135614ee581614b8f565b955060a08b01356001600160401b0380821115614f0157600080fd5b614f0d8e838f01614e39565b909750955060c08d0135915080821115614f2657600080fd5b50614f338d828e01614e39565b9094509250614f46905060e08c01614ba4565b90509295989b9194979a5092959850565b60008083601f840112614f6957600080fd5b5081356001600160401b03811115614f8057600080fd5b6020830191508360208260051b8501011115612a2357600080fd5b60008060008060408587031215614fb157600080fd5b84356001600160401b0380821115614fc857600080fd5b614fd488838901614f57565b90965094506020870135915080821115614fed57600080fd5b50614ffa87828801614f57565b95989497509550505050565b6000806020838503121561501957600080fd5b82356001600160401b0381111561502f57600080fd5b61503b85828601614e39565b90969095509350505050565b60ff831681526040602082015260006150636040830184614b50565b949350505050565b60008082840360c081121561507f57600080fd5b833561508a81614b8f565b925060a0601f198201121561509e57600080fd5b5060405160a081018181106001600160401b03821117156150c1576150c1614d12565b806040525060208401358152604084013560208201526060840135604082015260808401356150ef81614b8f565b606082015260a0939093013560808401525092909150565b6000806040838503121561511a57600080fd5b823561512581614b8f565b9150602083013561513581614b8f565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b81811015614cba5783518352928401929184019160010161515c565b6000806000806080858703121561518e57600080fd5b843561519981614b8f565b93506020858101356151aa81614b8f565b93506040860135925060608601356001600160401b03808211156151cd57600080fd5b818801915088601f8301126151e157600080fd5b8135818111156151f3576151f3614d12565b8060051b9150615204848301614d50565b818152918301840191848101908b84111561521e57600080fd5b938501935b8385101561523c57843582529385019390850190615223565b989b979a50959850505050505050565b60008060008060006080868803121561526457600080fd5b853561526f81614b8f565b945060208601356001600160401b0381111561528a57600080fd5b61529688828901614e39565b90955093505060408601356152aa81614b8f565b949793965091946060013592915050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610ddd57610ddd6152bb565b6001600160a01b039390931683526020830191909152604082015260600190565b634e487b7160e01b600052603260045260246000fd5b81810381811115610ddd57610ddd6152bb565b634e487b7160e01b600052603160045260246000fd5b60006001820161535a5761535a6152bb565b5060010190565b805160ff81168114614baf57600080fd5b60006020828403121561538457600080fd5b61105082615361565b600181815b808511156153c85781600019048211156153ae576153ae6152bb565b808516156153bb57918102915b93841c9390800290615392565b509250929050565b6000826153df57506001610ddd565b816153ec57506000610ddd565b8160018114615402576002811461540c57615428565b6001915050610ddd565b60ff84111561541d5761541d6152bb565b50506001821b610ddd565b5060208310610133831016604e8410600b841016171561544b575081810a610ddd565b615455838361538d565b8060001904821115615469576154696152bb565b029392505050565b600061105060ff8416836153d0565b6000600160ff1b8201615495576154956152bb565b5060000390565b634e487b7160e01b600052601260045260246000fd5b6000826154c1576154c161549c565b500490565b805169ffffffffffffffffffff81168114614baf57600080fd5b600080600080600060a086880312156154f857600080fd5b615501866154c6565b9450602086015193506040860151925060608601519150615524608087016154c6565b90509295509295909350565b6000808335601e1984360301811261554757600080fd5b8301803591506001600160401b0382111561556157600080fd5b602001915036819003821315612a2357600080fd5b6000808585111561558657600080fd5b8386111561559357600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156155c85780818660040360031b1b83161692505b505092915050565b80356020831015610ddd57600019602084900360031b1b1692915050565b634e487b7160e01b600052602160045260246000fd5b6001600160f81b031981358181169160018510156155c85760019490940360031b84901b1690921692915050565b600181811c9082168061564657607f821691505b60208210810361155e57634e487b7160e01b600052602260045260246000fd5b60006020828403121561567857600080fd5b8151801515811461105057600080fd5b60006020828403121561569a57600080fd5b5051919050565b600063ffffffff808416806156b8576156b861549c565b92169190910692915050565b80820182811260008312801582168215821617156155c8576155c86152bb565b80516001600160401b0381168114614baf57600080fd5b600082601f83011261570c57600080fd5b815161571a614dff82614d80565b81815284602083860101111561572f57600080fd5b615063826020830160208701614b2c565b60008060006060848603121561575557600080fd5b83516001600160401b038082111561576c57600080fd5b908501906060828803121561578057600080fd5b615788614d28565b615791836156e4565b815260208301516157a181614b8f565b60208201526040830151828111156157b857600080fd5b6157c4898286016156fb565b60408301525094506157db915050602085016156e4565b91506157e9604085016156e4565b90509250925092565b6000806040838503121561580557600080fd5b61580e83615361565b915060208301516001600160401b0381111561582957600080fd5b615835858286016156fb565b9150509250929050565b60006060828403121561585157600080fd5b615859614d28565b82518152602083015163ffffffff8116811461587457600080fd5b602082015260408301516001600160801b038116811461589357600080fd5b60408201529392505050565b80820180821115610ddd57610ddd6152bb565b60006001600160401b038083168181036158ce576158ce6152bb565b6001019392505050565b8051600f81900b8114614baf57600080fd5b6000602082840312156158fc57600080fd5b611050826158d8565b80820260008212600160ff1b84141615615921576159216152bb565b8181058314821517610ddd57610ddd6152bb565b6000826159445761594461549c565b600160ff1b82146000198414161561595e5761595e6152bb565b500590565b60006040828403121561597557600080fd5b604051604081018181106001600160401b038211171561599757615997614d12565b6040526159a3836158d8565b81526159b1602084016158d8565b60208201529392505050565b601f82111561125557600081815260208120601f850160051c810160208610156159e45750805b601f850160051c820191505b8181101561330e578281556001016159f0565b81516001600160401b03811115615a1c57615a1c614d12565b615a3081615a2a8454615632565b846159bd565b602080601f831160018114615a655760008415615a4d5750858301515b600019600386901b1c1916600185901b17855561330e565b600085815260208120601f198616915b82811015615a9457888601518255948401946001909101908401615a75565b5085821015615ab25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251615ad4818460208701614b2c565b919091019291505056fe536b61746520566572746578204c6971756964697479205661756c7420284d616a6f72732952c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbccd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0038f93ca08e8d463039d585b8620dd25bb2361ec8f8ddb9d2f1d81c87c7bf02c9ece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3a2646970667358221220c5012670a174799ba45546898aec53c603cdd744d124ce11e9ab1fd6231ee06864736f6c63430008140033