[ { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "address", "name": "lzEndpoint", "type": "address" }, { "internalType": "address", "name": "delegate", "type": "address" }, { "internalType": "uint256", "name": "_reserveRatio", "type": "uint256" } ], "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": [ { "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": "FailedInnerCall", "type": "error" }, { "inputs": [], "name": "InvalidDelegate", "type": "error" }, { "inputs": [], "name": "InvalidEndpointCall", "type": "error" }, { "inputs": [], "name": "InvalidLocalDecimals", "type": "error" }, { "inputs": [ { "internalType": "bytes", "name": "options", "type": "bytes" } ], "name": "InvalidOptions", "type": "error" }, { "inputs": [], "name": "LzTokenUnavailable", "type": "error" }, { "inputs": [ { "internalType": "uint32", "name": "eid", "type": "uint32" } ], "name": "NoPeer", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "msgValue", "type": "uint256" } ], "name": "NotEnoughNative", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "OnlyEndpoint", "type": "error" }, { "inputs": [ { "internalType": "uint32", "name": "eid", "type": "uint32" }, { "internalType": "bytes32", "name": "sender", "type": "bytes32" } ], "name": "OnlyPeer", "type": "error" }, { "inputs": [], "name": "OnlySelf", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SafeERC20FailedOperation", "type": "error" }, { "inputs": [ { "internalType": "bytes", "name": "result", "type": "bytes" } ], "name": "SimulationResult", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "amountLD", "type": "uint256" }, { "internalType": "uint256", "name": "minAmountLD", "type": "uint256" } ], "name": "SlippageExceeded", "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": [ { "components": [ { "internalType": "uint32", "name": "eid", "type": "uint32" }, { "internalType": "uint16", "name": "msgType", "type": "uint16" }, { "internalType": "bytes", "name": "options", "type": "bytes" } ], "indexed": false, "internalType": "struct EnforcedOptionParam[]", "name": "_enforcedOptions", "type": "tuple[]" } ], "name": "EnforcedOptionSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "inspector", "type": "address" } ], "name": "MsgInspectorSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "guid", "type": "bytes32" }, { "indexed": false, "internalType": "uint32", "name": "srcEid", "type": "uint32" }, { "indexed": true, "internalType": "address", "name": "toAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountReceivedLD", "type": "uint256" } ], "name": "OFTReceived", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "guid", "type": "bytes32" }, { "indexed": false, "internalType": "uint32", "name": "dstEid", "type": "uint32" }, { "indexed": true, "internalType": "address", "name": "fromAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountSentLD", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amountReceivedLD", "type": "uint256" } ], "name": "OFTSent", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint32", "name": "eid", "type": "uint32" }, { "indexed": false, "internalType": "bytes32", "name": "peer", "type": "bytes32" } ], "name": "PeerSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "preCrimeAddress", "type": "address" } ], "name": "PreCrimeSet", "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" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [], "name": "SEND", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SEND_AND_CALL", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "srcEid", "type": "uint32" }, { "internalType": "bytes32", "name": "sender", "type": "bytes32" }, { "internalType": "uint64", "name": "nonce", "type": "uint64" } ], "internalType": "struct Origin", "name": "origin", "type": "tuple" } ], "name": "allowInitializePath", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "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": [], "name": "approvalRequired", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "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": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "calculateCurvedBurnReturn", "outputs": [ { "internalType": "uint256", "name": "burnAmount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "calculateCurvedMintReturn", "outputs": [ { "internalType": "uint256", "name": "mintAmount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_supply", "type": "uint256" }, { "internalType": "uint256", "name": "_connectorBalance", "type": "uint256" }, { "internalType": "uint32", "name": "_connectorWeight", "type": "uint32" }, { "internalType": "uint256", "name": "_depositAmount", "type": "uint256" } ], "name": "calculatePurchaseReturn", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_supply", "type": "uint256" }, { "internalType": "uint256", "name": "_connectorBalance", "type": "uint256" }, { "internalType": "uint32", "name": "_connectorWeight", "type": "uint32" }, { "internalType": "uint256", "name": "_sellAmount", "type": "uint256" } ], "name": "calculateSaleReturn", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_eid", "type": "uint32" }, { "internalType": "uint16", "name": "_msgType", "type": "uint16" }, { "internalType": "bytes", "name": "_extraOptions", "type": "bytes" } ], "name": "combineOptions", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimalConversionRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "endpoint", "outputs": [ { "internalType": "contract ILayerZeroEndpointV2", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "eid", "type": "uint32" }, { "internalType": "uint16", "name": "msgType", "type": "uint16" } ], "name": "enforcedOptions", "outputs": [ { "internalType": "bytes", "name": "enforcedOption", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "srcEid", "type": "uint32" }, { "internalType": "bytes32", "name": "sender", "type": "bytes32" }, { "internalType": "uint64", "name": "nonce", "type": "uint64" } ], "internalType": "struct Origin", "name": "", "type": "tuple" }, { "internalType": "bytes", "name": "", "type": "bytes" }, { "internalType": "address", "name": "_sender", "type": "address" } ], "name": "isComposeMsgSender", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_eid", "type": "uint32" }, { "internalType": "bytes32", "name": "_peer", "type": "bytes32" } ], "name": "isPeer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "srcEid", "type": "uint32" }, { "internalType": "bytes32", "name": "sender", "type": "bytes32" }, { "internalType": "uint64", "name": "nonce", "type": "uint64" } ], "internalType": "struct Origin", "name": "_origin", "type": "tuple" }, { "internalType": "bytes32", "name": "_guid", "type": "bytes32" }, { "internalType": "bytes", "name": "_message", "type": "bytes" }, { "internalType": "address", "name": "_executor", "type": "address" }, { "internalType": "bytes", "name": "_extraData", "type": "bytes" } ], "name": "lzReceive", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "components": [ { "components": [ { "internalType": "uint32", "name": "srcEid", "type": "uint32" }, { "internalType": "bytes32", "name": "sender", "type": "bytes32" }, { "internalType": "uint64", "name": "nonce", "type": "uint64" } ], "internalType": "struct Origin", "name": "origin", "type": "tuple" }, { "internalType": "uint32", "name": "dstEid", "type": "uint32" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "bytes32", "name": "guid", "type": "bytes32" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "address", "name": "executor", "type": "address" }, { "internalType": "bytes", "name": "message", "type": "bytes" }, { "internalType": "bytes", "name": "extraData", "type": "bytes" } ], "internalType": "struct InboundPacket[]", "name": "_packets", "type": "tuple[]" } ], "name": "lzReceiveAndRevert", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "srcEid", "type": "uint32" }, { "internalType": "bytes32", "name": "sender", "type": "bytes32" }, { "internalType": "uint64", "name": "nonce", "type": "uint64" } ], "internalType": "struct Origin", "name": "_origin", "type": "tuple" }, { "internalType": "bytes32", "name": "_guid", "type": "bytes32" }, { "internalType": "bytes", "name": "_message", "type": "bytes" }, { "internalType": "address", "name": "_executor", "type": "address" }, { "internalType": "bytes", "name": "_extraData", "type": "bytes" } ], "name": "lzReceiveSimulate", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "msgInspector", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "", "type": "uint32" }, { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "nextNonce", "outputs": [ { "internalType": "uint64", "name": "nonce", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "oApp", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "oAppVersion", "outputs": [ { "internalType": "uint64", "name": "senderVersion", "type": "uint64" }, { "internalType": "uint64", "name": "receiverVersion", "type": "uint64" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "oftVersion", "outputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" }, { "internalType": "uint64", "name": "version", "type": "uint64" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "eid", "type": "uint32" } ], "name": "peers", "outputs": [ { "internalType": "bytes32", "name": "peer", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "poolBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "preCrime", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "dstEid", "type": "uint32" }, { "internalType": "bytes32", "name": "to", "type": "bytes32" }, { "internalType": "uint256", "name": "amountLD", "type": "uint256" }, { "internalType": "uint256", "name": "minAmountLD", "type": "uint256" }, { "internalType": "bytes", "name": "extraOptions", "type": "bytes" }, { "internalType": "bytes", "name": "composeMsg", "type": "bytes" }, { "internalType": "bytes", "name": "oftCmd", "type": "bytes" } ], "internalType": "struct SendParam", "name": "_sendParam", "type": "tuple" } ], "name": "quoteOFT", "outputs": [ { "components": [ { "internalType": "uint256", "name": "minAmountLD", "type": "uint256" }, { "internalType": "uint256", "name": "maxAmountLD", "type": "uint256" } ], "internalType": "struct OFTLimit", "name": "oftLimit", "type": "tuple" }, { "components": [ { "internalType": "int256", "name": "feeAmountLD", "type": "int256" }, { "internalType": "string", "name": "description", "type": "string" } ], "internalType": "struct OFTFeeDetail[]", "name": "oftFeeDetails", "type": "tuple[]" }, { "components": [ { "internalType": "uint256", "name": "amountSentLD", "type": "uint256" }, { "internalType": "uint256", "name": "amountReceivedLD", "type": "uint256" } ], "internalType": "struct OFTReceipt", "name": "oftReceipt", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "dstEid", "type": "uint32" }, { "internalType": "bytes32", "name": "to", "type": "bytes32" }, { "internalType": "uint256", "name": "amountLD", "type": "uint256" }, { "internalType": "uint256", "name": "minAmountLD", "type": "uint256" }, { "internalType": "bytes", "name": "extraOptions", "type": "bytes" }, { "internalType": "bytes", "name": "composeMsg", "type": "bytes" }, { "internalType": "bytes", "name": "oftCmd", "type": "bytes" } ], "internalType": "struct SendParam", "name": "_sendParam", "type": "tuple" }, { "internalType": "bool", "name": "_payInLzToken", "type": "bool" } ], "name": "quoteSend", "outputs": [ { "components": [ { "internalType": "uint256", "name": "nativeFee", "type": "uint256" }, { "internalType": "uint256", "name": "lzTokenFee", "type": "uint256" } ], "internalType": "struct MessagingFee", "name": "msgFee", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "reserveRatio", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "scale", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "dstEid", "type": "uint32" }, { "internalType": "bytes32", "name": "to", "type": "bytes32" }, { "internalType": "uint256", "name": "amountLD", "type": "uint256" }, { "internalType": "uint256", "name": "minAmountLD", "type": "uint256" }, { "internalType": "bytes", "name": "extraOptions", "type": "bytes" }, { "internalType": "bytes", "name": "composeMsg", "type": "bytes" }, { "internalType": "bytes", "name": "oftCmd", "type": "bytes" } ], "internalType": "struct SendParam", "name": "_sendParam", "type": "tuple" }, { "components": [ { "internalType": "uint256", "name": "nativeFee", "type": "uint256" }, { "internalType": "uint256", "name": "lzTokenFee", "type": "uint256" } ], "internalType": "struct MessagingFee", "name": "_fee", "type": "tuple" }, { "internalType": "address", "name": "_refundAddress", "type": "address" } ], "name": "send", "outputs": [ { "components": [ { "internalType": "bytes32", "name": "guid", "type": "bytes32" }, { "internalType": "uint64", "name": "nonce", "type": "uint64" }, { "components": [ { "internalType": "uint256", "name": "nativeFee", "type": "uint256" }, { "internalType": "uint256", "name": "lzTokenFee", "type": "uint256" } ], "internalType": "struct MessagingFee", "name": "fee", "type": "tuple" } ], "internalType": "struct MessagingReceipt", "name": "msgReceipt", "type": "tuple" }, { "components": [ { "internalType": "uint256", "name": "amountSentLD", "type": "uint256" }, { "internalType": "uint256", "name": "amountReceivedLD", "type": "uint256" } ], "internalType": "struct OFTReceipt", "name": "oftReceipt", "type": "tuple" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_delegate", "type": "address" } ], "name": "setDelegate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "eid", "type": "uint32" }, { "internalType": "uint16", "name": "msgType", "type": "uint16" }, { "internalType": "bytes", "name": "options", "type": "bytes" } ], "internalType": "struct EnforcedOptionParam[]", "name": "_enforcedOptions", "type": "tuple[]" } ], "name": "setEnforcedOptions", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_msgInspector", "type": "address" } ], "name": "setMsgInspector", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_eid", "type": "uint32" }, { "internalType": "bytes32", "name": "_peer", "type": "bytes32" } ], "name": "setPeer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_preCrime", "type": "address" } ], "name": "setPreCrime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sharedDecimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "token", "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": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ]
610100604052600360c090815262302e3360e81b60e05260009062000025908262000ba6565b50670de0b6b3a7640000608b8190556200004190600162000c88565b608c553480156200005157600080fd5b50604051620059bc380380620059bc833981016040819052620000749162000d74565b848484848484848484838360126001641c35fedd1560601b036021556001646c3390ecc9605e1b036022556001640cf801476160611b0360235560016431bdb23e1d605f1b0360245560016502fb1d8fe083605b1b0360255560016505b771955b37605a1b036026556001650af67a93bb5160591b0360275560016515060c256cb360581b036028556001651428a2f98d7360581b036029556001654d515663970960561b03602a55600165944620b0e70f60551b03602b55600166011c592761c66760541b03602c5560016602214d10d014eb60531b03602d55600166020ade36b7dbef60531b03602e5560016603eab73b3bbfe360521b03602f556001660782ee3593f6d760511b036030556001661ccf4b44bb4821604f1b0360315560016606e7f88ad8a77760511b0360325560016669f3d1c921891d604d1b03603355600166cb2ff529eb71e5604c1b03603455600166c2d415c3db974b604c1b0360355560016702eb40f9f620fda7604a1b0360365560016705990681d961a1eb60491b03603755600167055e12902701414760491b0360385560016714962dee9dc9764160471b0360395560016704ef57b9b560fab560491b03603a5560016712ed7b32a58f552b60471b03603b556001679131271922eaa60760441b03603c556001678b380f3558668c4760441b03603d556001680215f77c045fbe885760421b03603e556001600160831b03603f556001670f577eded5773a1160471b036040556001680eb5ec597592befbf5603f1b036041556001681c35fedd14b861eb05603e1b036042556001683619c87664579bc94b603d1b0360435560016867c00a3b07ffc01fd7603c1b03604455600168c6f6c8f8739773a7a5603b1b03604555600168bec763f8209b7a72b1603b1b0360465560016902dbb8caad9b7097b91b60391b03604755600169057b3d49dda84556d6f760381b03604855600169054183095b2c8ececf3160381b036049556001690a14517cc6b9457111ef60371b03604a5560016913545598e5c23276ccf160361b03604b556001692511882c39c3adea96ff60351b03604c55600169471649d87199aa99075760341b03604d557004429a21a029d4c1457cfbffffffffffff604e55700415bc6d6fb7dd71af2cb3ffffffffffff604f557003eab73b3bbfe282243ce1ffffffffffff6050557003c1771ac9fb6b4c18e229ffffffffffff605155700399e96897690418f785257fffffffffff605255700373fc456c53bb779bf0ea9fffffffffff60535570034f9e8e490c48e67e6ab8bfffffffffff60545570032cbfd4a7adc790560b3337ffffffffff60555570030b50570f6e5d2acca94613ffffffffff6056557002eb40f9f620fda6b56c2861ffffffffff6057557002cc8340ecb0d0f520a6af58ffffffffff6058557002af09481380a0a35cf1ba02ffffffffff605955700292c5bdd3b92ec810287b1b3fffffffff605a55700277abdcdab07d5a77ac6d6b9fffffffff605b5570025daf6654b1eaa55fd64df5efffffffff605c55700244c49c648baa98192dce88b7ffffffff605d5570022ce03cd5619a311b2471268bffffffff605e55700215f77c045fbe885654a44a0fffffffff605f556001600160811b036060557001eaefdbdaaee7421fc4d3ede5ffffffff6061557001d6bd8b2eb257df7e8ca57b09bfffffff6062557001c35fedd14b861eb0443f7f133fffffff6063557001b0ce43b322bcde4a56e8ada5afffffff60645570019f0028ec1fff007f5a195a39dfffffff60655570018ded91f0e72ee74f49b15ba527ffffff60665570017d8ec7f04136f4e5615fd41a63ffffff60675570016ddc6556cdb84bdc8d12d22e6fffffff60685570015ecf52776a1155b5bd8395814f7fffff60695570015060c256cb23b3b3cc3754cf40ffffff606a557001428a2f98d728ae223ddab715be3fffff606b5570013545598e5c23276ccf0ede68034fffff606c557001288c4161ce1d6f54b7f61081194fffff606d5570011c592761c666aa641d5a01a40f17ffff606e55700110a688680a7530515f3e6e6cfdcdffff606f557001056f1b5bedf75c6bcb2ce8aed428ffff6070556ffaadceceeff8a0890f3875f008277fff6071556ff05dc6b27edad306388a600f6ba0bfff6072556fe67a5a25da41063de1495d5b18cdbfff6073556fdcff115b14eedde6fc3aa5353f2e4fff6074556fd3e7a3924312399f9aae2e0f868f8fff6075556fcb2ff529eb71e41582cccd5a1ee26fff6076556fc2d415c3db974ab32a51840c0b67edff6077556fbad03e7d883f69ad5b0a186184e06bff6078556fb320d03b2c343d4829abd6075f0cc5ff6079556fabc25204e02828d73c6e80bcdb1a95bf607a556fa4b16f74ee4bb2040a1ec6c15fbbf2df607b556f9deaf736ac1f569deb1b5ae3f36c130f607c556f976bd9952c7aa957f5937d790ef65037607d556f9131271922eaa6064b73a22d0bd4f2bf607e556f8b380f3558668c46c91c49a2f8e967b9607f556f857ddf0117efa215952912839f6473e66080558484818181818e6001600160a01b038116620007e7576000604051631e4fbdf760e01b8152600401620007de919062000e0d565b60405180910390fd5b620007f28162000938565b506001600160a01b0380831660805281166200082157604051632d618d8160e21b815260040160405180910390fd5b6080516001600160a01b031663ca5eb5e1826040518263ffffffff1660e01b815260040162000851919062000e0d565b600060405180830381600087803b1580156200086c57600080fd5b505af115801562000881573d6000803e3d6000fd5b5050505050505050620008996200098a60201b60201c565b60ff168360ff161015620008c0576040516301e9714b60e41b815260040160405180910390fd5b620008cd60068462000e21565b620008da90600a62000f3a565b60a0525060899150620008f09050838262000ba6565b50608a620008ff828262000ba6565b505050608d8590555050608b546200092892503391506200092290600162000c88565b6200098f565b5050505050505050505062000f68565b608180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600690565b6001600160a01b038216620009bc57600060405163ec442f0560e01b8152600401620007de919062000e0d565b620009ca60008383620009ce565b5050565b6001600160a01b038316620009fd578060886000828254620009f1919062000f52565b9091555062000a719050565b6001600160a01b0383166000908152608660205260409020548181101562000a525760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401620007de565b6001600160a01b03841660009081526086602052604090209082900390555b6001600160a01b03821662000a8f5760888054829003905562000aae565b6001600160a01b03821660009081526086602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000af491815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168062000b2c57607f821691505b60208210810362000b4d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000ba157600081815260208120601f850160051c8101602086101562000b7c5750805b601f850160051c820191505b8181101562000b9d5782815560010162000b88565b5050505b505050565b81516001600160401b0381111562000bc25762000bc262000b01565b62000bda8162000bd3845462000b17565b8462000b53565b602080601f83116001811462000c12576000841562000bf95750858301515b600019600386901b1c1916600185901b17855562000b9d565b600085815260208120601f198616915b8281101562000c435788860151825594840194600190910190840162000c22565b508582101562000c625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000ca25762000ca262000c72565b92915050565b600082601f83011262000cba57600080fd5b81516001600160401b038082111562000cd75762000cd762000b01565b604051601f8301601f19908116603f0116810190828211818310171562000d025762000d0262000b01565b8160405283815260209250868385880101111562000d1f57600080fd5b600091505b8382101562000d43578582018301518183018401529082019062000d24565b600093810190920192909252949350505050565b80516001600160a01b038116811462000d6f57600080fd5b919050565b600080600080600060a0868803121562000d8d57600080fd5b85516001600160401b038082111562000da557600080fd5b62000db389838a0162000ca8565b9650602088015191508082111562000dca57600080fd5b5062000dd98882890162000ca8565b94505062000dea6040870162000d57565b925062000dfa6060870162000d57565b9150608086015190509295509295909350565b6001600160a01b0391909116815260200190565b60ff828116828216039081111562000ca25762000ca262000c72565b600181815b8085111562000e7e57816000190482111562000e625762000e6262000c72565b8085161562000e7057918102915b93841c939080029062000e42565b509250929050565b60008262000e975750600162000ca2565b8162000ea65750600062000ca2565b816001811462000ebf576002811462000eca5762000eea565b600191505062000ca2565b60ff84111562000ede5762000ede62000c72565b50506001821b62000ca2565b5060208310610133831016604e8410600b841016171562000f0f575081810a62000ca2565b62000f1b838362000e3d565b806000190482111562000f325762000f3262000c72565b029392505050565b600062000f4b60ff84168362000e86565b9392505050565b8082018082111562000ca25762000ca262000c72565b60805160a0516149e862000fd4600039600081816106c801528181611f1001528181611f85015261351d01526000818161054b01528181610a930152818161130c015281816115e501528181611a5601528181611d290152818161361e01526136d701526149e86000f3fe60806040526004361061024f5760003560e01c806306fdde0314610259578063095ea7b3146102845780630c7d5cd8146102b45780630d35b415146102d8578063111ecdad146103075780631249c58b1461024f57806313137d6514610334578063134d4f2514610347578063156a0d0f1461036f57806317442b701461039657806318160ddd146103b85780631f5e1334146103cd57806323b872dd146103e257806329a00e7c14610402578063313ce567146104225780633400288b146104445780633b6f743b1461046457806342966c681461049157806349f9b0f7146104b157806352ae2879146104d157806354fd4d50146104e45780635535d461146104f95780635a0dfe4d146105195780635e280f11146105395780636d6f1e011461056d5780636fc1b31e1461058d57806370a08231146105ad578063715018a6146105e35780637d25a05e146105f857806382413eac14610633578063857749b0146106625780638da5cb5b1461067657806395d89b411461068b57806396365d44146106a0578063963efcaa146106b65780639a4f318b146106ea5780639f68b9641461070a578063a9059cbb1461071e578063b731ea0a1461073e578063b98bd0701461075e578063bb0b6a531461077e578063bc70b354146107ab578063bd815db0146107cb578063c7c7f5b3146107de578063ca5eb5e1146107ff578063d045a0dc1461081f578063d424388514610832578063dd62ed3e14610852578063f2fde38b14610872578063f51e181a14610892578063fc0c546a146104d1578063ff7bd03d146108a8575b6102576108c8565b005b34801561026557600080fd5b5061026e610929565b60405161027b9190613993565b60405180910390f35b34801561029057600080fd5b506102a461029f3660046139bb565b6109bb565b604051901515815260200161027b565b3480156102c057600080fd5b506102ca608d5481565b60405190815260200161027b565b3480156102e457600080fd5b506102f86102f33660046139ff565b6109d5565b60405161027b93929190613a42565b34801561031357600080fd5b50608554610327906001600160a01b031681565b60405161027b9190613acf565b610257610342366004613b3d565b610a91565b34801561035357600080fd5b5061035c600281565b60405161ffff909116815260200161027b565b34801561037b57600080fd5b506040805162b9270b60e21b8152600160208201520161027b565b3480156103a257600080fd5b506040805160018152600260208201520161027b565b3480156103c457600080fd5b506088546102ca565b3480156103d957600080fd5b5061035c600181565b3480156103ee57600080fd5b506102a46103fd366004613bdc565b610b40565b34801561040e57600080fd5b506102ca61041d366004613c36565b610b66565b34801561042e57600080fd5b5060125b60405160ff909116815260200161027b565b34801561045057600080fd5b5061025761045f366004613c73565b610be6565b34801561047057600080fd5b5061048461047f366004613c9d565b610bfc565b60405161027b9190613cee565b34801561049d57600080fd5b506102576104ac366004613cfc565b610c57565b3480156104bd57600080fd5b506102ca6104cc366004613c36565b610c97565b3480156104dd57600080fd5b5030610327565b3480156104f057600080fd5b5061026e610d1f565b34801561050557600080fd5b5061026e610514366004613d27565b610dad565b34801561052557600080fd5b506102a4610534366004613c73565b610dd1565b34801561054557600080fd5b506103277f000000000000000000000000000000000000000000000000000000000000000081565b34801561057957600080fd5b506102ca610588366004613cfc565b610ded565b34801561059957600080fd5b506102576105a8366004613d5a565b610e07565b3480156105b957600080fd5b506102ca6105c8366004613d5a565b6001600160a01b031660009081526086602052604090205490565b3480156105ef57600080fd5b50610257610e65565b34801561060457600080fd5b5061061b610613366004613c73565b600092915050565b6040516001600160401b03909116815260200161027b565b34801561063f57600080fd5b506102a461064e366004613d77565b6001600160a01b0381163014949350505050565b34801561066e57600080fd5b506006610432565b34801561068257600080fd5b50610327610e79565b34801561069757600080fd5b5061026e610e88565b3480156106ac57600080fd5b506102ca608c5481565b3480156106c257600080fd5b506102ca7f000000000000000000000000000000000000000000000000000000000000000081565b3480156106f657600080fd5b506102ca610705366004613cfc565b610e97565b34801561071657600080fd5b5060006102a4565b34801561072a57600080fd5b506102a46107393660046139bb565b610eb1565b34801561074a57600080fd5b50608354610327906001600160a01b031681565b34801561076a57600080fd5b50610257610779366004613e21565b610ebf565b34801561078a57600080fd5b506102ca610799366004613e62565b60826020526000908152604090205481565b3480156107b757600080fd5b5061026e6107c6366004613e7d565b610ed9565b6102576107d9366004613e21565b611081565b6107f16107ec366004613edd565b6111fe565b60405161027b929190613f4a565b34801561080b57600080fd5b5061025761081a366004613d5a565b6112ed565b61025761082d366004613b3d565b611376565b34801561083e57600080fd5b5061025761084d366004613d5a565b6113a5565b34801561085e57600080fd5b506102ca61086d366004613f86565b6113f8565b34801561087e57600080fd5b5061025761088d366004613d5a565b611423565b34801561089e57600080fd5b506102ca608b5481565b3480156108b457600080fd5b506102a46108c3366004613fb4565b61145e565b6000341161091d5760405162461bcd60e51b815260206004820152601e60248201527f4d7573742073656e6420657468657220746f2062757920746f6b656e732e000060448201526064015b60405180910390fd5b61092634611494565b50565b60606089805461093890613fd0565b80601f016020809104026020016040519081016040528092919081815260200182805461096490613fd0565b80156109b15780601f10610986576101008083540402835291602001916109b1565b820191906000526020600020905b81548152906001019060200180831161099457829003601f168201915b5050505050905090565b6000336109c98185856114c3565b60019150505b92915050565b604080518082019091526000808252602082015260606109f3613905565b60408051808201825260008082526001600160401b03602080840182905284518381529081019094529195509182610a4e565b604080518082019091526000815260606020820152815260200190600190039081610a265790505b509350600080610a73604089013560608a0135610a6e60208c018c613e62565b6114d0565b60408051808201909152918252602082015296989597505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610adc57336040516391ac5e4f60e01b81526004016109149190613acf565b60208701803590610af690610af1908a613e62565b611514565b14610b2857610b086020880188613e62565b876020013560405163309afaf360e21b815260040161091492919061401a565b610b3787878787878787611550565b50505050505050565b600033610b4e8582856116b0565b610b59858585611703565b60019150505b9392505050565b6000620f423f1963ffffffff841601610b955783610b848387614046565b610b8e9190614073565b9050610bde565b60008080610ba38786614087565b9050610bb4818888620f4240611762565b9093509150600060ff8316610bc9858b614046565b901c9050610bd7898261409a565b9450505050505b949350505050565b610bee6118a1565b610bf882826118d3565b5050565b610c04613905565b6000610c2060408501356060860135610a6e6020880188613e62565b915050600080610c308684611929565b9092509050610c4d610c456020880188613e62565b838388611a4c565b9695505050505050565b6000610c6282611b21565b604051909150339082156108fc029083906000818181858888f19350505050158015610c92573d6000803e3d6000fd5b505050565b6000848203610ca7575082610bde565b620f423f1963ffffffff841601610cc35784610b848386614046565b60008080610cd1858961409a565b9050610ce28882620f424089611762565b90935091506000610cf38489614046565b905060ff831688901b84610d07828461409a565b610d119190614073565b9a9950505050505050505050565b60008054610d2c90613fd0565b80601f0160208091040260200160405190810160405280929190818152602001828054610d5890613fd0565b8015610da55780601f10610d7a57610100808354040283529160200191610da5565b820191906000526020600020905b815481529060010190602001808311610d8857829003601f168201915b505050505081565b608460209081526000928352604080842090915290825290208054610d2c90613fd0565b63ffffffff919091166000908152608260205260409020541490565b60006109cf610dfb60885490565b608c54608d5485610c97565b610e0f6118a1565b608580546001600160a01b0319166001600160a01b0383161790556040517ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d441419790610e5a908390613acf565b60405180910390a150565b610e6d6118a1565b610e776000611b4a565b565b6081546001600160a01b031690565b6060608a805461093890613fd0565b60006109cf610ea560885490565b608c54608d5485610b66565b6000336109c9818585611703565b610ec76118a1565b610bf8610ed4828461414e565b611b9c565b63ffffffff8416600090815260846020908152604080832061ffff87168452909152812080546060929190610f0d90613fd0565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3990613fd0565b8015610f865780601f10610f5b57610100808354040283529160200191610f86565b820191906000526020600020905b815481529060010190602001808311610f6957829003601f168201915b505050505090508051600003610fd65783838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929450610bde9350505050565b6000839003610fe6579050610bde565b600283106110645761102d84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611cad92505050565b8061103b8460028188614263565b60405160200161104d9392919061428d565b604051602081830303815290604052915050610bde565b8383604051639a6d49cd60e01b81526004016109149291906142de565b60005b8181101561117d573683838381811061109f5761109f6142f2565b90506020028101906110b19190614308565b90506110cd6110c36020830183613e62565b6020830135610dd1565b6110d7575061116b565b3063d045a0dc60c08301358360a08101356110f6610100830183614329565b611107610100890160e08a01613d5a565b6111156101208a018a614329565b6040518963ffffffff1660e01b81526004016111379796959493929190614384565b6000604051808303818588803b15801561115057600080fd5b505af1158015611164573d6000803e3d6000fd5b5050505050505b80611175816143fc565b915050611084565b50336001600160a01b0316638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa1580156111bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111e49190810190614415565b604051638351eea760e01b81526004016109149190613993565b61120661391f565b61120e613905565b60008061123133604089013560608a013561122c60208c018c613e62565b611cd9565b915091506000806112428984611929565b909250905061126e61125760208b018b613e62565b8383611268368d90038d018d614482565b8b611cf6565b60408051808201909152858152602080820186905282519298509096503391907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a906112bc908d018d613e62565b6040805163ffffffff909216825260208201899052810187905260600160405180910390a350505050935093915050565b6112f56118a1565b60405163ca5eb5e160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190611341908490600401613acf565b600060405180830381600087803b15801561135b57600080fd5b505af115801561136f573d6000803e3d6000fd5b5050505050565b3330146113965760405163029a949d60e31b815260040160405180910390fd5b610b3787878787878787610b28565b6113ad6118a1565b608380546001600160a01b0319166001600160a01b0383161790556040517fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090610e5a908390613acf565b6001600160a01b03918216600090815260876020908152604080832093909416825291909152205490565b61142b6118a1565b6001600160a01b038116611455576000604051631e4fbdf760e01b81526004016109149190613acf565b61092681611b4a565b60006020820180359060829083906114769086613e62565b63ffffffff1681526020810191909152604001600020541492915050565b6000806114a083610e97565b90506114ac3382611e01565b82608c546114ba9190614087565b608c5592915050565b610c928383836001611e37565b6000806114dc85611f0c565b91508190508381101561150c576040516371c4efed60e01b81526004810182905260248101859052604401610914565b935093915050565b63ffffffff8116600090815260826020526040812054806109cf5760405163f6ff4fb760e01b815263ffffffff84166004820152602401610914565b600061156261155f8787611f43565b90565b9050600061158e8261157c6115778a8a611f5b565b611f7e565b61158960208d018d613e62565b611fb3565b905060288611156116555760006115cb6115ae60608c0160408d016144b4565b6115bb60208d018d613e62565b846115c68c8c611fdb565b612026565b604051633e5ac80960e11b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb59012906116219086908d9060009087906004016144d1565b600060405180830381600087803b15801561163b57600080fd5b505af115801561164f573d6000803e3d6000fd5b50505050505b6001600160a01b038216887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c61168e60208d018d613e62565b8460405161169d92919061401a565b60405180910390a3505050505050505050565b60006116bc84846113f8565b905060001981146116fd57818110156116ee57828183604051637dc7a0d960e11b815260040161091493929190614502565b6116fd84848484036000611e37565b50505050565b6001600160a01b03831661172d576000604051634b637e8f60e11b81526004016109149190613acf565b6001600160a01b03821661175757600060405163ec442f0560e01b81526004016109149190613acf565b610c92838383612058565b600080600160811b861061177857611778614523565b848610156117c75760405162461bcd60e51b815260206004820152601c60248201527b2130b9b2b9901e10189030b932903737ba1039bab83837b93a32b21760211b6044820152606401610914565b600080866117d96001607f1b8a614046565b6117e39190614073565b905070015bf0a8b1457695355fb8ac404e7a79e381101561180e576118078161216f565b915061181a565b611817816126de565b91505b60008563ffffffff168763ffffffff16846118359190614046565b61183f9190614073565b9050600160831b81101561186457611856816127cd565b607f94509450505050611898565b600061186f82612df8565b905061188b61187f82607f614539565b60ff1683901c82612ebd565b9550935061189892505050565b94509492505050565b336118aa610e79565b6001600160a01b031614610e77573360405163118cdaa760e01b81526004016109149190613acf565b63ffffffff821660009081526082602052604090819020829055517f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b9061191d908490849061401a565b60405180910390a15050565b6060806000611986856020013561193f86613516565b61194c60a0890189614329565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061354292505050565b909350905060008161199957600161199c565b60025b90506119bc6119ae6020880188613e62565b826107c660808a018a614329565b6085549093506001600160a01b03168015611a425760405163043a78eb60e01b81526001600160a01b0382169063043a78eb906119ff9088908890600401614552565b602060405180830381865afa158015611a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a409190614577565b505b5050509250929050565b611a54613905565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ddc28c586040518060a001604052808863ffffffff168152602001611aa389611514565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611ad8929190614594565b6040805180830381865afa158015611af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b18919061463d565b95945050505050565b600080611b2d83610ded565b905080608c54611b3d919061409a565b608c556109cf33846135bc565b608180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60005b8151811015611c7d57611bce828281518110611bbd57611bbd6142f2565b602002602001015160400151611cad565b818181518110611be057611be06142f2565b60200260200101516040015160846000848481518110611c0257611c026142f2565b60200260200101516000015163ffffffff1663ffffffff1681526020019081526020016000206000848481518110611c3c57611c3c6142f2565b60200260200101516020015161ffff1661ffff1681526020019081526020016000209081611c6a91906146a7565b5080611c75816143fc565b915050611b9f565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b67481604051610e5a9190614766565b600281015161ffff8116600314610bf85781604051639a6d49cd60e01b81526004016109149190613993565b600080611ce78585856114d0565b909250905061189886836135bc565b611cfe61391f565b6000611d0d84600001516135f2565b602085015190915015611d2757611d27846020015161361a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632637a450826040518060a001604052808b63ffffffff168152602001611d778c611514565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611db3929190614594565b60806040518083038185885af1158015611dd1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611df691906147ef565b979650505050505050565b6001600160a01b038216611e2b57600060405163ec442f0560e01b81526004016109149190613acf565b610bf860008383612058565b6001600160a01b038416611e6157600060405163e602df0560e01b81526004016109149190613acf565b6001600160a01b038316611e8b576000604051634a1406b160e11b81526004016109149190613acf565b6001600160a01b03808516600090815260876020908152604080832093871683529290522082905580156116fd57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611efe91815260200190565b60405180910390a350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000611f398184614073565b6109cf9190614046565b6000611f526020828486614263565b610b5f91614839565b6000611f6b602860208486614263565b611f7491614857565b60c01c9392505050565b60006109cf7f00000000000000000000000000000000000000000000000000000000000000006001600160401b038416614046565b60006001600160a01b038416611fc95761dead93505b611fd38484611e01565b509092915050565b6060611fea8260288186614263565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b60608484848460405160200161203f9493929190614885565b6040516020818303038152906040529050949350505050565b6001600160a01b0383166120835780608860008282546120789190614087565b909155506120e29050565b6001600160a01b038316600090815260866020526040902054818110156120c35783818360405163391434e360e21b815260040161091493929190614502565b6001600160a01b03841660009081526086602052604090209082900390555b6001600160a01b0382166120fe5760888054829003905561211d565b6001600160a01b03821660009081526086602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161216291815260200190565b60405180910390a3505050565b6000808080806fd3094c70f034de4b96ff7d5b6f99fcd886106121c85761219a6001607e1b85614087565b93506fd3094c70f034de4b96ff7d5b6f99fcd86121bb6001607f1b88614046565b6121c59190614073565b95505b6fa45af1e1f40c333b3de1db4dd55f29a7861061221b576121ed6001607d1b85614087565b93506fa45af1e1f40c333b3de1db4dd55f29a761220e6001607f1b88614046565b6122189190614073565b95505b6f910b022db7ae67ce76b441c27035c6a1861061226e576122406001607c1b85614087565b93506f910b022db7ae67ce76b441c27035c6a16122616001607f1b88614046565b61226b9190614073565b95505b6f88415abbe9a76bead8d00cf112e4d4a886106122c1576122936001607b1b85614087565b93506f88415abbe9a76bead8d00cf112e4d4a86122b46001607f1b88614046565b6122be9190614073565b95505b6f84102b00893f64c705e841d5d4064bd38610612314576122e66001607a1b85614087565b93506f84102b00893f64c705e841d5d4064bd36123076001607f1b88614046565b6123119190614073565b95505b6f8204055aaef1c8bd5c3259f4822735a2861061236757612339600160791b85614087565b93506f8204055aaef1c8bd5c3259f4822735a261235a6001607f1b88614046565b6123649190614073565b95505b6f810100ab00222d861931c15e39b44e9986106123ba5761238c600160781b85614087565b93506f810100ab00222d861931c15e39b44e996123ad6001607f1b88614046565b6123b79190614073565b95505b6f808040155aabbbe9451521693554f733861061240d576123df600160771b85614087565b93506f808040155aabbbe9451521693554f7336124006001607f1b88614046565b61240a9190614073565b95505b61241b6001607f1b8761409a565b92508291506001607f1b61242f8380614046565b6124399190614073565b9050600160801b61244a848261409a565b6124549084614046565b61245e9190614073565b6124689085614087565b93506001607f1b6124798284614046565b6124839190614073565b9150600160811b6124a4846faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa61409a565b6124ae9084614046565b6124b89190614073565b6124c29085614087565b93506001607f1b6124d38284614046565b6124dd9190614073565b9150600360801b6124fe846f9999999999999999999999999999999961409a565b6125089084614046565b6125129190614073565b61251c9085614087565b93506001607f1b61252d8284614046565b6125379190614073565b9150600160821b612558846f9249249249249249249249249249249261409a565b6125629084614046565b61256c9190614073565b6125769085614087565b93506001607f1b6125878284614046565b6125919190614073565b9150600560801b6125b2846f8e38e38e38e38e38e38e38e38e38e38e61409a565b6125bc9084614046565b6125c69190614073565b6125d09085614087565b93506001607f1b6125e18284614046565b6125eb9190614073565b9150600360811b61260c846f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b61409a565b6126169084614046565b6126209190614073565b61262a9085614087565b93506001607f1b61263b8284614046565b6126459190614073565b9150600760801b612666846f89d89d89d89d89d89d89d89d89d89d8961409a565b6126709084614046565b61267a9190614073565b6126849085614087565b93506001607f1b6126958284614046565b61269f9190614073565b9150600160831b6126c0846f8888888888888888888888888888888861409a565b6126ca9084614046565b6126d49190614073565b610c4d9085614087565b60008082600160801b81106127235760006127056127006001607f1b84614073565b6136fc565b60ff811692831c9290915061271f906001607f1b90614046565b9250505b6001607f1b81111561279857607f5b60ff811615612796576001607f1b61274a8380614046565b6127549190614073565b9150600160801b821061278657600191821c916127719082614539565b60ff166001901b836127839190614087565b92505b61278f816148d7565b9050612732565b505b6f05b9de1d10bf4103d647b0955897ba806127c36f03f80fe03f80fe03f80fe03f80fe03f884614046565b610bde9190614073565b60008080806127e06001607c1b866148f4565b91508190506001607f1b6127f48280614046565b6127fe9190614073565b9050612812816710e1b3be415a0000614046565b61281c9084614087565b92506001607f1b61282d8383614046565b6128379190614073565b905061284b816705a0913f6b1e0000614046565b6128559084614087565b92506001607f1b6128668383614046565b6128709190614073565b905061288481670168244fdac78000614046565b61288e9084614087565b92506001607f1b61289f8383614046565b6128a99190614073565b90506128bc81664807432bc18000614046565b6128c69084614087565b92506001607f1b6128d78383614046565b6128e19190614073565b90506128f481660c0135dca04000614046565b6128fe9084614087565b92506001607f1b61290f8383614046565b6129199190614073565b905061292c816601b707b1cdc000614046565b6129369084614087565b92506001607f1b6129478383614046565b6129519190614073565b9050612963816536e0f639b800614046565b61296d9084614087565b92506001607f1b61297e8383614046565b6129889190614073565b905061299a81650618fee9f800614046565b6129a49084614087565b92506001607f1b6129b58383614046565b6129bf9190614073565b90506129d081649c197dcc00614046565b6129da9084614087565b92506001607f1b6129eb8383614046565b6129f59190614073565b9050612a0681640e30dce400614046565b612a109084614087565b92506001607f1b612a218383614046565b612a2b9190614073565b9050612a3c8164012ebd1300614046565b612a469084614087565b92506001607f1b612a578383614046565b612a619190614073565b9050612a71816317499f00614046565b612a7b9084614087565b92506001607f1b612a8c8383614046565b612a969190614073565b9050612aa6816301a9d480614046565b612ab09084614087565b92506001607f1b612ac18383614046565b612acb9190614073565b9050612ada81621c6380614046565b612ae49084614087565b92506001607f1b612af58383614046565b612aff9190614073565b9050612b0e816201c638614046565b612b189084614087565b92506001607f1b612b298383614046565b612b339190614073565b9050612b4181611ab8614046565b612b4b9084614087565b92506001607f1b612b5c8383614046565b612b669190614073565b9050612b748161017c614046565b612b7e9084614087565b92506001607f1b612b8f8383614046565b612b999190614073565b9050612ba6816014614046565b612bb09084614087565b92506001607f1b612bc18383614046565b612bcb9190614073565b9050612bd8816001614046565b612be29084614087565b92506001607f1b82612bfc6721c3677c82b4000086614073565b612c069190614087565b612c109190614087565b92506001607c1b851615612c585770018ebef9eac820ae8682b9793ac6d1e776612c4b847001c3d6a24ed82218787d624d3e5eba95f9614046565b612c559190614073565b92505b6001607d1b851615612c9e577001368b2fc6f9609fe7aceb46aa619baed4612c918470018ebef9eac820ae8682b9793ac6d1e778614046565b612c9b9190614073565b92505b6001607e1b851615612ce3576fbc5ab1b16779be3575bd8f0520a9f21f612cd6847001368b2fc6f9609fe7aceb46aa619baed5614046565b612ce09190614073565b92505b6001607f1b851615612d27576f454aaa8efe072e7f6ddbab84b40a55c9612d1a846fbc5ab1b16779be3575bd8f0520a9f21e614046565b612d249190614073565b92505b600160801b851615612d6b576f0960aadc109e7a3bf4578099615711ea612d5e846f454aaa8efe072e7f6ddbab84b40a55c5614046565b612d689190614073565b92505b600160811b851615612dae576e2bf84208204f5977f9a8cf01fdce3d612da1846f0960aadc109e7a3bf4578099615711d7614046565b612dab9190614073565b92505b600160821b851615612def576d03c6ab775dd0b95b4cbee7e65d11612de2846e2bf84208204f5977f9a8cf01fdc307614046565b612dec9190614073565b92505b50909392505050565b60006020607f5b60ff8116612e0e836001614908565b60ff161015612e615760006002612e258385614908565b612e2f9190614921565b90508460018260ff1660808110612e4857612e486142f2565b015410612e5757809250612e5b565b8091505b50612dff565b8360018260ff1660808110612e7857612e786142f2565b015410612e86579392505050565b8360018360ff1660808110612e9d57612e9d6142f2565b015410612eab575092915050565b612eb3614523565b5060009392505050565b6000828160ff8416612ecf8380614046565b901c9150612eec826b0d10b13981d2a0bc5e5fdcab601e1b614046565b612ef69082614087565b905060ff8416612f068684614046565b901c9150612f23826b045ae5bdd5f0e03eca1ff439601e1b614046565b612f2d9082614087565b905060ff8416612f3d8684614046565b901c9150612f5a826e45ae5bdd5f0e03eca1ff4390000000614046565b612f649082614087565b905060ff8416612f748684614046565b901c9150612f90826adefabf91302cd95b9ffda5601c1b614046565b612f9a9082614087565b905060ff8416612faa8684614046565b901c9150612fc6826a4a53953065644873dfff37601b1b614046565b612fd09082614087565b905060ff8416612fe08684614046565b901c9150612ffc826d54f1cf12bd04e516b6da88000000614046565b6130069082614087565b905060ff84166130168684614046565b901c9150613032826d0a9e39e257a09ca2d6db51000000614046565b61303c9082614087565b905060ff841661304c8684614046565b901c9150613068826d012e066e7b839fa050c309000000614046565b6130729082614087565b905060ff84166130828684614046565b901c915061309d826c1e33d7d926c329a1ad1a800000614046565b6130a79082614087565b905060ff84166130b78684614046565b901c91506130d2826c02bee513bdb4a6b19b5f800000614046565b6130dc9082614087565b905060ff84166130ec8684614046565b901c9150613106826b3a9316fa79b88eccf2a00000614046565b6131109082614087565b905060ff84166131208684614046565b901c915061313a826b048177ebe1fa812375200000614046565b6131449082614087565b905060ff84166131548684614046565b901c915061316d826a5263fe90242dcbacf00000614046565b6131779082614087565b905060ff84166131878684614046565b901c91506131a0826a057e22099c030d94100000614046565b6131aa9082614087565b905060ff84166131ba8684614046565b901c91506131d2826957e22099c030d9410000614046565b6131dc9082614087565b905060ff84166131ec8684614046565b901c91506132048269052b6b54569976310000614046565b61320e9082614087565b905060ff841661321e8684614046565b901c915061323582684985f67696bf748000614046565b61323f9082614087565b905060ff841661324f8684614046565b901c9150613266826803dea12ea99e498000614046565b6132709082614087565b905060ff84166132808684614046565b901c9150613296826731880f2214b6e000614046565b6132a09082614087565b905060ff84166132b08684614046565b901c91506132c68267025bcff56eb36000614046565b6132d09082614087565b905060ff84166132e08684614046565b901c91506132f582661b722e10ab1000614046565b6132ff9082614087565b905060ff841661330f8684614046565b901c9150613324826601317c70077000614046565b61332e9082614087565b905060ff841661333e8684614046565b901c915061335282650cba84aafa00614046565b61335c9082614087565b905060ff841661336c8684614046565b901c915061337f826482573a0a00614046565b6133899082614087565b905060ff84166133998684614046565b901c91506133ac826405035ad900614046565b6133b69082614087565b905060ff84166133c68684614046565b901c91506133d882632f881b00614046565b6133e29082614087565b905060ff84166133f28684614046565b901c9150613404826301b29340614046565b61340e9082614087565b905060ff841661341e8684614046565b901c915061342f82620efc40614046565b6134399082614087565b905060ff84166134498684614046565b901c915061345982617fe0614046565b6134639082614087565b905060ff84166134738684614046565b901c915061348382610420614046565b61348d9082614087565b905060ff841661349d8684614046565b901c91506134ac826021614046565b6134b69082614087565b905060ff84166134c68684614046565b901c91506134d5826001614046565b6134df9082614087565b9050600160ff85161b856135026b0d10b13981d2a0bc5e5fdcab601f1b84614073565b61350c9190614087565b611b189190614087565b60006109cf7f000000000000000000000000000000000000000000000000000000000000000083614073565b805160609015158061358b57848460405160200161357792919091825260c01b6001600160c01b031916602082015260280190565b6040516020818303038152906040526135b2565b848433856040516020016135a29493929190614943565b6040516020818303038152906040525b9150935093915050565b6001600160a01b0382166135e6576000604051634b637e8f60e11b81526004016109149190613acf565b610bf882600083612058565b6000813414613616576040516304fb820960e51b8152346004820152602401610914565b5090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa15801561367a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061369e9190614983565b90506001600160a01b0381166136c7576040516329b99a9560e11b815260040160405180910390fd5b610bf86001600160a01b038216337f00000000000000000000000000000000000000000000000000000000000000008561376b565b60008082610100811015613730575b600181111561372b57600190811c906137249083614908565b915061370b565b613764565b60805b60ff81161561376257600160ff82161b8210613757579182179160ff81169190911c905b60011c607f16613733565b505b5092915050565b604080516001600160a01b038581166024830152848116604483015260648083018590528351808403909101815260849092019092526020810180516001600160e01b03166323b872dd60e01b1790526116fd918691906000906137d190841683613816565b905080516000141580156137f65750808060200190518101906137f49190614577565b155b15610c925782604051635274afe760e01b81526004016109149190613acf565b6060610b5f8383600084600080856001600160a01b0316848660405161383c91906149a0565b60006040518083038185875af1925050503d8060008114613879576040519150601f19603f3d011682016040523d82523d6000602084013e61387e565b606091505b5091509150610c4d86838360608261389e57613899826138dc565b610b5f565b81511580156138b557506001600160a01b0384163b155b156138d55783604051639996b31560e01b81526004016109149190613acf565b5080610b5f565b8051156138ec5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806040016040528060008152602001600081525090565b604080516060810182526000808252602082015290810161393e613905565b905290565b60005b8381101561395e578181015183820152602001613946565b50506000910152565b6000815180845261397f816020860160208601613943565b601f01601f19169290920160200192915050565b602081526000610b5f6020830184613967565b6001600160a01b038116811461092657600080fd5b600080604083850312156139ce57600080fd5b82356139d9816139a6565b946020939093013593505050565b600060e082840312156139f957600080fd5b50919050565b600060208284031215613a1157600080fd5b81356001600160401b03811115613a2757600080fd5b610bde848285016139e7565b80518252602090810151910152565b600060a08201613a528387613a33565b604060a08185015281865180845260c08601915060c08160051b8701019350602080890160005b83811015613ab85788870360bf19018552815180518852830151838801879052613aa587890182613967565b9750509382019390820190600101613a79565b50505050505080915050610bde6060830184613a33565b6001600160a01b0391909116815260200190565b6000606082840312156139f957600080fd5b60008083601f840112613b0757600080fd5b5081356001600160401b03811115613b1e57600080fd5b602083019150836020828501011115613b3657600080fd5b9250929050565b600080600080600080600060e0888a031215613b5857600080fd5b613b628989613ae3565b96506060880135955060808801356001600160401b0380821115613b8557600080fd5b613b918b838c01613af5565b909750955060a08a01359150613ba6826139a6565b90935060c08901359080821115613bbc57600080fd5b50613bc98a828b01613af5565b989b979a50959850939692959293505050565b600080600060608486031215613bf157600080fd5b8335613bfc816139a6565b92506020840135613c0c816139a6565b929592945050506040919091013590565b803563ffffffff81168114613c3157600080fd5b919050565b60008060008060808587031215613c4c57600080fd5b8435935060208501359250613c6360408601613c1d565b9396929550929360600135925050565b60008060408385031215613c8657600080fd5b6139d983613c1d565b801515811461092657600080fd5b60008060408385031215613cb057600080fd5b82356001600160401b03811115613cc657600080fd5b613cd2858286016139e7565b9250506020830135613ce381613c8f565b809150509250929050565b604081016109cf8284613a33565b600060208284031215613d0e57600080fd5b5035919050565b803561ffff81168114613c3157600080fd5b60008060408385031215613d3a57600080fd5b613d4383613c1d565b9150613d5160208401613d15565b90509250929050565b600060208284031215613d6c57600080fd5b8135610b5f816139a6565b60008060008060a08587031215613d8d57600080fd5b613d978686613ae3565b935060608501356001600160401b03811115613db257600080fd5b613dbe87828801613af5565b9094509250506080850135613dd2816139a6565b939692955090935050565b60008083601f840112613def57600080fd5b5081356001600160401b03811115613e0657600080fd5b6020830191508360208260051b8501011115613b3657600080fd5b60008060208385031215613e3457600080fd5b82356001600160401b03811115613e4a57600080fd5b613e5685828601613ddd565b90969095509350505050565b600060208284031215613e7457600080fd5b610b5f82613c1d565b60008060008060608587031215613e9357600080fd5b613e9c85613c1d565b9350613eaa60208601613d15565b925060408501356001600160401b03811115613ec557600080fd5b613ed187828801613af5565b95989497509550505050565b60008060008385036080811215613ef357600080fd5b84356001600160401b03811115613f0957600080fd5b613f15878288016139e7565b9450506040601f1982011215613f2a57600080fd5b506020840191506060840135613f3f816139a6565b809150509250925092565b825181526020808401516001600160401b03169082015260408084015160c0830191613f7890840182613a33565b50610b5f6080830184613a33565b60008060408385031215613f9957600080fd5b8235613fa4816139a6565b91506020830135613ce3816139a6565b600060608284031215613fc657600080fd5b610b5f8383613ae3565b600181811c90821680613fe457607f821691505b6020821081036139f957634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b63ffffffff929092168252602082015260400190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176109cf576109cf614030565b634e487b7160e01b600052601260045260246000fd5b6000826140825761408261405d565b500490565b808201808211156109cf576109cf614030565b818103818111156109cf576109cf614030565b604051606081016001600160401b03811182821017156140cf576140cf614004565b60405290565b604080519081016001600160401b03811182821017156140cf576140cf614004565b604051601f8201601f191681016001600160401b038111828210171561411f5761411f614004565b604052919050565b60006001600160401b0382111561414057614140614004565b50601f01601f191660200190565b60006001600160401b038084111561416857614168614004565b8360051b60206141798183016140f7565b86815291850191818101903684111561419157600080fd5b865b84811015614257578035868111156141ab5760008081fd5b880160603682900312156141bf5760008081fd5b6141c76140ad565b6141d082613c1d565b81526141dd868301613d15565b86820152604080830135898111156141f55760008081fd5b929092019136601f84011261420a5760008081fd5b823561421d61421882614127565b6140f7565b81815236898387010111156142325760008081fd5b818986018a830137600091810189019190915290820152845250918301918301614193565b50979650505050505050565b6000808585111561427357600080fd5b8386111561428057600080fd5b5050820193919092039150565b6000845161429f818460208901613943565b8201838582376000930192835250909392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610bde6020830184866142b5565b634e487b7160e01b600052603260045260246000fd5b6000823561013e1983360301811261431f57600080fd5b9190910192915050565b6000808335601e1984360301811261434057600080fd5b8301803591506001600160401b0382111561435a57600080fd5b602001915036819003821315613b3657600080fd5b6001600160401b038116811461092657600080fd5b63ffffffff61439289613c1d565b16815260208801356020820152600060408901356143af8161436f565b6001600160401b031660408301526060820188905260e0608083018190526143da90830187896142b5565b6001600160a01b03861660a084015282810360c0840152610d118185876142b5565b60006001820161440e5761440e614030565b5060010190565b60006020828403121561442757600080fd5b81516001600160401b0381111561443d57600080fd5b8201601f8101841361444e57600080fd5b805161445c61421882614127565b81815285602083850101111561447157600080fd5b611b18826020830160208601613943565b60006040828403121561449457600080fd5b61449c6140d5565b82358152602083013560208201528091505092915050565b6000602082840312156144c657600080fd5b8135610b5f8161436f565b60018060a01b038516815283602082015261ffff83166040820152608060608201526000610c4d6080830184613967565b6001600160a01b039390931683526020830191909152604082015260600190565b634e487b7160e01b600052600160045260246000fd5b60ff82811682821603908111156109cf576109cf614030565b6040815260006145656040830185613967565b8281036020840152611b188185613967565b60006020828403121561458957600080fd5b8151610b5f81613c8f565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a060808401526145ca60e0840182613967565b90506060850151603f198483030160a08501526145e78282613967565b60809690960151151560c08501525050506001600160a01b039190911660209091015290565b60006040828403121561461f57600080fd5b6146276140d5565b9050815181526020820151602082015292915050565b60006040828403121561464f57600080fd5b610b5f838361460d565b601f821115610c9257600081815260208120601f850160051c810160208610156146805750805b601f850160051c820191505b8181101561469f5782815560010161468c565b505050505050565b81516001600160401b038111156146c0576146c0614004565b6146d4816146ce8454613fd0565b84614659565b602080601f83116001811461470957600084156146f15750858301515b600019600386901b1c1916600185901b17855561469f565b600085815260208120601f198616915b8281101561473857888601518255948401946001909101908401614719565b50858210156147565787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156147e157888303603f190185528151805163ffffffff1684528781015161ffff168885015286015160608785018190526147cd81860183613967565b96890196945050509086019060010161478d565b509098975050505050505050565b60006080828403121561480157600080fd5b6148096140ad565b82518152602083015161481b8161436f565b602082015261482d846040850161460d565b60408201529392505050565b803560208310156109cf57600019602084900360031b1b1692915050565b6001600160c01b031981358181169160088510156137625760089490940360031b84901b1690921692915050565b60c085901b6001600160c01b031916815260e084901b6001600160e01b0319166008820152600c810183905281516000906148c781602c850160208701613943565b91909101602c0195945050505050565b600060ff8216806148ea576148ea614030565b6000190192915050565b6000826149035761490361405d565b500690565b60ff81811683821601908111156109cf576109cf614030565b600060ff8316806149345761493461405d565b8060ff84160491505092915050565b84815260018060c01b03198460c01b16602082015282602882015260008251614973816048850160208701613943565b9190910160480195945050505050565b60006020828403121561499557600080fd5b8151610b5f816139a6565b6000825161431f81846020870161394356fea26469706673582212200ace84c9463d4cd1a88dcc2797f5e2d20d4e09670ef34fdc94812b9a489202ea64736f6c6343000814003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000006edce65403992e310a62460808c4b910d972f10f0000000000000000000000006f5da321827f53a64821776f3aeee6b6b94f336700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000004626f626f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004424f424f00000000000000000000000000000000000000000000000000000000
0x00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000006edce65403992e310a62460808c4b910d972f10f0000000000000000000000006f5da321827f53a64821776f3aeee6b6b94f336700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000004626f626f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004424f424f00000000000000000000000000000000000000000000000000000000
----Decoded View------------Arg [0] : name (string): boboArg [1] : symbol (string): BOBOArg [2] : lzEndpoint (address): 0x6EDCE65403992e310A62460808c4b910D972f10fArg [3] : delegate (address): 0x6F5da321827F53A64821776f3aEeE6b6B94f3367Arg [4] : _reserveRatio (uint256): 1
----Encoded View------------Arg [0] : 0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004626f626f00000000000000000000000000000000000000000000000000000000Arg [1] : 0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004424f424f00000000000000000000000000000000000000000000000000000000Arg [2] : 0x0000000000000000000000006edce65403992e310a62460808c4b910d972f10fArg [3] : 0x0000000000000000000000006f5da321827f53a64821776f3aeee6b6b94f3367Arg [4] : 0x0000000000000000000000000000000000000000000000000000000000000001