$      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 23456789:;<=>?@ABC D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { |}~                                                          !"#, Safe-Inferred"  In degrees  ! "   !     ! Safe-Inferred"#"##""# Safe-Inferred $%&'()*+,-. $%&'()*+,-.$'&%()*+,-. Safe-Inferred/0/0/0 Safe-Inferred123456781234567814325876 Safe-Inferred9:;<=>?@ABCDEFGHI9:;<=>?@ABCDEFGHI9@?>=<;:AHGFEDCBI Safe-InferredQJ Opcode: 1900 K Opcode: 1902L Opcode: 1901M Opcode: 1800N Opcode: 1802O Opcode: 1801P Opcode: 2300Q@Opcode: 2302 Usually this is the top left corner of the element R Opcode: 2301T Opcode: 2201W Opcode: 2200Y Opcode: 1608Z Opcode: 1607[ Opcode: 1606\ Opcode: 1605] Opcode: 1604^ Opcode: 1603_ Opcode: 1602` Opcode: 1601b Opcode: 1600c Opcode: 1500d Opcode: 1505e Opcode: 1504f Opcode: 1503g Opcode: 1502h Opcode: 1501i Opcode: 2400j Opcode: 2402k Opcode: 2401m Opcode: 1402n Opcode: 1401p Opcode: 1400q Opcode: 1300r Opcode: 1301s Opcode: 1200t Opcode: 1201u Opcode: 1000v Opcode: 1002wOpcode: 1001 First circle = inner circle, Second circle is enclosing circle x Opcode: 0900y Opcode: 0904z Opcode: 0903{ Opcode: 0902| Opcode: 0901} Opcode: 0800~Opcode: 0802 [ScreenPixel] should be as long as width * height * 4  Opcode: 0801 Opcode: 0703 Opcode:0702 Opcode: 0701 Opcode: 0700 Opcode: 0602 Opcode: 0601 Opcode: 0600 Opcode: 0502 Opcode: 0501 Opcode: 0500 Opcode: 0400 Opcode: 0407 Opcode: 0406 Opcode: 0405 Opcode: 0404 Opcode: 0403 Opcode: 0402 Opcode: 0401 Opcode: 0300 Opcode: 0304  Opcode: 0303  Opcode: 0302  Opcode: 0301 Reserved type words Type: t | Opcode Arguments: a | List of arguments for that data type Route: r | Either s for system or u: for user Object: o | The object that is beneath Example: {r: s, o: {SystemMeasuredText object}} SystemMeasuredText object: {t:2102, a2:[CanvasId, CanvasText object, ScreenDimensions]}  Opcode: 0200 Opcode: 0204 Opcode: 0203 Opcode: 0202 Opcode: 0201 Opcode: 0100 Opcode: 0101 Opcode: 2000 Opcode: 2001 Opcode: 2100 Opcode: 2101JKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ In degrees JKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DJLKMONPRQSTUVWX`_^]\[ZYabchgfedikjlnmopqrstuwvx|{zy}~ Safe-Inferred[| The point indications are from the perspective of a regular Cartesian cordinate system. | Rotation is around a point on the canvas. May be the centre of the boundingbox (enclosing rectangle) or an arbitrary point. Angle is in degrees and counter-clockwise in the cordinate system(from the x-axis to the y-axis) and visually on canvas clock-wise. PTranslation is center, does not have a boundingbox due to technical limitations dThe first point of the polygon, always starts in the direction from the x-axis.(Towards x-infinity) Translation is center Translation is upperleftcorner | Translation is the corner closes to origin. Visually in canvas, this is top left. In a Cartesian cordinate system, this is bottom left. Should contain atleast 1 shape 9:  Safe-Inferred$%&'()*+,-./012345$%&'()*+,-./012345$%&'()+*,-./012345  Safe-Inferred"      !"#$%&'!      !"#$%&"     ' !"#$%&      !"#$%&' Safe-Inferred ()*+,-./01 ()*+,-./01()*+,/.-01None23456789:;<=>?@AB6789:;<=>?@AB23456789:;<=>?@AB23456789:;<=>?@AB6789:;<=>?@AB Safe-InferredCDEFGHIJKLMNOPQRSTUVWXCDCDEFGHIJKLMNOPQRSTUVWXNoneYZ[\]^_`abcdefghijklmnopqrstYYZ[\]^_`abcdefghijklmnopqrst Safe-InferredCDEFGHIJKLMNOPQRSCDEFGHIJKLMNOPQRSCFEDGNMLKJIHOQPRS Safe-Inferred&TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy2CDEFGHIJKLMNTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy TVUWYXZ\[] fedcba`_^ghijklmnopqtsruwvxy Safe-Inferredz{z{z{ Noneuvwxyz{|}~uvwxyz{|}~uvwxyz{|}~!Nonevwxyz~"NoneNoneG|}~G|}~L~}||}~  #None   NoneJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~̍}~x|{zyuwvstqrpolnmikjchgfedbaX`_^]\[ZYWVUSTPRQMONJLK$None Nonez{z{%None   NoneCDEFGHIJKLMNOPQRSRSOQPGNMLKJIHCFED&None    None()*+,-./0101,/.-*+()'NoneNoneO23456789:;<=>?@ABY<=>?@A:;89B674523(NoneNone9:;<=>?@ABCDEFGHIIAHGFEDCB9@?>=<;:)NoneNone 12345678 58761432*NoneNone/0/0+None  None$%&'()*+,-..-,+*()$'&%None,None HCheckes to see if there is a node on a certain position Abstracts the standardized -. to u  Abstracts q back to  BasicShapes and Canvas events (Translates color datatype to RGBA codes /Translates the thickness to a float Returns the point when making a step f long from the point start in the direction of the vector. The length between start pos and result pos is always f. Vector from p1 to p2 Returns the vector perpendicular on the given vector between the 2 points. Always has positive y and vector length 1; y is inverted in canvas Returns the vector perpendicular on the given vector between the 2 points. Always has negative y and vector length 1; y is inverted in canvas  9Returns the size of the vector #      #      #      NoneUCDEFGHIJKLMNTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy      U      yxuwvqtsrponmghijkl]fedcba`_^Z\[WYXTVUGNMLKJIHCFEDNone!!!!None"#"#"#"#/0123456789:;;<<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstumvwxyz{|}~9      !"#$ % & ' ( ) * + , - - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrsrtutvwxyz{|}~q'##########$$$$$$%%%%%%&&&&&&&&&&&''''(((((()))))***++++ + + +  ,,,,,C,3,,,,,,,,,,,,,,, ,!,",#,$,%,&,',(,),*,+,,,-,./01234556789:;<=3>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~               !!!!!!""""$$%%%%%%&&(((((((((())+++++eventloop-0.4.0.0Eventloop.Utility.VectorsEventloop.Types.CommonEventloop.Module.TimerEventloop.Module.StdOutEventloop.Module.StdInEventloop.Module.File!Eventloop.Module.Websocket.CanvasEventloop.Module.BasicShapes#Eventloop.Utility.Trees.GeneralTreeEventloop.Module.DrawTrees Eventloop.Module.Websocket.MouseEventloop.Module.Graphs#Eventloop.Module.Websocket.KeyboardEventloop.Types.EventTypesEventloop.RouteEventEventloop.EventloopCoreEventloop.DefaultConfigurationEventloop.Module.Timer.TypesEventloop.Module.StdOut.TypesEventloop.Module.StdIn.TypesEventloop.Module.File.Types'Eventloop.Module.Websocket.Canvas.Types"Eventloop.Module.BasicShapes.Types"Eventloop.Utility.Trees.LayoutTree Eventloop.Module.DrawTrees.Types$Eventloop.Module.BasicShapes.Classes(Eventloop.Module.Websocket.Canvas.Opcode.Eventloop.Module.Websocket.Canvas.JSONEncoding&Eventloop.Module.Websocket.Mouse.TypesEventloop.Module.Graphs.Types)Eventloop.Module.Websocket.Keyboard.TypesEventloop.Utility.Websockets$Eventloop.Utility.BufferedWebsocketsEventloop.Utility.Config(Eventloop.Module.Websocket.Canvas.Canvas,Eventloop.Module.Websocket.Keyboard.Keyboard&Eventloop.Module.Websocket.Mouse.Mouse$Eventloop.Module.DrawTrees.DrawTrees(Eventloop.Module.BasicShapes.BasicShapesEventloop.Module.File.FileEventloop.Module.StdIn.StdInEventloop.Module.StdOut.StdOutEventloop.Module.Timer.TimerEventloop.Module.Graphs.GraphsEventLoop.Types EventTypesRotateLeftAroundrotateLeftAround ToPolarCoord toPolarCoordToPointtoPointVector2D|+||-| negateVector Translate translatePoint PolarCoordOffsetYXLengthRadiansAngledegreesToRadiansradiansToDegrees lengthToPointlengthBetweenPointsdifferenceBetweenPoints originPoint$fRotateLeftAroundPoint$fRotateLeftAroundPolarCoord$fToPolarCoordPoint$fToPointPolarCoord$fVector2DPoint$fVector2DPolarCoord NumericIdNamedIdTimerOut UnsetTimerSetIntervalTimerSetTimerTimerInTickTimerStartFunction StartedTimerIncomingTickBufferTimerIdMicroSecondDelay StdOutOut StdOutMessageStdInOutStdInReceiveCharStdInReceiveLineStdInReceiveContentsStdInInStdInReceivedCharStdInReceivedLineStdInReceivedContentsFileOutWriteToIfEOF RetrieveChar RetrieveLineRetrieveContents CloseFileOpenFileFileInWroteToIsEOF RetrievedChar RetrievedLineRetrievedContents FileClosed FileOpened ClearPart ClearCanvasClearRectangleCSSUnit CSSPercentage CSSPixels CSSBindPointCSSFromDefault CSSFromCenter CSSPositionCSSMeasurements CSSTopOffset CSSLeftOffsetCanvasTransformResetTransform SetTransform TransformScaleRotateRestoreSaveTransformationMatrix TransformUnit AlignmentAlignEnd AlignStart AlignCenter AlignRight AlignLeftTextFill NoTextFill TextStroke NoTextStrokeTextFillRenderStyleTextStrokeRenderStyleFont CanvasTextCanvasGradientTypeLinearGradientRadialGradientPatternRepetitionNoRepeatRepeatYRepeatXRepeat CanvasImage ImageData CanvasElement RenderStyle CanvasPatternCanvasGradient CanvasColorCanvasColorStopPathFill NoPathFillPathRenderFillStyle PathStroke NoPathStrokePathRenderStrokeStyleScreenPathPart RectangleArcArcToQuadraticCurveTo BezierCurveToLineToMoveToCanvasOperationClear DoTransformDrawTextDrawPath CanvasOut MeasureTextCanvasOperationsTeardownCanvas SetupCanvasCanvasIn MeasuredTextSystemCanvasOutSystemMeasureTextSystemCanvasInSystemMeasuredTextRoutedMessageOutOutSystemCanvas OutUserCanvasRoutedMessageInInSystemCanvas InUserCanvasFontSize FontFamilyScreenLineThicknessScaleYScaleX ScaleUnit ScreenCircleColorStopOffset ScreenPixel ScreenColor ScreenAlpha ScreenBlue ScreenGreen ScreenRedScreenColorMetricZIndexCanvasIdScreenEndAngleScreenStartingAngleScreenEndPointScreenControlPointScreenStartingPointScreenDimensions ScreenPoint ScreenAngle ScreenRadius ScreenHeight ScreenWidthScreenYScreenX ScreenMetricOpcodeCanvasSystemReceiveBufferCanvasUserReceiveBuffer BoundingBox RotatePoint AroundPoint AroundCenterRotation Primitive MultiLine otherPointsLinepoint1point2Texttext fontFamilyfontSizePolygonamountOfPointsCircleradius translation dimensions fillColorShapeCompositeShapeshapes translationM BaseShape primitivestrokeLineThickness strokeColor rotationMBasicShapesOut DrawShapesAmountOfPoints LowerRight LowerLeft UpperRight UpperLeftStrokeLineThickness StrokeColor FillColorColorAlphaBlueGreenRedRadius DimensionsHeightWidth TranslationGraphicalNumericGeneralizeTreegeneralizeTreePosMiddle BottomOffset RightOffset TopOffset LeftOffset GeneralLineGeneralNodeContent GeneralNodeGeneralNodeText GeneralTreeGeneralTreeBoxtextFont textHeight charWidthmarginBetweenTreesmarginBetweenNodeContentmarginBetweenNodeRowsmarginBetweenNodeColumnsgeneralNodeDimensionflattenDimensionsgeneralNodeContentDimensionlayoutGeneralTreelayoutGeneralTreeChildren layoutLinelayoutGeneralTreeslayoutGeneralNodeContentListlayoutGeneralNodeContenttextSize treeIndex$fGeneralizeTreeGeneralTreeRoseTreeRoseNodeRBTreeRBNode NodeColorNodeGrey NodeBlackNodeRed DrawTreesOut DrawTreesToScreenPathParttoScreenPathPartsToCanvasOperationstoCanvasOperations ToCanvasOut toCanvasOut ToBoundingBox toBoundingBoxToCentertoCenteraddBoundingBoxfoldBoundingBoxesopOnBoundingBoxallPolygonPoints roundPoint roundColorfindRotationPoint MouseButton MouseMiddle MouseRight MouseLeft MouseEvent MouseLeave MouseEnterMouseUp MouseDown MouseMove DoubleClickClick MouseTypeMouseSVG MouseCanvasMouseInMouseWeighted UnweightedDirected Undirected ThicknessThickThinWhiteBlackOrangeYellowGreyPurpleGraphnodesedgesdirectedweightedEdgeNodeWeightLabel GraphsOut Instructions DrawGraph SetupGraphsGraphsInKeyVectorKeyboard ParameterAPINameIOStateNoState FileStatenewFileInEventsopened TimerStatestartedIntervalTimers startedTimersincomingIntervalTickBufferincomingTickBuffer StdInStatenewStdInInEvents CanvasStatecommonReceiveBuffercanvasUserReceiveBuffercanvasSystemReceiveBufferrouterThreadId KeyboardState MouseState receiveBufferclientConnection serverSocket SharedIOState measureTextOutStop OutGraphs OutDrawTreesOutBasicShapes OutCanvasOutStdIn OutStdOutOutTimerOutFileInInGraphsInCanvasInStdInInTimerInFileInMouse InKeyboardStartEventloopConfiguration progState eventloopFunc outRouter sharedIOStatemoduleConfigurationsEventloopModuleConfigurationmoduleIdentifieriostate initializereventRetriever preprocessor postprocessorteardown eventSenderOutEventRouterTeardown EventSender PostProcessor PreProcessorEventRetriever InitializerEventloopModuleIdentifier defaultCanvasModuleConfigurationdefaultCanvasModuleIOStatecanvasModuleIdentifiercanvasInitializercanvasEventRetrievercanvasEventSendercanvasTeardownsendRoutedMessageOutrouter"defaultKeyboardModuleConfigurationdefaultKeyboardModuleIOStatekeyboardModuleIdentifierkeyboardInitializerkeyboardEventRetrieverkeyboardTeardowndefaultMouseModuleConfigurationdefaultMouseModuleIOStatemouseModuleIdentifiermouseInitializermouseEventRetriever mouseTeardown#defaultDrawTreesModuleConfigurationdefaultDrawTreesModuleIOStatedrawTreesModuleIdentifierdrawTreesPostProcessormaxWidthshowGeneralTreeListshowGeneralTreeList'showGeneralTreenodeColorToFillColor rbExampleTreeroseExampleTree%defaultBasicShapesModuleConfigurationdefaultBasicShapesModuleIOStatebasicShapesModuleIdentifierbasicShapesPostProcessordefaultFileModuleConfigurationdefaultFileModuleIOStatefileModuleIdentifierfileEventRetrieverfileEventSender fileTeardowndefaultStdInModuleConfigurationdefaultStdInModuleIOStatestdInModuleIdentifierstdInEventRetrieverstdInEventSender defaultStdOutModuleConfigurationstdOutModuleIdentifierstdOutEventSenderdefaultTimerModuleConfigurationdefaultTimerModuleIOStatetimerModuleIdentifiertimerInitializertimerEventRetrievertimerEventSender timerTeardown routeOutEvent defaultGraphsModuleConfigurationdefaultGraphsModuleIOStategraphsModuleIdentifier nodeRadius xArrowSize yArrowSize weightHeightdimCanvasGraphsroundDimCanvasGraphscanvasGraphsWidthcanvasGraphsHeightinstructionsHeightinstructionsBeginAtcanvasInstrWidthcanvasInstrHeightdimCanvasInstrroundDimCanvasInstrcanvasIdGraphscanvasIdInstructionsonNodegraphsPreProcessorgraphsPostProcessorcolorToRGBAColorthicknessToFloatfindNode graphToShapes nodeToShapes edgeToShapes posOnVector vectorizedownPerpendicularToupPerpendicularTo vectorSize startMainloop allModulesEventloopConfigurationdefaultSharedIOStateConnect BottomConnect TopConnect LayoutLineLayoutNodeContent LayoutNodeLayoutNodeText LayoutTreeLBox marginLine lineThickness textThickness printTreeprintNodeContent printLinemarginizeLinePoints$fToScreenPathPartPrimitive$fToCanvasOperationsShape$fToCanvasOutBasicShapesOut$fToBoundingBoxShape$fToBoundingBoxPrimitive$fToBoundingBoxBoundingBox$fToCenterBoundingBox$fToCenterShape$fToCenterPrimitive$fRotateLeftAroundBoundingBox$fTranslatePrimitive$fTranslateShape$fTranslateBoundingBoxToOpcodetoOpcode$fToOpcodeCSSBindPoint$fToOpcodeCSSPosition$fToOpcodeClearPart$fToOpcodeCSSUnit$fToOpcodeCanvasTransform$fToOpcodeAlignment$fToOpcodeTextFill$fToOpcodeTextStroke$fToOpcodeFont$fToOpcodeCanvasText$fToOpcodeCanvasGradientType$fToOpcodePatternRepetition$fToOpcodeCanvasImage$fToOpcodeRenderStyle$fToOpcodePathFill$fToOpcodePathStroke$fToOpcodeScreenPathPart$fToOpcodeCanvasOperation$fToOpcodeCanvasOut$fToOpcodeSystemCanvasOutoperationObject$fToJSONClearPart$fToJSONCSSUnit$fToJSONCSSBindPoint$fToJSONCSSPosition$fToJSONCanvasTransform$fToJSONAlignment$fToJSONTextFill$fToJSONTextStroke $fToJSONFont$fToJSONCanvasText$fToJSONCanvasGradientType$fToJSONPatternRepetition$fToJSONCanvasImage$fToJSONRenderStyle$fToJSONPathFill$fToJSONPathStroke$fToJSONScreenPathPart$fToJSONCanvasOperation$fToJSONCanvasOut$fToJSONSystemCanvasOut$fToJSONRoutedMessageOut$fFromJSONAlignment$fFromJSONFont$fFromJSONCanvasText$fFromJSONCanvasIn$fFromJSONSystemCanvasIn$fFromJSONRoutedMessageIn ReceiveBufferMessagePortHostcreateBindListenServerSocketacceptFirstConnectionsetupWebsocketConnection spawnReaderreadIntoBufferhandleCloseRequestException hasMessage takeMessage writeMessagewriteBinaryMessagecloseWebsocketConnectionnetwork-2.6.1.0Network.Socket.TypesSocketwebsockets-0.9.4.0Network.WebSockets.Connection ConnectionBufferedReceiveBuffer hasMessages takeMessages ipAddress keyboardPort mousePort canvasPortmessageToKeyboardIn$fFromJSONKeyboardmessageToMouseIn$fFromJSONPoint$fFromJSONMouseButton$fFromJSONMouseEvent$fFromJSONMouseType$fFromJSONMouseIn$fGeneralizeTreeRoseTree$fGeneralizeTreeRBTreefileEventSender' doReadAction getFromFilefileIsReadablefileIsWriteable fileIsOpenedretrieveContentsretrieveOpenedFileremoveOpenedFile closeAllFilesstdInEventSender' doStdInGettimerEventSender' registerTimerunregisterTimerfindStartedTimertickwithIOStateModuleswithIOStateModulestartMainloopWithStarthandleMainloopUsingSource receiveEventshandleSingleInEvent doEventloop sendOutEventsprocessEventModuleprocessEventsModules processEventsfindModuleConfigurationreplaceModuleConfiguration