Îõ³h$?­      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬None Types for representing sex toys(c) James Sully, 2020-2021 BSD 3-Clausesullyj3@gmail.com experimentaluntestedNone +8.buttplug-hs-core:Represents which message types the device supports See ( éhttps://buttplug-spec.docs.buttplug.io/enumeration.html#message-attributes-for-devicelist-and-deviceadded) for details.buttplug-hs-coreÈAn intimate device, containing info about the functionality it supports.buttplug-hs-core¼For a particular actuation feature (Vibration, Rotation, or Linear), represents how many of that feature the device has, and the available resolution of control of that feature. See ( éhttps://buttplug-spec.docs.buttplug.io/enumeration.html#message-attributes-for-devicelist-and-deviceadded) for details.  (c) James Sully, 2020-2021 BSD 3-Clausesullyj3@gmail.com experimentaluntestedNone +08É×Ùàá ¯+buttplug-hs-core.The type of Buttplug protocol messages. See ( 4https://buttplug-spec.docs.buttplug.io/messages.htmlÔ) for the protocol specification and an explanation of the purpose of each message.[buttplug-hs-coreÐUsed in LinearCmd to specify how to move the linear actuator at the given index`buttplug-hs-coreáUsed in RotateCmd to specify the speed and direction of rotation of the motor at the given indexebuttplug-hs-coreÇUsed in VibrateCmd to specify the speed of the motor at the given indexibuttplug-hs-coreUsed for the Raw* messages.kbuttplug-hs-core2Errors from the server, used in the Error message.( 8https://buttplug-spec.docs.buttplug.io/status.html#error)lbuttplug-hs-coreAn unknown error occurred. mbuttplug-hs-coreHandshake did not succeed.nbuttplug-hs-core)A ping was not sent in the expected time.obuttplug-hs-core/A message parsing or permission error occurred.pbuttplug-hs-core-A command sent to a device returned an error.qbuttplug-hs-coreÛThe version of the Buttplug message protocol that the client speaks. (currently version 2)rbuttplug-hs-core Parse an ­ to an ksbuttplug-hs-core Convert an k to an ­É+EDCBA@?>=<;:9876543210/.-,ZYXWVUTSQPONMLKJIHGFR[\_^]`adcbefhgijkponmlqrsÉqkponmlrsijefhg`adcb[\_^]+EDCBA@?>=<;:9876543210/.-,ZYXWVUTSQPONMLKJIHGFR(c) James Sully, 2020-2021 BSD 3-Clausesullyj3@gmail.com experimentaluntestedNone +0É×Ùàáìù “buttplug-hs-coreýAn exception type abstracting over the exceptions that might arise in the course of communication with the buttplug server. ¡â instances in general should throw these rather than Exceptions specific to the connection type.™buttplug-hs-core/Connect to the buttplug server using websockets¡buttplug-hs-coreAbstracts over methods of connecting to a buttplug server. The connector contains all the information necessary for establishing a connection.¢buttplug-hs-coreÑA Connector determines a unique connection type that is used for communication.£buttplug-hs-core˜Main entry point for communicating with the Buttplug server. Establish a connection to the server and pass the connection handle to the continuation.¤buttplug-hs-coreSend +ªs to the server. In the Buttplug protocol, all messages are wrapped in a JSON array (here a Haskell list) to facilitate sending multiple messages simultaneously. Use ¦ to send a single message.¥buttplug-hs-corereceive +s from the server¦buttplug-hs-coreSend the server a single +§buttplug-hs-coreConvert ® into ”¨buttplug-hs-core&Convert socket connection issues into ”©buttplug-hs-core6Convert websocket specific connection exceptions into ““˜—–•”™›š Ÿžœ¡¥¤£¢¦§¨©¡¥¤£¢¦™›š Ÿžœ“˜—–•”§¨©Core functionality for  https://buttplug.io/ clients.(c) James Sully, 2020-2021 BSD 3-Clausesullyj3@gmail.com experimentaluntestedNoneÿí +,-./0123456789:;<=>?@ABCDERFGHIJKLMNOPQSTUVWXYZ[\]^_`abcdefghijklmnopq“”•–—˜™š›œžŸ ¡¥¤¢£¦í¡¢£¤¥¦“”•–—˜™š›œžŸ q+,-./0123456789:;<=>?@ABCDERFGHIJKLMNOPQSTUVWXYZklmnopefgh`abcd[\]^_ij  Safe-Inferred*¯°±²³´µ¶·      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_``abcddefghhijkklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼/buttplug-hs-core-0.1.0.1-5Hpstwi1ssrFg2p4MQ0yQX Buttplug.Core.Internal.JSONUtilsButtplug.Core.DeviceButtplug.Core.MessageButtplug.Core.Connector Buttplug.CorePaths_buttplug_hs_core stripPrefixstripPrefixOptionsstripPrefixKeyOptionspascalCaseOptionspascalCaseKeyOptionsdeviceMessageOptionsmsgAttributeOptionsDeviceMessageTypeDevRawWriteCmd DevRawReadCmdDevRawSubscribeCmdDevRawUnsubscribeCmdDevStopDeviceCmd DevVibrateCmd DevLinearCmd DevRotateCmdDevice deviceName deviceIndexdeviceMessagesMessageAttributesattrFeatureCount attrStepCount$fFromJSONMessageAttributes$fToJSONMessageAttributes$fFromJSONKeyDeviceMessageType$fToJSONKeyDeviceMessageType$fFromJSONDeviceMessageType$fToJSONDeviceMessageType$fFromJSONDevice$fToJSONDevice$fGenericDevice $fShowDevice $fEqDevice$fGenericDeviceMessageType$fShowDeviceMessageType$fEqDeviceMessageType$fOrdDeviceMessageType$fGenericMessageAttributes$fShowMessageAttributes$fEqMessageAttributesMessageMsgOkMsgErrorMsgPingMsgRequestServerInfo MsgServerInfoMsgStartScanningMsgStopScanningMsgScanningFinishedMsgRequestDeviceList MsgDeviceListMsgDeviceAddedMsgDeviceRemovedMsgRawWriteCmd MsgRawReadCmd MsgRawReadingMsgRawSubscribeCmdMsgRawUnsubscribeCmdMsgStopDeviceCmdMsgStopAllDevices MsgVibrateCmd MsgLinearCmd MsgRotateCmdMsgBatteryLevelCmdMsgBatteryLevelReadingMsgRSSILevelCmdMsgRSSILevelReadingmsgIdmsgErrorMessage msgErrorCode msgClientNamemsgMessageVersion msgServerNamemsgMaxPingTime msgDevices msgDeviceNamemsgDeviceIndexmsgDeviceMessages msgEndpointmsgDatamsgWriteWithResponsemsgExpectedLengthmsgWaitForData msgSpeeds msgVectors msgRotationsmsgBatteryLevel msgRSSILevel LinearActuate linActIndexlinActDurationlinActPositionRotate rotateIndex rotateSpeedrotateClockwiseVibrate vibrateIndex vibrateSpeedRawData ErrorCode ERROR_UNKNOWN ERROR_INIT ERROR_PING ERROR_MSG ERROR_DEVICEclientMessageVersionerrCodeFromInt fromErrCode$fFromJSONErrorCode$fToJSONErrorCode$fFromJSONRawData$fToJSONRawData$fFromJSONVibrate$fToJSONVibrate$fFromJSONRotate$fToJSONRotate$fFromJSONLinearActuate$fToJSONLinearActuate$fFromJSONMessage$fToJSONMessage $fShowMessage $fEqMessage$fGenericMessage$fGenericLinearActuate$fShowLinearActuate$fEqLinearActuate$fGenericRotate $fShowRotate $fEqRotate$fGenericVibrate $fShowVibrate $fEqVibrate$fGenericRawData $fShowRawData $fEqRawData$fEnumErrorCode$fShowErrorCode $fEqErrorCode$fGenericErrorCodeConnectorExceptionConnectionFailedUnexpectedConnectionClosedConnectionClosedNormallyReceivedInvalidMessageOtherConnectorErrorWebSocketConnectorInsecureWebSocketConnectorSecureWebSocketConnectorinsecureWSConnectorHostinsecureWSConnectorPortsecureWSConnectorHostsecureWSConnectorPortsecureWSBypassCertVerify Connector Connection runClient sendMessages receiveMsgs sendMessagehandleWSConnFailedhandleSockConnFailedhandleWSConnException$fConnectorWebSocketConnector$fExceptionConnectorException$fShowConnectorExceptionghc-prim GHC.TypesInt*websockets-0.12.7.2-30BN3WkWNvw3945hnzCpQPNetwork.WebSockets.HttpHandshakeExceptionversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName