2,     Safe  ! !  !None"#$%&'()*+,-./0123456789:;<=>? #$%&'()*+,-."#$%&'()*+,-./0123456789:;<=>?None@AB@ABNoneCXIts possible to specify messages with procedures and libraries that don't exist togetherD6Encode a QuickPlot message for transmission to browser EFGHIJKCLDMN EFGHIJKCLDEFGHIJKCLDMNNone O#Get the filepath to the static HTMLCSSJSP\Run snap server in background as a new process Run only once (even after reloading in ghci)Q2Declare the routing and the services of the serverRHandle new websocket connections Send content of channel to browser and clear channel afterwards If the channel contains "stop" the next websocketHandler who reads it will stopSlHandle websocket connection until new client connects to server Will halt if it reads "stop" in the channelTWHandle connection exceptions of the websocket TODO: Clean up instead of just messagingUELogin for client threads It will kill other clients if there are anyV+Contains the newest message for the browserW,Tell if client connected and on which threadX,Tell if server was started and on which portYfSend a raw message to the browser By setting the channel which the server reads from for new messagesZSend a message to the browser OP,Path to directory that contains user scriptsPort of the serverQ#Path to directory of files to serveR"About to be a websocket connectionSWebsocket connectionMessage sent to browserTWebsocket connection)Message that exception happened in stdoutUVMessage for the browserW,Thread of the current client if there is oneX(if running, port)YMessage for the browserDEither message sent to browser or reminder to start server in stdoutZMessage for the browserBEither message sent to server or rminder to start server in stdoutPZ OPQRSTUVWXYZNoneConvert to Aeson's Value2Which library should be used to visualize the data[,Directory path of the QuickPlot client files\,Port the QuickPlot server is supposed to use[Start a QuickPlot server Run this function only once in a ghci session (even after reload)Start a QuickPlot server at " http://localhost:8000"C Run this function only once in a ghci session (even after reload)bRemove all plots in the browser If the browser is not connected by now the behaviour is undefinedyShow data visualizations in the browser If the browser is not connected to QuickPlot a warning will be printed to stdout [\2Path to directory with user scripts (doesn't work)Port of the QuickPlot serverJSON that can be visualized  [\None35 ]^_`abc   ]^_`abcNone35Only Network graphs workdefghijk defghijkl    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSLTUVWXYZ[\]^_`abcdefghijklmnopghqQuick_IgaU4cN7P4y9ptDRuMRTZy QuickPlotQuickPlot.Plotly QuickPlot.VisPaths_QuickPlotQuickPlot.IPC.QQParserQuickPlot.IPC.QQQuickPlot.IPC.ProtocolQuickPlot.IPC.Serveraeson_Gu0b3XUgQSw686IUxDNRrIData.Aeson.Types.ClasstoJSONjson PlottableplottableToJSON whichLibraryrunQuickPlotWith runQuickPlotclearplot PlotlyJSON PlotlyLayout PlotlyDataplotlyVisJSON VisPlotTypeNetwork VisOptionsVisDataviscatchIOversionbindirlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName JSONParserHashKey HashVarKey HashStringKey JSONValueJSONNull JSONString JSONNumber JSONObject JSONArrayJSONBoolJSONCode parseTHJSONjpValuejpBooljpCodejpNulljpStringjpNumberconvertjpObject symbolKeyquotedStringKeyvarKeyjpArray quotedStringsymbolcommaSepchars unicodeCharsjsonExp$fLiftJSONValue $fLiftValue QPMessageencodeLibraryPlotlyVis ProcedureNewPlotClear$fToJSONLibrary$fToJSONProceduregetFrontendDir runServerservicewebsocketHandlerhandleUntilNewClientcloseloginchannel clientThread serverRunningsendRawMessage sendMessage UserDirectoryPort plotlyExp$fLiftPlotlyJSON$fToJSONPlotlyJSON$fPlottable(,)$fPlottable(,)0 $fPlottable[]$fPlottablePlotlyJSONvisExp $fLiftVisJSON$fToJSONVisPlotType$fToJSONVisJSON$fPlottable(,,)$fPlottable(,,)0