[ { "inputs": [ { "internalType": "address", "name": "factory_", "type": "address" }, { "internalType": "address", "name": "mathlib_", "type": "address" } ], "stateMutability": "payable", "type": "constructor" }, { "inputs": [], "name": "AllowanceOverflow", "type": "error" }, { "inputs": [], "name": "AllowanceUnderflow", "type": "error" }, { "inputs": [], "name": "EscrowAlreadyExists", "type": "error" }, { "inputs": [], "name": "ExceedsSecurityLimit", "type": "error" }, { "inputs": [], "name": "InsufficientAllowance", "type": "error" }, { "inputs": [], "name": "InsufficientBalance", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "InvalidPermit", "type": "error" }, { "inputs": [], "name": "NotEnoughGas", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [], "name": "PermitExpired", "type": "error" }, { "inputs": [], "name": "Reentrancy", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" }, { "internalType": "uint256", "name": "minimum", "type": "uint256" } ], "name": "ReturnInsufficient", "type": "error" }, { "inputs": [], "name": "TotalSupplyOverflow", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "Units", "type": "uint256" } ], "name": "UnusedUnitsAfterWithdrawal", "type": "error" }, { "inputs": [], "name": "VaultNotConnected", "type": "error" }, { "inputs": [], "name": "WithdrawRatioNotZero", "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": "amount", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [], "name": "FinishSetup", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "address", "name": "fromAsset", "type": "address" }, { "indexed": false, "internalType": "address", "name": "toAsset", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "fromAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toAmount", "type": "uint256" } ], "name": "LocalSwap", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "channelId", "type": "bytes32" }, { "indexed": false, "internalType": "bytes", "name": "fromVault", "type": "bytes" }, { "indexed": false, "internalType": "address", "name": "toAccount", "type": "address" }, { "indexed": false, "internalType": "address", "name": "toAsset", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "units", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "fromAmount", "type": "uint256" }, { "indexed": false, "internalType": "bytes", "name": "fromAsset", "type": "bytes" }, { "indexed": false, "internalType": "uint32", "name": "sourceBlockNumberMod", "type": "uint32" } ], "name": "ReceiveAsset", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "channelId", "type": "bytes32" }, { "indexed": false, "internalType": "bytes", "name": "fromVault", "type": "bytes" }, { "indexed": false, "internalType": "address", "name": "toAccount", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "units", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "fromAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "sourceBlockNumberMod", "type": "uint256" } ], "name": "ReceiveLiquidity", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "channelId", "type": "bytes32" }, { "indexed": false, "internalType": "bytes", "name": "toVault", "type": "bytes" }, { "indexed": false, "internalType": "bytes", "name": "toAccount", "type": "bytes" }, { "indexed": false, "internalType": "address", "name": "fromAsset", "type": "address" }, { "indexed": false, "internalType": "uint8", "name": "toAssetIndex", "type": "uint8" }, { "indexed": false, "internalType": "uint256", "name": "fromAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "minOut", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "units", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "fee", "type": "uint256" }, { "indexed": false, "internalType": "uint16", "name": "underwriteIncentiveX16", "type": "uint16" } ], "name": "SendAsset", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "channelId", "type": "bytes32" }, { "indexed": false, "internalType": "bytes", "name": "toAccount", "type": "bytes" }, { "indexed": false, "internalType": "uint256", "name": "units", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "escrowAmount", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "escrowToken", "type": "address" }, { "indexed": false, "internalType": "uint32", "name": "blockNumberMod", "type": "uint32" } ], "name": "SendAssetFailure", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "channelId", "type": "bytes32" }, { "indexed": false, "internalType": "bytes", "name": "toAccount", "type": "bytes" }, { "indexed": false, "internalType": "uint256", "name": "units", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "escrowAmount", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "escrowToken", "type": "address" }, { "indexed": false, "internalType": "uint32", "name": "blockNumberMod", "type": "uint32" } ], "name": "SendAssetSuccess", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "channelId", "type": "bytes32" }, { "indexed": false, "internalType": "bytes", "name": "toVault", "type": "bytes" }, { "indexed": false, "internalType": "bytes", "name": "toAccount", "type": "bytes" }, { "indexed": false, "internalType": "uint256", "name": "fromAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256[2]", "name": "minOut", "type": "uint256[2]" }, { "indexed": false, "internalType": "uint256", "name": "units", "type": "uint256" } ], "name": "SendLiquidity", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "channelId", "type": "bytes32" }, { "indexed": false, "internalType": "bytes", "name": "toAccount", "type": "bytes" }, { "indexed": false, "internalType": "uint256", "name": "units", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "escrowAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint32", "name": "blockNumberMod", "type": "uint32" } ], "name": "SendLiquidityFailure", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "channelId", "type": "bytes32" }, { "indexed": false, "internalType": "bytes", "name": "toAccount", "type": "bytes" }, { "indexed": false, "internalType": "uint256", "name": "units", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "escrowAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint32", "name": "blockNumberMod", "type": "uint32" } ], "name": "SendLiquiditySuccess", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint48", "name": "targetTime", "type": "uint48" }, { "indexed": false, "internalType": "uint256", "name": "targetAmplification", "type": "uint256" } ], "name": "SetAmplification", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "channelId", "type": "bytes32" }, { "indexed": false, "internalType": "bytes", "name": "toVault", "type": "bytes" }, { "indexed": false, "internalType": "bool", "name": "newState", "type": "bool" } ], "name": "SetConnection", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "administrator", "type": "address" } ], "name": "SetFeeAdministrator", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "fee", "type": "uint64" } ], "name": "SetGovernanceFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "fee", "type": "uint64" } ], "name": "SetVaultFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint248", "name": "targetTime", "type": "uint248" }, { "indexed": false, "internalType": "uint256[]", "name": "targetWeights", "type": "uint256[]" } ], "name": "SetWeights", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "identifier", "type": "bytes32" }, { "indexed": false, "internalType": "address", "name": "toAsset", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "U", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "purchasedTokens", "type": "uint256" } ], "name": "SwapUnderwritten", "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": "amount", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "toAccount", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "mint", "type": "uint256" }, { "indexed": false, "internalType": "uint256[]", "name": "assets", "type": "uint256[]" } ], "name": "VaultDeposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "toAccount", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "burn", "type": "uint256" }, { "indexed": false, "internalType": "uint256[]", "name": "assets", "type": "uint256[]" } ], "name": "VaultWithdraw", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "result", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FACTORY", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MATHLIB", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_adjustmentTarget", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_chainInterface", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "_escrowLookup", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "_escrowedTokens", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_escrowedVaultTokens", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_feeAdministrator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_governanceFeeShare", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_lastModificationTime", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_maxUnitCapacity", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_setupMaster", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "_targetWeight", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "_tokenIndexing", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "_vaultConnection", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_vaultFee", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "_weight", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "fromAsset", "type": "address" }, { "internalType": "address", "name": "toAsset", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "calcLocalSwap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "toAsset", "type": "address" }, { "internalType": "uint256", "name": "U", "type": "uint256" } ], "name": "calcReceiveAsset", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "fromAsset", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "calcSendAsset", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "identifier", "type": "bytes32" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "escrowAmount", "type": "uint256" }, { "internalType": "address", "name": "escrowToken", "type": "address" } ], "name": "deleteUnderwriteAsset", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenAmounts", "type": "uint256[]" }, { "internalType": "uint256", "name": "minOut", "type": "uint256" } ], "name": "depositMixed", "outputs": [ { "internalType": "uint256", "name": "vaultTokens", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "factoryOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "finishSetup", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getUnitCapacity", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "governanceFeeDestination", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "assets", "type": "address[]" }, { "internalType": "uint256[]", "name": "weights", "type": "uint256[]" }, { "internalType": "uint64", "name": "amp", "type": "uint64" }, { "internalType": "address", "name": "depositor", "type": "address" } ], "name": "initializeSwapCurves", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "fromAsset", "type": "address" }, { "internalType": "address", "name": "toAsset", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "minOut", "type": "uint256" } ], "name": "localSwap", "outputs": [ { "internalType": "uint256", "name": "out", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes[]", "name": "data", "type": "bytes[]" } ], "name": "multicall", "outputs": [ { "internalType": "bytes[]", "name": "", "type": "bytes[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "channelId", "type": "bytes32" }, { "internalType": "bytes", "name": "toAccount", "type": "bytes" }, { "internalType": "uint256", "name": "U", "type": "uint256" }, { "internalType": "uint256", "name": "escrowAmount", "type": "uint256" }, { "internalType": "address", "name": "escrowToken", "type": "address" }, { "internalType": "uint32", "name": "blockNumberMod", "type": "uint32" } ], "name": "onSendAssetFailure", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "channelId", "type": "bytes32" }, { "internalType": "bytes", "name": "toAccount", "type": "bytes" }, { "internalType": "uint256", "name": "U", "type": "uint256" }, { "internalType": "uint256", "name": "escrowAmount", "type": "uint256" }, { "internalType": "address", "name": "escrowToken", "type": "address" }, { "internalType": "uint32", "name": "blockNumberMod", "type": "uint32" } ], "name": "onSendAssetSuccess", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "channelId", "type": "bytes32" }, { "internalType": "bytes", "name": "toAccount", "type": "bytes" }, { "internalType": "uint256", "name": "U", "type": "uint256" }, { "internalType": "uint256", "name": "escrowAmount", "type": "uint256" }, { "internalType": "uint32", "name": "blockNumberMod", "type": "uint32" } ], "name": "onSendLiquidityFailure", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "channelId", "type": "bytes32" }, { "internalType": "bytes", "name": "toAccount", "type": "bytes" }, { "internalType": "uint256", "name": "U", "type": "uint256" }, { "internalType": "uint256", "name": "escrowAmount", "type": "uint256" }, { "internalType": "uint32", "name": "blockNumberMod", "type": "uint32" } ], "name": "onSendLiquiditySuccess", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "ready", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "channelId", "type": "bytes32" }, { "internalType": "bytes", "name": "fromVault", "type": "bytes" }, { "internalType": "uint256", "name": "toAssetIndex", "type": "uint256" }, { "internalType": "address", "name": "toAccount", "type": "address" }, { "internalType": "uint256", "name": "U", "type": "uint256" }, { "internalType": "uint256", "name": "minOut", "type": "uint256" }, { "internalType": "uint256", "name": "fromAmount", "type": "uint256" }, { "internalType": "bytes", "name": "fromAsset", "type": "bytes" }, { "internalType": "uint32", "name": "blockNumberMod", "type": "uint32" } ], "name": "receiveAsset", "outputs": [ { "internalType": "uint256", "name": "purchasedTokens", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "channelId", "type": "bytes32" }, { "internalType": "bytes", "name": "fromVault", "type": "bytes" }, { "internalType": "address", "name": "toAccount", "type": "address" }, { "internalType": "uint256", "name": "U", "type": "uint256" }, { "internalType": "uint256", "name": "minVaultTokens", "type": "uint256" }, { "internalType": "uint256", "name": "minReferenceAsset", "type": "uint256" }, { "internalType": "uint256", "name": "fromAmount", "type": "uint256" }, { "internalType": "uint32", "name": "blockNumberMod", "type": "uint32" } ], "name": "receiveLiquidity", "outputs": [ { "internalType": "uint256", "name": "purchasedVaultTokens", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "refundTo", "type": "address" }, { "internalType": "bytes32", "name": "identifier", "type": "bytes32" }, { "internalType": "uint256", "name": "escrowAmount", "type": "uint256" }, { "internalType": "address", "name": "escrowToken", "type": "address" }, { "internalType": "bytes32", "name": "sourceIdentifier", "type": "bytes32" }, { "internalType": "bytes", "name": "fromVault", "type": "bytes" } ], "name": "releaseUnderwriteAsset", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "chainIdentifier", "type": "bytes32" }, { "internalType": "bytes", "name": "toVault", "type": "bytes" }, { "internalType": "bytes", "name": "toAccount", "type": "bytes" }, { "components": [ { "internalType": "uint48", "name": "maxGasDelivery", "type": "uint48" }, { "internalType": "uint48", "name": "maxGasAck", "type": "uint48" }, { "internalType": "address", "name": "refundGasTo", "type": "address" }, { "internalType": "uint96", "name": "priceOfDeliveryGas", "type": "uint96" }, { "internalType": "uint96", "name": "priceOfAckGas", "type": "uint96" }, { "internalType": "uint64", "name": "targetDelta", "type": "uint64" } ], "internalType": "struct IMessageEscrowStructs.IncentiveDescription", "name": "incentive", "type": "tuple" }, { "internalType": "uint64", "name": "deadline", "type": "uint64" } ], "internalType": "struct ICatalystV1Structs.RouteDescription", "name": "routeDescription", "type": "tuple" }, { "internalType": "address", "name": "fromAsset", "type": "address" }, { "internalType": "uint8", "name": "toAssetIndex", "type": "uint8" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "minOut", "type": "uint256" }, { "internalType": "address", "name": "fallbackUser", "type": "address" }, { "internalType": "uint16", "name": "underwriteIncentiveX16", "type": "uint16" }, { "internalType": "bytes", "name": "calldata_", "type": "bytes" } ], "name": "sendAsset", "outputs": [ { "internalType": "uint256", "name": "U", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "chainIdentifier", "type": "bytes32" }, { "internalType": "bytes", "name": "toVault", "type": "bytes" }, { "internalType": "bytes", "name": "toAccount", "type": "bytes" }, { "components": [ { "internalType": "uint48", "name": "maxGasDelivery", "type": "uint48" }, { "internalType": "uint48", "name": "maxGasAck", "type": "uint48" }, { "internalType": "address", "name": "refundGasTo", "type": "address" }, { "internalType": "uint96", "name": "priceOfDeliveryGas", "type": "uint96" }, { "internalType": "uint96", "name": "priceOfAckGas", "type": "uint96" }, { "internalType": "uint64", "name": "targetDelta", "type": "uint64" } ], "internalType": "struct IMessageEscrowStructs.IncentiveDescription", "name": "incentive", "type": "tuple" }, { "internalType": "uint64", "name": "deadline", "type": "uint64" } ], "internalType": "struct ICatalystV1Structs.RouteDescription", "name": "routeDescription", "type": "tuple" }, { "internalType": "address", "name": "fromAsset", "type": "address" }, { "internalType": "uint8", "name": "toAssetIndex", "type": "uint8" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "minOut", "type": "uint256" }, { "internalType": "uint256", "name": "minU", "type": "uint256" }, { "internalType": "address", "name": "fallbackUser", "type": "address" }, { "internalType": "uint16", "name": "underwriteIncentiveX16", "type": "uint16" }, { "internalType": "bytes", "name": "calldata_", "type": "bytes" } ], "name": "sendAssetFixedUnit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "chainIdentifier", "type": "bytes32" }, { "internalType": "bytes", "name": "toVault", "type": "bytes" }, { "internalType": "bytes", "name": "toAccount", "type": "bytes" }, { "components": [ { "internalType": "uint48", "name": "maxGasDelivery", "type": "uint48" }, { "internalType": "uint48", "name": "maxGasAck", "type": "uint48" }, { "internalType": "address", "name": "refundGasTo", "type": "address" }, { "internalType": "uint96", "name": "priceOfDeliveryGas", "type": "uint96" }, { "internalType": "uint96", "name": "priceOfAckGas", "type": "uint96" }, { "internalType": "uint64", "name": "targetDelta", "type": "uint64" } ], "internalType": "struct IMessageEscrowStructs.IncentiveDescription", "name": "incentive", "type": "tuple" }, { "internalType": "uint64", "name": "deadline", "type": "uint64" } ], "internalType": "struct ICatalystV1Structs.RouteDescription", "name": "routeDescription", "type": "tuple" }, { "internalType": "uint256", "name": "vaultTokens", "type": "uint256" }, { "internalType": "uint256[2]", "name": "minOut", "type": "uint256[2]" }, { "internalType": "address", "name": "fallbackUser", "type": "address" }, { "internalType": "bytes", "name": "calldata_", "type": "bytes" } ], "name": "sendLiquidity", "outputs": [ { "internalType": "uint256", "name": "U", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "channelId", "type": "bytes32" }, { "internalType": "bytes", "name": "toVault", "type": "bytes" }, { "internalType": "bool", "name": "state", "type": "bool" } ], "name": "setConnection", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "administrator", "type": "address" } ], "name": "setFeeAdministrator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "fee", "type": "uint64" } ], "name": "setGovernanceFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "fee", "type": "uint64" } ], "name": "setVaultFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint48", "name": "targetTime", "type": "uint48" }, { "internalType": "uint256[]", "name": "newWeights", "type": "uint256[]" } ], "name": "setWeights", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "address", "name": "chainInterface", "type": "address" }, { "internalType": "uint64", "name": "vaultFee", "type": "uint64" }, { "internalType": "uint64", "name": "governanceFee", "type": "uint64" }, { "internalType": "address", "name": "feeAdministrator", "type": "address" }, { "internalType": "address", "name": "setupMaster", "type": "address" } ], "name": "setup", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "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": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "identifier", "type": "bytes32" }, { "internalType": "address", "name": "toAsset", "type": "address" }, { "internalType": "uint256", "name": "U", "type": "uint256" }, { "internalType": "uint256", "name": "minOut", "type": "uint256" } ], "name": "underwriteAsset", "outputs": [ { "internalType": "uint256", "name": "purchasedTokens", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "vaultTokens", "type": "uint256" }, { "internalType": "uint256[]", "name": "minOut", "type": "uint256[]" } ], "name": "withdrawAll", "outputs": [ { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "vaultTokens", "type": "uint256" }, { "internalType": "uint256[]", "name": "withdrawRatio", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "minOut", "type": "uint256[]" } ], "name": "withdrawMixed", "outputs": [ { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "stateMutability": "nonpayable", "type": "function" } ]
6001600160401b0360c0601f6200560938819003918201601f191683019184831184841017620001b6578084926040948552833981010312620001b1576200004781620001cc565b620000566020809301620001cc565b9060805260a0526000916200006c8354620001e1565b601f811162000185575b50602e7f436174616c797374205661756c742054656d706c617465000000000000000000018355600192620000ac8454620001e1565b601f811162000157575b506000845563409feecd19938454918183166200014a57501c8190036200010f575b6040516153ea90816200021f8239608051818181610b6201528181611551015281816131480152613d0f015260a05181611ceb0152f35b6002600160411b039092559081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29080a1388080620000d8565b63f92ee8a990526004601cfd5b84825284601f858420920160051c8201915b82811062000179575050620000b6565b83815501859062000169565b838052601f838520910160051c8101905b818110620001a5575062000076565b84815560010162000196565b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203620001b157565b90600182811c9216801562000213575b6020831014620001fd57565b634e487b7160e01b600052602260045260246000fd5b91607f1691620001f156fe6080604052600436101561001257600080fd5b60003560e01c8063033597b2146103e757806306fdde03146103e2578063095ea7b3146103dd57806309de4fea146103d85780630bc350d7146103d3578063119f8e68146103ce57806312858100146103c957806313193e6a146103c457806316604f4f146103bf57806318160ddd146103ba5780631fd1602b146103b5578063202ad2c5146103b057806323b872dd146103ab57806324351d57146103a65780632dd31000146103a15780632f48ed571461039c578063313ce5671461039757806332a3385e1461039257806334420dbd1461038d5780633644e5151461038857806336ae087e1461038357806337fd51351461037e57806339a391de146103795780633b49580d146103745780633cf183fa1461036f5780634273601c1461036a57806346c3a2fd14610365578063505b0c1214610360578063586f98001461035b5780635c459a5b1461035657806364d1e1c01461035157806366ae79e61461034c5780636caea8a3146103475780636d0f691b146103425780636defbf801461033d57806370a082311461033857806372655631146103335780637d4c3eca1461032e5780637ecebe00146103295780637ef5aa8e14610324578063818431be1461031f57806386f25e4d1461031a578063904e0a01146103155780639584c8881461031057806395d89b411461030b5780639cf80f20146103065780639d29db4514610301578063a57ecf4f146102fc578063a9059cbb146102f7578063ac9650d8146102f2578063b22889e4146102ed578063b9ff629b146102e8578063bf508642146102e3578063c86380d9146102de578063c90da013146102d9578063d505accf146102d4578063dd62ed3e146102cf578063de6bbd9d146102ca578063e75552fb146102c5578063eb80cd11146102c05763f754fc35146102bb57600080fd5b612c37565b612ba8565b612939565b6128ab565b612864565b6126b3565b61268c565b6125a7565b612580565b612542565b61245d565b6123a4565b61231b565b612288565b612233565b612209565b612116565b6120f0565b6120bb565b612046565b61202d565b611e52565b611df3565b611db5565b611d97565b611d60565b611d0f565b611ccb565b611ca0565b611c0f565b611b19565b611947565b61190e565b6117b1565b611786565b61176b565b6114cc565b6110f4565b610fec565b610fc1565b610d25565b610c8d565b610c1d565b610bdf565b610bc3565b610b86565b610b42565b610b04565b610a30565b6109d8565b6108b2565b610832565b6107b7565b6106d5565b61066a565b6105ce565b6105ab565b610572565b6104a6565b610469565b6103fc565b60009103126103f757565b600080fd5b346103f75760006003193601126103f7576020600a54604051908152f35b60005b83811061042d5750506000910152565b818101518382015260200161041d565b601f19601f60409360208452610462815180928160208801526020888801910161041a565b0116010190565b346103f75760006003193601126103f757610491610485612cfa565b6040519182918261043d565b0390f35b6001600160a01b038116036103f757565b346103f75760406003193601126103f7576004356104c381610495565b60243590602052637f5e9f20600c5233600052806034600c2055600052602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560206000a3602060405160018152f35b6004359067ffffffffffffffff821682036103f757565b6084359067ffffffffffffffff821682036103f757565b6044359067ffffffffffffffff821682036103f757565b359067ffffffffffffffff821682036103f757565b346103f75760206003193601126103f75761058b610518565b6001600160a01b0360085460401c1633036103f7576105a99061416e565b005b346103f75760006003193601126103f75760206105c6612ec6565b604051908152f35b346103f75760806003193601126103f7576004356024356105ee81610495565b604435916001600160a01b0391826002541633036103f75760607fd4228165b1b0dc50bd8ac0a74d2b5766000d5ee9f7488b9e74e183deb55c8f1d916104919561063b6064358284614201565b95610647878488614264565b604051921682526020820152846040820152a26040519081529081906020820190565b346103f75760006003193601126103f757602065ffffffffffff60075460301c16604051908152f35b9181601f840112156103f75782359167ffffffffffffffff83116103f757602083818601950101116103f757565b610104359063ffffffff821682036103f757565b346103f7576101206003193601126103f75767ffffffffffffffff6024358181116103f757610708903690600401610693565b60649291923561071781610495565b60e4359283116103f7576104919361073661075a943690600401610693565b9290916107416106c1565b9460c4359260a435926084359260443591600435612f0c565b6040519081529081906020820190565b9060a06003198301126103f757600435916024359067ffffffffffffffff82116103f75761079a91600401610693565b9091604435906064359060843563ffffffff811681036103f75790565b346103f7576107c53661076a565b906001600160a01b03600296949396541633036103f75785836108218361081c8161081788827f97cc161fb90f5cdec9c65ba7aac2279e32df11368946590b82fd6fe8e76b39e09e61082d9c8f6143b5565b614417565b6144df565b60405196879687613076565b0390a1005b346103f75760006003193601126103f75760206805345cdf77eb68f44c54604051908152f35b9060c06003198301126103f757600435916024359067ffffffffffffffff82116103f75761088891600401610693565b9091604435906064359060843561089e81610495565b9060a43563ffffffff811681036103f75790565b346103f7576108c036610858565b916001600160a01b0396949396806002541633036103f7576000806108f585856108f089838f8f908e869261453f565b6145c6565b5a936040519060208201927fa9059cbb0000000000000000000000000000000000000000000000000000000084521660248201528560448201526044815261093c81611b89565b519082877f8000000000000000000000000000000000000000000000000000000000000000f1506109776109705a92612e14565b603f900490565b116109ae577fcab6c1a18a9c89efaab5ea5a8c665ffe2c5aac9ddd9301ccad01fd4fed7c7e3d9661082d94604051978897886130ac565b60046040517fdd629f86000000000000000000000000000000000000000000000000000000008152fd5b346103f75760006003193601126103f75760206109f3613112565b6001600160a01b0360405191168152f35b60031960609101126103f757600435610a1c81610495565b90602435610a2981610495565b9060443590565b346103f757610a3e36610a04565b8260601b91602092338452600c90637f5e9f2081178252603482209081549160018301610adf575b506387a211a2915017815283812092835492838211610ad1577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef94826001600160a01b039503905560005284822081815401905584525160601c93169180a360405160018152602090f35b63f4d678b86000526004601cfd5b828611610af657856387a211a29303905538610a66565b6313be252b6000526004601cfd5b346103f75760206003193601126103f7576001600160a01b03600435610b2981610495565b16600052600b6020526020604060002054604051908152f35b346103f75760006003193601126103f75760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103f75760206003193601126103f757600435610ba381610495565b6001600160a01b03610bb3613cd9565b1633036103f7576105a990614632565b346103f75760006003193601126103f757602060405160128152f35b346103f75760206003193601126103f7576001600160a01b03600435610c0481610495565b1660005260056020526020604060002054604051908152f35b346103f7576101006003193601126103f75760243567ffffffffffffffff81116103f757610c4f903690600401610693565b60443591610c5c83610495565b60e4359063ffffffff821682036103f7576104919361075a9360c4359260a4359260843592606435926004356131a5565b346103f75760006003193601126103f757602060a0610caa612cfa565b828151910120604051907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8252838201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6604082015246606082015230608082015220604051908152f35b90816101409103126103f75790565b60c06003193601126103f757600467ffffffffffffffff81358181116103f757610d529036908401610d16565b9160243591366084116103f75760843590610d6c82610495565b60a4359081116103f757610d839036908401610693565b68929eee149b4bd212689491949230845414610fb4573084558635966020810190610db8610db1838361350a565b3691611bc8565b9689600052600360205260ff610de2602060409a8b600020828d519483868095519384920161041a565b820190815203019020541615610f8d57610e066001600160a01b0385161515612dde565b610e0e6146b4565b610e67610e286805345cdf77eb68f44c54600c549061355b565b610e328833614933565b610e62610e5d610e4c600a5467099e8db03256ce80900490565b92610e578b82613568565b9061499a565b6149dd565b612e75565b98610e8c610e80610e806002546001600160a01b031690565b6001600160a01b031690565b803b156103f75783600093610ed18a998e958e519c8d97889687967f318987c400000000000000000000000000000000000000000000000000000000885287016136dd565b039134905af1908115610f885761049199610f5e967f8c9503be4db35b4e3d31565a9616d1dc3f1b3024e5e9e9d65052de46a5149f1c93610f6f575b50610f568a878b85018c610f49610f41610f3a8686610f2c878d61350a565b4363ffffffff1693916143b5565b9a8961350a565b93909861350a565b9290915197889788613718565b0390a1614c36565b389055519081529081906020820190565b80610f7c610f8292611b70565b806103ec565b38610f0d565b613106565b87517f2c64c1b2000000000000000000000000000000000000000000000000000000008152fd5b8463ab143c06600052601cfd5b346103f75760406003193601126103f75760206105c6600435610fe381610495565b6024359061376d565b346103f75760e06003193601126103f75767ffffffffffffffff6004358181116103f75761101e903690600401610693565b6024358381116103f757611036903690600401610693565b9360443561104381610495565b60643591821682036103f7576105a99561105b61052f565b9360a4359561106987610495565b60c4359761107689610495565b6137f6565b9181601f840112156103f75782359167ffffffffffffffff83116103f7576020808501948460051b0101116103f757565b90815180825260208080930193019160005b8281106110cc575050505090565b8351855293810193928101926001016110be565b9060206110f19281815201906110ac565b90565b346103f75760606003193601126103f75767ffffffffffffffff600480356024358381116103f757611129903690840161107b565b9190936044359081116103f757611143903690850161107b565b939068929eee149b4bd2126893308554146114bf573085556111636146b4565b6111ac61117d6805345cdf77eb68f44c54600c549061355b565b6111878633614933565b610e62610e5d6111a1600a5467099e8db03256ce80900490565b92610e578982613568565b966111b5613c26565b9660009160005b60038110611252575b50505050505084611219575061049193507f7a5919fae19c7104c67635ca0c2ded0d01316a06da859fd961851aa12ac6c71b6040518061120786339583613cb8565b0390a2389055604051918291826110e0565b6040517f0289311f00000000000000000000000000000000000000000000000000000000815290810185815281906020010390fd5b0390fd5b611276611269826000526004602052604060002090565b546001600160a01b031690565b9a6001600160a01b038c169b8c156114b75761129d611296848987613c70565b3583614d34565b91821561141457826112ae91613568565b9c6040926112fd8b855180947f70a0823100000000000000000000000000000000000000000000000000000000825281806020958695309083019190916001600160a01b036020820193169052565b03915afa8015610f88576113609361133c928b926113e7575b5050611335856001600160a01b0316600052600b602052604060002090565b5490613568565b611359846001600160a01b03166000526005602052604060002090565b5491614daa565b918261136d85888c613c70565b35116113995750816113909184936113888f96600197613c85565b52339061436c565b01935b936111bc565b8961124e84926113aa878a8e613c70565b3590519384937f24557f05000000000000000000000000000000000000000000000000000000008552840160209093929193604081019481520152565b6114069250803d1061140d575b6113fe8183611ba5565b81019061375e565b3880611316565b503d6113f4565b9c505050611423818684613c70565b3561148e57611433818488613c70565b356114415760010193611393565b61144d87918488613c70565b359061124e6040519283927f24557f050000000000000000000000000000000000000000000000000000000084528301919060206040840193600081520152565b866040517fb8003bfa000000000000000000000000000000000000000000000000000000008152fd5b509a506111c5565b8263ab143c06600052601cfd5b346103f75760806003193601126103f757600467ffffffffffffffff81358181116103f7576114ff90369060040161107b565b9290916024358181116103f75761151d90939293369060040161107b565b949092611528610546565b936115bc670de0b6b3a76400006064359561154287610495565b6001600160a01b0397611578897f0000000000000000000000000000000000000000000000000000000000000000163314612dde565b6000805260046020526115b5896115ae7f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec611269565b1615612dde565b1614612dde565b6115c4613c26565b9560009788945b80861061162657887f7dde447513a4ed2580f1f8cd3caea2d0c14b2f46b036d72456a33457da14ed7589896116076116028f612e25565b600a55565b61161081614467565b611621604051928392169482613c99565b0390a2005b90919293949861165b889161168e8c61164861164382888d613c70565b613ccf565b9384916000526004602052604060002090565b906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b6116998c8689613c70565b35906116a6821515612dde565b816116c4846001600160a01b03166000526005602052604060002090565b556040517f70a08231000000000000000000000000000000000000000000000000000000008152308882019081529094602094859287928391829086010392165afa938415610f88576001948e8e9261173c96600093611748575b50508192611731611736931515612dde565b613c85565b5261355b565b990194939291906115cb565b6117369350908161176492903d1061140d576113fe8183611ba5565b913861171f565b346103f75760006003193601126103f75760206109f3613cd9565b346103f75760006003193601126103f757602067ffffffffffffffff60075460901c16604051908152f35b346103f75760806003193601126103f7576004356117ce81610495565b602435906117db82610495565b604435916064359168929eee149b4bd212689130835414611900573083556118016146b4565b61181a67ffffffffffffffff60075460901c1686614d34565b8086038681116118fb5761182f908385613e54565b948581116118c15750947ff631545f16e5f3e54a6cf8b4e2bfe643a342d0d0bf8e224479382b8acdfd009a9161187f6104919761186e84303389614ddd565b61187988338561436c565b85614e36565b604080516001600160a01b03958616815294909116602085015283015260608201849052339180608081015b0390a23890556040519081529081906020820190565b6040517f24557f05000000000000000000000000000000000000000000000000000000008152600481018790526024810191909152604490fd5b612de5565b63ab143c066000526004601cfd5b346103f75760206003193601126103f757611927610518565b6001600160a01b03611937613cd9565b1633036103f7576105a990614cc4565b346103f7576040806003193601126103f757600480359060243567ffffffffffffffff81116103f75761197e90369060040161107b565b92909368929eee149b4bd2126892308454146119005730845561199f6146b4565b6119b66805345cdf77eb68f44c54600c549061355b565b916119c18433614933565b6119c9613c26565b956000805b60038110611a0e575b6104918989897f7a5919fae19c7104c67635ca0c2ded0d01316a06da859fd961851aa12ac6c71b6040518061120786339583613cb8565b611a25611269826000526004602052604060002090565b6001600160a01b038116908115611b125785517f70a082310000000000000000000000000000000000000000000000000000000081523088820190815290926020918291859182908190850103915afa908115610f885784611abc8f93611ab78e610e628f938d9a611ac4988e92611af5575b50506113358a6001600160a01b0316600052600b602052604060002090565b612eb7565b948593613c70565b3511611ae35781611add9184936113886001968f613c85565b016119ce565b509061124e856113aa8893878f613c70565b611b0b9250803d1061140d576113fe8183611ba5565b3880611a98565b50506119d7565b346103f75760006003193601126103f757602067ffffffffffffffff60085416604051908152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff8111611b8457604052565b611b41565b6080810190811067ffffffffffffffff821117611b8457604052565b90601f601f19910116810190811067ffffffffffffffff821117611b8457604052565b92919267ffffffffffffffff8211611b845760405191611bf26020601f19601f8401160184611ba5565b8294818452818301116103f7578281602093846000960137010152565b346103f75760406003193601126103f75760243567ffffffffffffffff81116103f757366023820112156103f757611c8e611c7e6020611c5c610491943690602481600401359101611bc8565b600435600052600382526040600020826040519483868095519384920161041a565b8201908152030190205460ff1690565b60405190151581529081906020820190565b346103f75760406003193601126103f75760206105c6600435611cc281610495565b60243590613d43565b346103f75760006003193601126103f75760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103f757600080600319360112611d5d576020906001600160a01b038060095416159182611d45575b50506040519015158152f35b60409192508080526004845220541615153880611d39565b80fd5b346103f75760206003193601126103f757600435611d7d81610495565b6387a211a2600c52600052602080600c2054604051908152f35b346103f75760006003193601126103f7576020600c54604051908152f35b346103f75760206003193601126103f7576001600160a01b03600435611dda81610495565b16600052600e6020526020604060002054604051908152f35b346103f75760206003193601126103f757600435611e1081610495565b6338377508600c52600052602080600c2054604051908152f35b6004359065ffffffffffff821682036103f757565b359065ffffffffffff821682036103f757565b346103f75760406003193601126103f757611e6b611e2a565b60243567ffffffffffffffff81116103f757611e8b90369060040161107b565b916001600160a01b0380611e9d613cd9565b1633036103f757611f4a65ffffffffffff611ed3818516611ec562093a804201821015612dde565b6301e1338042011015612dde565b611f0a8465ffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000006007541617600755565b42167fffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff6bffffffffffff0000000000006007549260301b16911617600755565b60005b60038110611f89575b505061082d7f8c5a4e99cd34deccc3c0d9b8809fbe84ceba304483fdc6247f90ee2ff111cd6d9360405193849384613e35565b611fa0611269826000526004602052604060002090565b828116156120275790600191612020611fba838989613c70565b3591612007600a611fde836001600160a01b03166000526005602052604060002090565b54611fea861515612dde565b611ffe611ff682612e42565b871115612dde565b04841015612dde565b6001600160a01b0316600052600e602052604060002090565b5501611f4d565b50611f56565b346103f75760206105c661204036610a04565b91613e54565b346103f757600080600319360112611d5d576009546001600160a01b03811633036120b7577fffffffffffffffffffffffff0000000000000000000000000000000000000000166009557f7991f9d379def473bbda7d0d566449ae0c4b9edb031c33f829df029783f680a48180a180f35b5080fd5b346103f75760206003193601126103f757600435600052600460205260206001600160a01b0360406000205416604051908152f35b346103f75760006003193601126103f757602065ffffffffffff60075416604051908152f35b346103f757600080600319360112611d5d576040519080600180549061213b82612ca7565b80865292602092600181169081156121be5750600114612166575b6104918661048581880382611ba5565b9350600184527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b8385106121ab575050505081016020016104858261049138612156565b805486860184015293820193810161218e565b879650610491979450602093506104859592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b820101929338612156565b346103f75760006003193601126103f75760206008546001600160a01b036040519160401c168152f35b346103f75760206003193601126103f757600435600052600d60205260206001600160a01b0360406000205416604051908152f35b6044359060ff821682036103f757565b6084359060ff821682036103f757565b6101206003193601126103f75767ffffffffffffffff6004358181116103f7576122b6903690600401610d16565b906024356122c381610495565b6122cb612268565b9260c4356122d881610495565b60e4359061ffff821682036103f757610104359485116103f7576104919561230761075a963690600401610693565b95909460a435926084359260643592613f98565b346103f75760406003193601126103f75760043561233881610495565b602435906387a211a2600c52336000526020600c208054808411610ad15783900390556000526020600c20818154019055602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a360405160018152602090f35b346103f7576020806003193601126103f75760043567ffffffffffffffff81116103f7576123d690369060040161107b565b906000926020845282602052821561245857909160051b90604082848237828101925b8151850191868460408401948035918291018637389085305af41561244f5781848267ffffffffffffffe094603f945201933d90523d88606083013e3d010116938382101561244857936123f9565b6040850186f35b863d81803e3d90fd5b604084f35b346103f75760606003193601126103f75760043560243567ffffffffffffffff81116103f757612491903690600401610693565b916044359283151584036103f7576001600160a01b036009541633036103f757604181036103f7577fd3223b577ecd2d8632a35c20b084999e9f3d352d8924beb1d32f42e0bd66e9a59361082d9183600052600360205261253682604060002060206040518092868b8337868201908152030190209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b60405194859485614086565b346103f75760806003193601126103f75760643561255f81610495565b6001600160a01b036002541633036103f7576105a9906044356004356145c6565b346103f75760006003193601126103f75760206001600160a01b0360025416604051908152f35b346103f75760c06003193601126103f7576004356125c481610495565b604435606435916125d483610495565b60a43567ffffffffffffffff81116103f7576125f4903690600401610693565b6001600160a01b036002541633036103f757602061261960ff9361263b933691611bc8565b608435600052600382526040600020826040519483868095519384920161041a565b820190815203019020541615612662578261265c6105a994846024356145c6565b5061436c565b60046040517f2c64c1b2000000000000000000000000000000000000000000000000000000008152fd5b346103f75760006003193601126103f75760206001600160a01b0360095416604051908152f35b346103f75760e06003193601126103f7576004356126d081610495565b602435906126dd82610495565b60443590606435926126ed612278565b926126f6612cfa565b9081516020809301209086421161285657604051946001600160a01b0380911694169465383775081901600e5260009685885260c085600c209283549a7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82528782019687528b60408301977fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc689528b6060850199468b528c608087019330855260a08820602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9885252528789525260a082015220604e526042602c20885260ff16845260a43560405260c435606052838060808960015afa853d5103612849577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259596979801905585777f5e9f200000000000000000000000000000000000000000176040526034602c2055a380f35b63ddafbaef88526004601cfd5b631a15a3cc6000526004601cfd5b346103f75760406003193601126103f75760043561288181610495565b60243561288d81610495565b602052637f5e9f20600c5260005260206034600c2054604051908152f35b6101006003193601126103f75767ffffffffffffffff6004358181116103f7576128d9903690600401610d16565b90602435916128e783610495565b6128ef612268565b60a4356128fb81610495565b60c4359061ffff821682036103f75760e4359485116103f7576104919561292961075a963690600401610693565b95909460843592606435926140ad565b346103f7576040806003193601126103f75760049060043567ffffffffffffffff81116103f75761296e90369060040161107b565b92906024359268929eee149b4bd21268923084541461190057903084556129936146b4565b6805345cdf77eb68f44c549160009182915b60038310612a9a575b50505090612a106129fc612a16936129e36129d660075467ffffffffffffffff9060901c1690565b67ffffffffffffffff1690565b670de0b6b3a76400000302670de0b6b3a7640000900490565b600a5467099e8db03256ce80900490615092565b90614d34565b92838111612a6057507f7dde447513a4ed2580f1f8cd3caea2d0c14b2f46b036d72456a33457da14ed756118ab61049195612a5186336144df565b60405191829133958884614157565b6040517f24557f05000000000000000000000000000000000000000000000000000000008152600481018590526024810191909152604490fd5b909192612ab4611269856000526004602052604060002090565b936001600160a01b038516918215612ba057612ad1828c8a613c70565b358015612b925785517f70a0823100000000000000000000000000000000000000000000000000000000815230868201908152602095869183919082908190850103915afa928315610f8857612b5a612b6a94612b6093600198600092612b75575b5050612b528b6001600160a01b03166000526005602052604060002090565b549085614ca9565b9061355b565b9630903390614ddd565b01905b9190916129a5565b612b8b9250803d1061140d576113fe8183611ba5565b3880612b33565b509450600191500190612b6d565b9450506129ae565b346103f757612bb63661076a565b6001600160a01b03600296939695949295541633036103f757848683612c0783610817867f8a49f1dbb0b988d0421183f74b9866ce7c88256f1b88cf865bf7f3a74706fe689b86612c149a8d6143b5565b5060405196879687613076565b0390a160065481811115612c285703600655005b9050612c3057005b6000600655005b346103f757612c4536610858565b906001600160a01b03600297949796959396541633036103f757858784612c9a84846108f088837fe6db00361b6a35af0ded81ba5696c1633e945a81008cd7da44fb8a78422a7d429e888f9d612c149e61453f565b50604051978897886130ac565b90600182811c92168015612cf0575b6020831014612cc157565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691612cb6565b6040519060008260005491612d0e83612ca7565b80835292602090600190818116908115612d9b5750600114612d3b575b5050612d3992500383611ba5565b565b915092600080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563936000925b828410612d835750612d399450505081016020013880612d2b565b85548885018301529485019487945092810192612d68565b905060209350612d399592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201013880612d2b565b156103f757565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b90811560018380041417156118fb57565b9067099e8db03256ce80918281029281840414901517156118fb57565b90600a820291808304600a14901517156118fb57565b90670de0b6b3a7640000918281029281840414901517156118fb57565b818102929181159184041417156118fb57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8115612ec1570490565b612e88565b600a5462015180612ee68265ffffffffffff60075460601c164203612e75565b0460065481811115612f0757039081811115612f00570390565b5050600090565b505090565b969197949098929a999568929eee149b4bd212689b308d541461190057308d556001600160a01b03806002541633036103f757612f4a368c8e611bc8565b918a600052600360205260ff612f746020604095866000208288519483868095519384920161041a565b82019081520301902054161561302c5760005260046020528082600020541692612f9f908585614201565b9b612fab8d898661436c565b82519b8c809c6101209182918152602001528c0190612fc992613055565b961690890152606088015260808701528760a087015260c086015284820360e0860152612ff592613055565b9063ffffffff16610100830152037f6b7977bd09a2e845fb431e372aac95edfb358014e167149b4f4d09021c87a79d91a191389055565b600483517f2c64c1b2000000000000000000000000000000000000000000000000000000008152fd5b601f8260209493601f19938186528686013760008582860101520116010190565b949060809497969263ffffffff9461309b92885260a0602089015260a0880191613055565b966040860152606085015216910152565b9590946130da6001600160a01b039363ffffffff969a999560a0988a5260c060208b015260c08a0191613055565b986040880152606087015216608085015216910152565b908160209103126103f757516110f181610495565b6040513d6000823e3d90fd5b6040517f19b90b0d0000000000000000000000000000000000000000000000000000000081526020816004816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610f885760009161317c575090565b6110f1915060203d60201161319e575b6131968183611ba5565b8101906130f1565b503d61318c565b9294959896909397919768929eee149b4bd2126898308a541461190057308a556001600160a01b039a8b6002541633036103f7576131e4368389611bc8565b9060009c8d9288845260ff613211602080936003825260408098208289519483868095519384920161041a565b820190815203019020541615613495576132296146b4565b613232866150c3565b600a5467099e8db03256ce8090049e8f61324c9088615092565b926805345cdf77eb68f44c54938461326391614d34565b9d8e81116134535750846132c6575b505050505088809a9b9c506132b893896132c09b9a9997947f7af4b988c9949d39dbe6398b8332fa201574208c2656602a23f1624c428bfe9199979451988998896134be565b0390a16144df565b91389055565b9190809281925b60038410613382575b505050508b809d9e9f61331861332d95969798999a9b9c9d9e610e6261330a6133056133229561332798612eb7565b6151e7565b670de0b6b3a7640000900490565b93600c549061355b565b61355b565b90612eb7565b808211613348578080808f9e9d9c9b9a999897969594613272565b82517f24557f0500000000000000000000000000000000000000000000000000000000815260048101919091526024810191909152604490fd5b9091929361339d611269866000526004602052604060002090565b83811690811561344b576133c4906001600160a01b03166000526005602052604060002090565b5489517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152909290918490839060249082905afa918215610f8857600193610e62610e5d61342495612b5a948b9161342e575b50612e58565b94019291906132cd565b6134459150893d8b1161140d576113fe8183611ba5565b3861341e565b5050936132d6565b8e61124e88519283927f24557f050000000000000000000000000000000000000000000000000000000084526004840160209093929193604081019481520152565b600484517f2c64c1b2000000000000000000000000000000000000000000000000000000008152fd5b96926134ee60c097936001600160a01b039263ffffffff98949c9b979c8b5260e060208c015260e08b0191613055565b991660408801526060870152608086015260a085015216910152565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156103f7570180359067ffffffffffffffff82116103f7576020019181360383136103f757565b919082018092116118fb57565b919082039182116118fb57565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156103f757016020813591019167ffffffffffffffff82116103f75781360383136103f757565b35906bffffffffffffffffffffffff821682036103f757565b906110f19061362861360d610140853584526135fd6020870187613575565b9091806020870152850191613055565b61361a6040860186613575565b908483036040860152613055565b9265ffffffffffff8061363d60608401611e3f565b16606084015261364f60808301611e3f565b1660808301526001600160a01b0360a082013561366b81610495565b1660a083015261367d60c082016135c5565b6bffffffffffffffffffffffff80911660c084015261369e60e083016135c5565b1660e083015261010067ffffffffffffffff6136bb82840161055d565b16908301526136ce61012080920161055d565b67ffffffffffffffff16910152565b90926136f86110f1969495939560c0845260c08401906135de565b9460208301526040604481840137608082015260a0818503910152613055565b939161373d9061374b9460c097939a99989a875260e0602088015260e0870191613055565b918483036040860152613055565b9460608201526040604460808301370152565b908160209103126103f7575190565b6001600160a01b031690604051917f70a08231000000000000000000000000000000000000000000000000000000008352306004840152602083602481845afa908115610f88576110f1936000926137d5575b50600052600560205260406000205491614ca9565b6137ef91925060203d60201161140d576113fe8183611ba5565b90386137c0565b95919396929490967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011329889548060038c556139f3575b506138859261388a959492613880926001600160a01b0390817fffffffffffffffffffffffff000000000000000000000000000000000000000093168360025416176002551690600954161760095561416e565b614cc4565b614632565b67ffffffffffffffff8411611b845784926000906138b1866138ac8454612ca7565b613a2d565b8190601f871160011461394b5795806139029261390997988592613940575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b9055613b14565b6139105750565b6002905560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a1565b0135905038806138d0565b600080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5639691601f198316845b8181106139d85750916139099798918460019594106139a0575b505050811b019055613b14565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c19910135169055388080613993565b828401358a556001909901988a985060209283019201613979565b90999260018281979694971c14303b1015613a1f5760ff9190911b9290921b989293909261388561382c565b63f92ee8a96000526004601cfd5b601f8111613a39575050565b600090600080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563906020601f850160051c83019410613a94575b601f0160051c01915b828110613a8957505050565b818155600101613a7d565b9092508290613a74565b90601f8211613aab575050565b60019160009060016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6906020601f850160051c83019410613b0a575b601f0160051c01915b828110613b005750505050565b8181558301613af3565b9092508290613aea565b919067ffffffffffffffff8111611b8457600190613b3b81613b368454612ca7565b613a9e565b6000601f8211600114613b8d578190613b899394956000926139405750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b9055565b6001600052601f198216947fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf691805b878110613c1057508385969710613bd8575b505050811b019055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c19910135169055388080613bce565b8282013584559285019260209182019101613bbc565b60405190613c3382611b89565b600382526060366020840137565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9190811015613c805760051b0190565b613c41565b8051821015613c805760209160051b010190565b9060406110f192670de0b6b3a7640000815281602082015201906110ac565b6040906110f19392815281602082015201906110ac565b356110f181610495565b6040517f8da5cb5b0000000000000000000000000000000000000000000000000000000081526020816004816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610f885760009161317c575090565b906040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020816024816001600160a01b0387165afa908115610f8857600091613dd9575b50613daf836001600160a01b0316600052600b602052604060002090565b5481039081116118fb576113596110f1936001600160a01b03166000526005602052604060002090565b613df2915060203d60201161140d576113fe8183611ba5565b38613d91565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116103f75760209260051b809284830137010190565b60409065ffffffffffff6110f195931681528160208201520191613df8565b6040517f70a08231000000000000000000000000000000000000000000000000000000008082523060048301529092906020906001600160a01b039082866024818886165afa958615610f8857600096613f77575b506040519081523060048201529082908290602490829087165afa918215610f8857613f3292613f1792613efd926000926113e7575050611335856001600160a01b0316600052600b602052604060002090565b936001600160a01b03166000526005602052604060002090565b54916001600160a01b03166000526005602052604060002090565b549283821480613f6e575b613f545790613f4f916110f195614ca9565b614daa565b92505082613f686110f19461332793612e75565b9261355b565b50811515613f3d565b83919650613f9190823d841161140d576113fe8183611ba5565b9590613ea9565b9099979496939198959268929eee149b4bd2126899308b541461190057308b5560ff613fef6020613fce610db18288018861350a565b8635600052600382526040600020826040519483868095519384920161041a565b820190815203019020541615612662576140076146b4565b61402067ffffffffffffffff60075460901c1683614d34565b928383038381116118fb57614035908e61376d565b8a811061404c575090899a9b9c6132c09a92614f32565b6040517f24557f050000000000000000000000000000000000000000000000000000000081526004810191909152602481018b9052604490fd5b92916040926140a5929695968552606060208601526060850191613055565b931515910152565b989794919592989693909668929eee149b4bd2126899308b541461190057308b5560ff61410560206140e4610db18287018761350a565b8535600052600382526040600020826040519483868095519384920161041a565b8201908152030190205416156126625761411d6146b4565b61413667ffffffffffffffff60075460901c1682614d34565b9182820398828a116118fb5761414f6132c09a8c61376d565b9a8b92614f32565b6040906110f1949281528160208201520191613df8565b67ffffffffffffffff811690670de0b6b3a764000082116103f7577f5b7d342bae9633dbbf79ee2bcab48506e0662e0a74be62192960beab09d2fbc6916020917fffffffffffff0000000000000000ffffffffffffffffffffffffffffffffffff79ffffffffffffffff0000000000000000000000000000000000006007549260901b16911617600755604051908152a1565b9061421f919392936142116146b4565b61421a826150c3565b613d43565b9182811161422a5750565b6040517f24557f05000000000000000000000000000000000000000000000000000000008152600481018490526024810191909152604490fd5b90600090828252600d6020526001600160a01b0390816040842054166142cb576040938352600d60205283832060017fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055168152600b60205220908154019055565b60046040517fed778779000000000000000000000000000000000000000000000000000000008152fd5b919091600091818352600d6020526001600160a01b0391826040852054166142cb5760409461435b918552600d602052858520906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b168152600b60205220908154019055565b60109260209260145260345260446000938480936fa9059cbb00000000000000000000000082525af13d1560018351141716156143a857603452565b6390b8ec1890526004601cfd5b9390614411927fffffffff0000000000000000000000000000000000000000000000000000000060649360405196848895602087019a8b378501936020850152604084015260e01b166060820152036044810184520182611ba5565b51902090565b600052600d6020526040600020908154916001600160a01b0383169283156103f7577fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600c5403600c5590565b6805345cdf77eb68f44c908154670de0b6b3a7640000928382019182106144d157556387a211a2600c526000526020600c20818154019055602052600c5160601c60007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3565b63e5cfe9576000526004601cfd5b6805345cdf77eb68f44c8054908382019182106144d157556387a211a2600c526000526020600c20818154019055602052600c5160601c60007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3565b94917fffffffff000000000000000000000000000000000000000000000000000000006078937fffffffffffffffffffffffffffffffffffffffff000000000000000000000000614411969760405198868a97602089019c8d378701956020870152604086015260601b16606084015260e01b166074820152036058810184520182611ba5565b600052600d6020526040600020918254906001600160a01b0382169384156103f7577fffffffffffffffffffffffff0000000000000000000000000000000000000000614629931690556001600160a01b0316600052600b602052604060002090565b90815403905590565b60207f9c1c6bae52abe079778f8408d952941f631f8b1d020e289245851e78f350c817916008547fffffffff0000000000000000000000000000000000000000ffffffffffffffff7bffffffffffffffffffffffffffffffffffffffff00000000000000008360401b169116176008556001600160a01b0360405191168152a1565b60075465ffffffffffff9081811690816146cd57505050565b60301c82169142831461492e5761471e9042167fffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff6bffffffffffff0000000000006007549260301b16911617600755565b60009080421015614869576000929192905b60038210614748575b505050611602612d3991612e25565b909192614762611269846000526004602052604060002090565b6001600160a01b038116156148625790816147926001936001600160a01b0316600052600e602052604060002090565b546147b0826001600160a01b03166000526005602052604060002090565b549080821461484e578181111561482657916147f782612b5a6147ed6147dd614819989661481398613568565b6147e78d42613568565b90612e75565b6133278c8b613568565b9283916001600160a01b03166000526005602052604060002090565b5561355b565b925b01925b919290614730565b916147f7826148426147ed6147dd614813976148489997613568565b90613568565b9261481b565b91505061485a9161355b565b92019261481e565b5092614739565b509050805b600381106148b1575b5061160261488491612e25565b612d397fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000060075416600755565b6148c8611269826000526004602052604060002090565b906001600160a01b038216156149285781926149216149076148ff6001956001600160a01b0316600052600e602052604060002090565b54809361355b565b946001600160a01b03166000526005602052604060002090565b550161486e565b50614877565b505050565b906387a211a2600c52816000526020600c2091825491828111610ad157600093816001600160a01b03940390556805345cdf77eb68f44c8181540390558352167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602083a3565b670de0b6b3a7640000907812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f2181118202158302156149cf57020490565b637c5f487d6000526004601cfd5b806fffffffffffffffffffffffffffffffff1060071b81811c67ffffffffffffffff1060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c60ff1060031b176000821315614c28577ff8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffff6f8421084210842108cc6318c6db6d54be83831c1c601f161a1890811b609f1c7ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000006060917fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832816c465772b2bbbb5f824b15207a30018202841d6d0388eaa27412d5aca026815d636e018202841d6d0df99ac502031bf953eff472fdcc018202841d6d13cdffb29d51d99322bdff5f2211018202841d6d0a0f742023def783a307a986912e018202841d6d01920d8043ca89b5239253284e42018202841d6c0b7a86d7375468fac667a0a5270193827ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f817fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9818080806c29508e458543d8aa4df2abee780102871d6d0139601a2efabe717e604cbb48940102861d6d02247f7a7b6594320649aa03aba10102851d0102831d0102901d01020105711340daa0d5f769dba1915cef59f0815a55060290609f037d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b631615e6386000526004601cfd5b9081600052600d6020526001600160a01b03604060002054166142cb57614c9791600052600d6020526040600020906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b600c549081018091116118fb57600c55565b810191908281116118fb57610e5d6147e7916110f19461499a565b67ffffffffffffffff16670a688906bd8b000081116103f7576020817fb77b18869f1146e7805c1d2169aa277954f24055acb20c3e15ddc3de57eacb85927fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000006008541617600855604051908152a1565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482118102614d6f57670de0b6b3a764000091020490565b63bac65e5b6000526004601cfd5b7f800000000000000000000000000000000000000000000000000000000000000081146118fb5760000390565b9190918115612ec157614dc1916133059104614d7d565b670de0b6b3a76400009081039081116118fb576110f191614d34565b601c600060649281946020966040519860605260405260601b602c526f23b872dd000000000000000000000000600c525af13d15600160005114171615614e28576000606052604052565b637939f4246000526004601cfd5b67ffffffffffffffff600854169182614e4e57505050565b612d3992614e5b91614d34565b90614e64613112565b9061436c565b9461ffff946110f19a989460ff614e946001600160a01b03969c9a95610100808c528b01906135de565b9b1660208901526040880152606087015260808601521660a08401521660c082015260e0818503910152613055565b9a96918b61ffff9a966101209c989f9e9a96614efc614f0a9460ff986001600160a01b0397610140908752806020880152860191613055565b926040818503910152613055565b9c1660608b015216608089015260a088015260c087015260e086015261010085015216910152565b989990999796979593929495614f526001600160a01b038a161515612dde565b614f6a610e80610e806002546001600160a01b031690565b90614f758886613568565b91803b156103f757848c614fc28f968b958e8c996000996040519b8c9a8b998a997fd6512967000000000000000000000000000000000000000000000000000000008b5260048b01614e6a565b039134905af18015610f885761507f575b506040880196614fe3888a61350a565b8b614fee8987613568565b884363ffffffff16936150009561453f565b908a61500c8886613568565b91615016936142f5565b6150228230338c614ddd565b61502c858a614e36565b615039602089018961350a565b999097615046908a61350a565b906040519b8c9b359a6150599b8d614ec3565b037f39d3d3ef1ca8c28e2940bcde183fe626d94dca2df8d9ba3bdcd7a91caa31e36191a1565b80610f7c61508c92611b70565b38614fd3565b8115612ec1576150a6916133059104614d7d565b670de0b6b3a7640000908082039182116118fb576110f19161499a565b600a54906151016150f8836150f16150e660075465ffffffffffff9060601c1690565b65ffffffffffff1690565b4203612e75565b62015180900490565b906006548281111561519357906151179161355b565b0390811161516957600780547fffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff164260601b71ffffffffffff00000000000000000000000016179055612d3990600655565b60046040517f7c1e66d0000000000000000000000000000000000000000000000000000000008152fd5b50809291501161516957600780547fffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff164260601b71ffffffffffff00000000000000000000000016179055612d3990600655565b7ffffffffffffffffffffffffffffffffffffffffffffffffdc0d0570925a462d78113156153ae57680755bf798b4a1bf1e58112156153a0576503782dace9d990604e1b0574029d9dc38563c32e5c2f6dc192ee70ef65f9978af36bb17217f7d1cf79abc9e3b3989179d835ebba824c98fb31b83b2ca45c0000000000000000000000006060916b8000000000000000000000008582851b0501831d94850290036e0587f503bb6ea29d25fcb740196450816c10fe68e7fd37d0007b713f7650810102841d936e05180bb14799ab47a8a8cb2a527d57837ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb816db1bbb201f443cf962f1a1d3db4a5817fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c816d0277594991cfc85f6e2461837cd9817fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a55048101028a1d0102881d0102861d0102841d0102821d01947ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e846d02d16720577bd19bf614176fe9ea830192010102901d01020105029060c3031c90565b63a37bfec96000526004601cfd5b5060009056fea2646970667358221220c411c9aa3335191465438a199dc2c5e723e771c8db84e43fb90bad3652cd1f1864736f6c63430008160033000000000000000000000000343a85b1e0383a50d65adb5ed88b06ccf4187606000000000000000000000000d29ff5661e446f53c69241a5f697771905b643d4
0x000000000000000000000000343a85b1e0383a50d65adb5ed88b06ccf4187606000000000000000000000000d29ff5661e446f53c69241a5f697771905b643d4
----Decoded View------------Arg [0] : factory_ (address): 0x343A85b1e0383A50D65adB5ed88B06cCF4187606Arg [1] : mathlib_ (address): 0xd29Ff5661e446f53c69241a5F697771905b643D4
----Encoded View------------Arg [0] : 0x000000000000000000000000343a85b1e0383a50d65adb5ed88b06ccf4187606Arg [1] : 0x000000000000000000000000d29ff5661e446f53c69241a5f697771905b643d4